Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Oleksii Turkot
CrystFEL
Commits
0fec1e14
Commit
0fec1e14
authored
Feb 27, 2011
by
Thomas White
Committed by
Thomas White
Feb 22, 2012
Browse files
hdfsee: Tidy up lots of exit paths
parent
46397339
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/displaywindow.c
View file @
0fec1e14
...
...
@@ -177,6 +177,8 @@ static gboolean displaywindow_expose(GtkWidget *da, GdkEventExpose *event,
cairo_set_source_rgb
(
cr
,
0
.
5
,
0
.
5
,
0
.
5
);
cairo_fill
(
cr
);
if
(
dw
->
image
==
NULL
)
return
0
;
/* Set up basic coordinate system
* - origin in the centre, y upwards. */
cairo_identity_matrix
(
cr
);
...
...
@@ -666,13 +668,11 @@ static int load_geometry_file(DisplayWindow *dw, struct image *image,
if
(
dw
->
loaded_geom
!=
NULL
)
free_detector_geometry
(
dw
->
loaded_geom
);
dw
->
loaded_geom
=
geom
;
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/usegeom"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
TRUE
);
gtk_check_menu_item_set_active
(
GTK_CHECK_MENU_ITEM
(
w
),
TRUE
);
dw
->
use_geom
=
1
;
displaywindow_update
(
dw
);
return
0
;
}
...
...
@@ -777,7 +777,6 @@ static gint displaywindow_set_rings(GtkWidget *d, DisplayWindow *dw)
}
struct
savedialog
{
DisplayWindow
*
dw
;
GtkWidget
*
cb
;
...
...
@@ -852,7 +851,8 @@ static gint displaywindow_save(GtkWidget *widget, DisplayWindow *dw)
gtk_combo_box_append_text
(
GTK_COMBO_BOX
(
cb
),
"TIFF - Floating point (mono, unbinned, filtered, not boosted)"
);
gtk_combo_box_append_text
(
GTK_COMBO_BOX
(
cb
),
"TIFF - 16 bit signed integer (mono, unbinned, filtered, boosted)"
);
"TIFF - 16 bit signed integer "
"(mono, unbinned, filtered, boosted)"
);
gtk_combo_box_set_active
(
GTK_COMBO_BOX
(
cb
),
0
);
cd
=
malloc
(
sizeof
(
*
cd
));
...
...
@@ -1156,6 +1156,8 @@ struct newhdf {
static
gint
displaywindow_newhdf
(
GtkMenuItem
*
item
,
struct
newhdf
*
nh
)
{
if
(
nh
->
dw
->
not_ready_yet
)
return
0
;
hdfile_set_image
(
nh
->
dw
->
hdfile
,
nh
->
name
);
hdf5_read
(
nh
->
dw
->
hdfile
,
nh
->
dw
->
image
,
0
,
0
.
0
);
...
...
@@ -1233,7 +1235,7 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
nh
=
malloc
(
sizeof
(
struct
newhdf
));
if
(
nh
!=
NULL
)
{
strncpy
(
nh
->
name
,
names
[
i
],
1023
);
strncpy
(
nh
->
name
,
names
[
i
],
1023
);
nh
->
dw
=
dw
;
g_signal_connect
(
G_OBJECT
(
item
),
"activate"
,
G_CALLBACK
(
displaywindow_newhdf
),
nh
);
...
...
@@ -1241,7 +1243,7 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
if
(
(
selectme
!=
NULL
)
&&
(
strcmp
(
names
[
i
],
selectme
)
==
0
)
)
{
gtk_check_menu_item_set_active
(
gtk_check_menu_item_set_active
(
GTK_CHECK_MENU_ITEM
(
item
),
TRUE
);
}
else
{
gtk_check_menu_item_set_active
(
...
...
@@ -1299,66 +1301,22 @@ static GtkWidget *displaywindow_createhdfmenus(struct hdfile *hdfile,
}
static
void
displaywindow_update_menus
(
DisplayWindow
*
dw
,
const
char
*
selectme
)
static
int
displaywindow_update_menus
(
DisplayWindow
*
dw
,
const
char
*
selectme
)
{
GtkWidget
*
ms
;
GtkWidget
*
w
;
ms
=
displaywindow_createhdfmenus
(
dw
->
hdfile
,
dw
,
selectme
);
if
(
ms
==
NULL
)
{
/* Too bad. You'd better hope that /data/data exists... */
ERROR
(
"Couldn't get list of images in HDF file
\n
"
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/images"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
/* Add a dummy menu so that the user knows what's going on */
ms
=
gtk_menu_new
();
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/images"
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
w
),
ms
);
return
;
}
if
(
ms
==
NULL
)
return
1
;
/* Make new menu be the submenu for File->Images */
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/images"
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
w
),
ms
);
gtk_widget_show_all
(
ms
);
}
static
void
displaywindow_disable
(
DisplayWindow
*
dw
)
{
GtkWidget
*
w
;
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/file/images"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/file/rings"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/binning"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/boostint"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/tools/numbers"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/tools/peaks"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
return
0
;
}
...
...
@@ -1428,7 +1386,7 @@ static gint displaywindow_press(GtkWidget *widget, GdkEventButton *event,
DisplayWindow
*
displaywindow_open
(
const
char
*
filename
,
const
char
*
peaks
,
int
boost
,
int
binning
,
int
cmfilter
,
int
noisefilter
,
int
colscale
,
const
char
*
element
)
const
char
*
element
,
const
char
*
geometry
)
{
DisplayWindow
*
dw
;
char
*
title
;
...
...
@@ -1448,32 +1406,12 @@ DisplayWindow *displaywindow_open(const char *filename, const char *peaks,
dw
->
image
=
NULL
;
dw
->
use_geom
=
0
;
dw
->
show_rings
=
0
;
dw
->
window
=
gtk_window_new
(
GTK_WINDOW_TOPLEVEL
);
if
(
filename
==
NULL
)
{
title
=
strdup
(
"No file - hdfsee"
);
}
else
{
char
*
bn
=
safe_basename
(
filename
);
title
=
malloc
(
strlen
(
bn
)
+
14
);
sprintf
(
title
,
"%s - hdfsee"
,
bn
);
free
(
bn
);
}
gtk_window_set_title
(
GTK_WINDOW
(
dw
->
window
),
title
);
free
(
title
);
g_signal_connect
(
G_OBJECT
(
dw
->
window
),
"destroy"
,
G_CALLBACK
(
displaywindow_closed
),
dw
);
vbox
=
gtk_vbox_new
(
FALSE
,
0
);
gtk_container_add
(
GTK_CONTAINER
(
dw
->
window
),
vbox
);
displaywindow_addmenubar
(
dw
,
vbox
,
colscale
);
dw
->
drawingarea
=
gtk_drawing_area_new
();
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
dw
->
drawingarea
,
TRUE
,
TRUE
,
0
);
g_signal_connect
(
GTK_OBJECT
(
dw
->
drawingarea
),
"expose-event"
,
G_CALLBACK
(
displaywindow_expose
),
dw
);
dw
->
scale
=
colscale
;
dw
->
binning
=
binning
;
dw
->
boostint
=
boost
;
dw
->
cmfilter
=
cmfilter
;
dw
->
noisefilter
=
noisefilter
;
dw
->
not_ready_yet
=
1
;
/* Open the file, if any */
if
(
filename
!=
NULL
)
{
...
...
@@ -1481,7 +1419,8 @@ DisplayWindow *displaywindow_open(const char *filename, const char *peaks,
dw
->
hdfile
=
hdfile_open
(
filename
);
if
(
dw
->
hdfile
==
NULL
)
{
ERROR
(
"Couldn't open file '%s'
\n
"
,
filename
);
displaywindow_disable
(
dw
);
free
(
dw
);
return
NULL
;
}
else
{
int
fail
=
-
1
;
...
...
@@ -1496,39 +1435,57 @@ DisplayWindow *displaywindow_open(const char *filename, const char *peaks,
hdf5_read
(
dw
->
hdfile
,
dw
->
image
,
0
,
0
.
0
);
}
else
{
ERROR
(
"Couldn't select path
\n
"
);
displaywindow_disable
(
dw
);
free
(
dw
);
return
NULL
;
}
}
}
else
{
dw
->
hdfile
=
NULL
;
displaywindow_disable
(
dw
)
;
free
(
dw
)
;
return
NULL
;
}
gtk_window_set_resizable
(
GTK_WINDOW
(
dw
->
window
),
FALSE
);
gtk_widget_show_all
(
dw
->
window
);
/* No geometry loaded initially */
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/usegeom"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
dw
->
loaded_geom
=
NULL
;
dw
->
simple_geom
=
simple_geometry
(
dw
->
image
);
dw
->
image
->
det
=
dw
->
simple_geom
;
dw
->
scale
=
colscale
;
dw
->
binning
=
binning
;
dw
->
boostint
=
boost
;
dw
->
cmfilter
=
cmfilter
;
dw
->
noisefilter
=
noisefilter
;
displaywindow_update
(
dw
);
/* Peak list provided at startup? */
if
(
(
dw
->
hdfile
!=
NULL
)
&&
(
peaks
!=
NULL
)
)
{
if
(
peaks
!=
NULL
)
{
load_features_from_file
(
dw
->
image
,
peaks
);
displaywindow_update
(
dw
);
}
dw
->
window
=
gtk_window_new
(
GTK_WINDOW_TOPLEVEL
);
char
*
bn
=
safe_basename
(
filename
);
title
=
malloc
(
strlen
(
bn
)
+
14
);
sprintf
(
title
,
"%s - hdfsee"
,
bn
);
free
(
bn
);
gtk_window_set_title
(
GTK_WINDOW
(
dw
->
window
),
title
);
free
(
title
);
g_signal_connect
(
G_OBJECT
(
dw
->
window
),
"destroy"
,
G_CALLBACK
(
displaywindow_closed
),
dw
);
vbox
=
gtk_vbox_new
(
FALSE
,
0
);
gtk_container_add
(
GTK_CONTAINER
(
dw
->
window
),
vbox
);
displaywindow_addmenubar
(
dw
,
vbox
,
colscale
);
dw
->
drawingarea
=
gtk_drawing_area_new
();
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
dw
->
drawingarea
,
TRUE
,
TRUE
,
0
);
g_signal_connect
(
GTK_OBJECT
(
dw
->
drawingarea
),
"expose-event"
,
G_CALLBACK
(
displaywindow_expose
),
dw
);
gtk_window_set_resizable
(
GTK_WINDOW
(
dw
->
window
),
FALSE
);
gtk_widget_show_all
(
dw
->
window
);
w
=
gtk_ui_manager_get_widget
(
dw
->
ui
,
"/ui/displaywindow/view/usegeom"
);
gtk_widget_set_sensitive
(
GTK_WIDGET
(
w
),
FALSE
);
if
(
geometry
!=
NULL
)
{
load_geometry_file
(
dw
,
dw
->
image
,
geometry
);
}
displaywindow_update
(
dw
);
gtk_widget_add_events
(
GTK_WIDGET
(
dw
->
drawingarea
),
GDK_BUTTON_PRESS_MASK
|
GDK_BUTTON_RELEASE_MASK
...
...
@@ -1540,7 +1497,8 @@ DisplayWindow *displaywindow_open(const char *filename, const char *peaks,
g_signal_connect
(
GTK_OBJECT
(
dw
->
drawingarea
),
"button-release-event"
,
G_CALLBACK
(
displaywindow_release
),
dw
);
if
(
dw
->
hdfile
!=
NULL
)
displaywindow_update_menus
(
dw
,
element
);
displaywindow_update_menus
(
dw
,
element
);
dw
->
not_ready_yet
=
0
;
return
dw
;
}
src/displaywindow.h
View file @
0fec1e14
...
...
@@ -51,6 +51,8 @@ typedef struct {
GdkPixbuf
**
pixbufs
;
gulong
motion_callback
;
int
not_ready_yet
;
struct
detector
*
loaded_geom
;
struct
detector
*
simple_geom
;
...
...
@@ -87,7 +89,8 @@ extern DisplayWindow *displaywindow_open(const char *filename,
const
char
*
peaks
,
int
boost
,
int
binning
,
int
cmfilter
,
int
noisefilter
,
int
colscale
,
const
char
*
element
);
const
char
*
element
,
const
char
*
geometry
);
#endif
/* DISPLAYWINDOW_H */
src/hdfsee.c
View file @
0fec1e14
...
...
@@ -95,6 +95,7 @@ int main(int argc, char *argv[])
int
colscale
=
SCALE_COLOUR
;
char
*
cscale
=
NULL
;
char
*
element
=
NULL
;
char
*
geometry
=
NULL
;
/* Long options */
const
struct
option
longopts
[]
=
{
...
...
@@ -106,6 +107,7 @@ int main(int argc, char *argv[])
{
"filter-noise"
,
0
,
&
config_noisefilter
,
1
},
{
"colscale"
,
1
,
NULL
,
'c'
},
{
"image"
,
1
,
NULL
,
'e'
},
{
"geometry"
,
1
,
NULL
,
'g'
},
{
0
,
0
,
NULL
,
0
}
};
...
...
@@ -147,6 +149,10 @@ int main(int argc, char *argv[])
element
=
strdup
(
optarg
);
break
;
case
'g'
:
geometry
=
strdup
(
optarg
);
break
;
case
0
:
break
;
...
...
@@ -183,13 +189,16 @@ int main(int argc, char *argv[])
boost
,
binning
,
config_cmfilter
,
config_noisefilter
,
colscale
,
element
);
colscale
,
element
,
geometry
);
if
(
main_window_list
[
i
]
==
NULL
)
{
ERROR
(
"Couldn't open display window
\n
"
);
}
else
{
main_n_windows
++
;
}
}
if
(
main_n_windows
==
0
)
return
0
;
gtk_main
();
return
0
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment