[giv] Fixed sync between menus and functionality. Added default options.
- From: Dov Grobgeld <dov src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [giv] Fixed sync between menus and functionality. Added default options.
- Date: Sun, 22 Apr 2012 21:26:17 +0000 (UTC)
commit 75bb5211ea423c3bb6ce9cfeb7c26f9506d716cc
Author: Dov Grobgeld <dov grobgeld gmail com>
Date: Mon Apr 23 00:25:57 2012 +0300
Fixed sync between menus and functionality. Added default options.
ChangeLog | 5 +
SConstruct | 6 +-
configure.in | 2 +-
notes.org | 14 ++-
src/giv-settings-editor.gob | 82 +++++++++
src/giv-settings.gob | 23 +++
src/giv-widget.gob | 94 +++++++----
src/giv-win.gob | 262 ++++++++++++-----------------
src/glib-jsonrpc/json-glib/json-scanner.h | 4 +-
src/gtkimageviewer/gtk-image-viewer.gob | 86 ++--------
src/menu-popup.xml | 1 -
src/menu-top.xml | 1 -
12 files changed, 307 insertions(+), 273 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index ce38d19..c2701d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-22 Dov Grobgeld <dov grobgeld gmail com>
+
+ * giv-win.gob : Changed toggle of balloon to be a function of the internal
+ giv-widget state.
+
2012-03-04 Dov Grobgeld <dov grobgeld gmail com>
* Added private copy of glib-jsonrpc.
diff --git a/SConstruct b/SConstruct
index c33ff11..317013d 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,10 +1,10 @@
import re, os, glob
if ARGUMENTS.get('debug', 0):
- cppflags = ['-g', '-Wall','-fPIC']
+ cppflags = ['-g', '-Wall']
variant = 'Debug'
else:
- cppflags = ['-O2','-fPIC']
+ cppflags = ['-O2']
variant = 'Release'
env = Environment(LIBPATH=[],
@@ -130,7 +130,7 @@ env.Append(CPPPATH=[],
'json-glib_local']
)
-env.ParseConfig("${PKGCONFIG} --cflags --libs gtk+-2.0 glib-2.0 gio-2.0 gthread-2.0")
+env.ParseConfig("${PKGCONFIG} --cflags --libs gtk+-2.0 glib-2.0 gio-2.0 gmodule-2.0 gthread-2.0")
SConscript(['src/SConscript',
'doc/SConscript',
diff --git a/configure.in b/configure.in
index a5fc32d..1f4bacb 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@ AM_CONFIG_HEADER(config.h)
PACKAGE=givwidget
GIVWIDGET_API_VERSION=2.0
-AM_INIT_AUTOMAKE(giv, 0.9.22)
+AM_INIT_AUTOMAKE(giv, 0.9.23beta)
dnl Use libtool to get shared libraries
LT_PREREQ
diff --git a/notes.org b/notes.org
index f65cf16..c66aff1 100644
--- a/notes.org
+++ b/notes.org
@@ -20,4 +20,16 @@
* <2012-01-06 Fri>
** Done/Todo
- [ ] Create a command line tool for windows with a parser like the one included in giv.
-
+* <2012-04-22 Sun>
+** Done/Todo
+ - Changed the menu checkbuttons to reflect the internal giv-widget states:
+ - [X] balloon
+ - [X] horizontal-flip
+ - [X] vertical-flip
+ - [X] show marks
+ - [X] cross hair - erased as it doesn't work.
+ - Save the following settings:
+ - [X] Sub pixel coordinate.
+ - [ ] Auto resize.
+
+
diff --git a/src/giv-settings-editor.gob b/src/giv-settings-editor.gob
index f6de51c..6db9fee 100644
--- a/src/giv-settings-editor.gob
+++ b/src/giv-settings-editor.gob
@@ -29,6 +29,9 @@ class Giv:Settings:Editor from Gtk:Dialog
{
private GObject *giv_settings = NULL destroy { if (giv_settings) g_object_unref(giv_settings); };
private GtkWidget *w_button_same_file_type = NULL;
+ private GtkWidget *w_button_default_show_subpixel = NULL;
+ private GtkWidget *w_button_default_auto_resize = NULL;
+ private GtkWidget *w_button_default_auto_contrast = NULL;
public GtkWidget*
new (GivSettings *giv_settings)
@@ -72,6 +75,79 @@ class Giv:Settings:Editor from Gtk:Dialog
GtkAttachOptions(0),
0,0);
+ // Default sub-pixel
+ row++;
+ gtk_table_attach(GTK_TABLE(w_table),
+ label_left_new("Default subpixel"),
+ 1, 2,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+ selfp->w_button_default_show_subpixel = check_button_new_from_bool(giv_settings->default_show_subpixel);
+ g_object_set(selfp->w_button_default_show_subpixel,
+ "tooltip-markup",
+ "Whether to turn on sub pixel display by default",
+ NULL);
+
+ gtk_table_attach(GTK_TABLE(w_table),
+ selfp->w_button_default_show_subpixel,
+ 2, 3,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+ // Default auto_resize
+ row++;
+ gtk_table_attach(GTK_TABLE(w_table),
+ label_left_new("Default auto-resize"),
+ 1, 2,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+ selfp->w_button_default_auto_resize = check_button_new_from_bool(giv_settings->default_auto_resize);
+ g_object_set(selfp->w_button_default_auto_resize,
+ "tooltip-markup",
+ "Whether to do auto resize by default",
+ NULL);
+
+ gtk_table_attach(GTK_TABLE(w_table),
+ selfp->w_button_default_auto_resize,
+ 2, 3,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+ // Default auto_contrast
+ row++;
+ gtk_table_attach(GTK_TABLE(w_table),
+ label_left_new("Default auto-contrast"),
+ 1, 2,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+ selfp->w_button_default_auto_contrast = check_button_new_from_bool(giv_settings->default_auto_contrast);
+ g_object_set(selfp->w_button_default_auto_contrast,
+ "tooltip-markup",
+ "Whether to do auto resize by default",
+ NULL);
+
+ gtk_table_attach(GTK_TABLE(w_table),
+ selfp->w_button_default_auto_contrast,
+ 2, 3,
+ row, row+1,
+ GtkAttachOptions(GTK_FILL|GTK_EXPAND),
+ GtkAttachOptions(0),
+ 0,0);
+
+
// Buttons
gtk_dialog_add_button(GTK_DIALOG(self),
GTK_STOCK_APPLY,
@@ -100,6 +176,12 @@ class Giv:Settings:Editor from Gtk:Dialog
{
GIV_SETTINGS(selfp->giv_settings)->do_same_filetype_on_next
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->w_button_same_file_type));
+ GIV_SETTINGS(selfp->giv_settings)->default_show_subpixel
+ = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->w_button_default_show_subpixel));
+ GIV_SETTINGS(selfp->giv_settings)->default_auto_resize
+ = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->w_button_default_auto_resize));
+ GIV_SETTINGS(selfp->giv_settings)->default_auto_contrast
+ = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->w_button_default_auto_contrast));
}
}
diff --git a/src/giv-settings.gob b/src/giv-settings.gob
index bc3519d..85c1303 100644
--- a/src/giv-settings.gob
+++ b/src/giv-settings.gob
@@ -17,6 +17,9 @@ requires 2.0.0
class Giv:Settings from G:Object {
public gboolean do_same_filetype_on_next = FALSE;
+ public gboolean default_show_subpixel = FALSE;
+ public gboolean default_auto_resize = FALSE;
+ public gboolean default_auto_contrast = FALSE;
private char *keyfile_path = NULL destroy { g_free(keyfile_path); };
public GObject *
@@ -38,6 +41,18 @@ class Giv:Settings from G:Object {
"settings",
"do_same_filetype_on_next",
NULL);
+ self->default_show_subpixel = g_key_file_get_boolean(keyfile,
+ "settings",
+ "default_show_subpixel",
+ NULL);
+ self->default_auto_resize = g_key_file_get_boolean(keyfile,
+ "settings",
+ "default_auto_resize",
+ NULL);
+ self->default_auto_contrast = g_key_file_get_boolean(keyfile,
+ "settings",
+ "default_auto_contrast",
+ NULL);
}
else
g_error_free(error);
@@ -56,6 +71,14 @@ class Giv:Settings from G:Object {
"settings",
"do_same_filetype_on_next",
self->do_same_filetype_on_next);
+ g_key_file_set_boolean(keyfile,
+ "settings",
+ "default_show_subpixel",
+ self->default_show_subpixel);
+ g_key_file_set_boolean(keyfile,
+ "settings",
+ "default_auto_contrast",
+ self->default_auto_contrast);
gchar *data = g_key_file_to_data(keyfile,NULL, NULL);
gchar *dirname = g_path_get_dirname(selfp->keyfile_path);
diff --git a/src/giv-widget.gob b/src/giv-widget.gob
index 6466d51..7534a2c 100644
--- a/src/giv-widget.gob
+++ b/src/giv-widget.gob
@@ -88,8 +88,8 @@ class Giv:Widget from Gtk:Image:Viewer
};
private bool is_dragging = FALSE;
- private bool do_view_marks = TRUE;
- private bool do_view_cross_hair = FALSE;
+ private bool do_show_marks = TRUE;
+ private bool do_show_cross_hair = FALSE;
private bool do_show_balloon = FALSE;
private bool do_no_transparency = FALSE;
private bool do_show_grid = FALSE;
@@ -111,7 +111,7 @@ class Giv:Widget from Gtk:Image:Viewer
{
GivWidget *self = GET_NEW;
if (pixbuf)
- gdk_pixbuf_ref(pixbuf);
+ g_object_ref(pixbuf);
selfp->img_org = pixbuf;
selfp->giv_parser = giv_parser_new();
giv_parser_set_reference_callback(selfp->giv_parser,
@@ -259,15 +259,13 @@ class Giv:Widget from Gtk:Image:Viewer
printf("min_x min_y max_x max_y = %f %f %f %f\n",
min_x, min_y, max_x, max_y);
#endif
- double scroll_x_dist, scroll_y_dist, scroll_x_center, scroll_y_center;
- double scroll_min_x, scroll_min_y, scroll_max_x, scroll_max_y;
double margin = 0;
const GdkPixbuf *pb = gtk_image_viewer_get_image(GTK_IMAGE_VIEWER(self));
if (pb) {
int img_w = gdk_pixbuf_get_width(pb);
int img_h = gdk_pixbuf_get_height(pb);
- // gdk_pixbuf_unref(pb);
+ // g_object_unref(pb);
min_x = min_y = 0;
max_x = img_w;
@@ -276,16 +274,6 @@ class Giv:Widget from Gtk:Image:Viewer
else {
margin= 10;
- scroll_x_dist = max_x - min_x;
- scroll_y_dist = max_y - min_y;
- scroll_x_center = 0.5*(max_x + min_x);
- scroll_y_center = 0.5*(max_y + min_y);
-
- scroll_min_x = scroll_x_center - scroll_x_dist * 0.5;
- scroll_max_x = scroll_x_center + scroll_x_dist * 0.5;
- scroll_min_y = scroll_y_center - scroll_y_dist * 0.5;
- scroll_max_y = scroll_y_center + scroll_y_dist * 0.5;
-
// The following is a hack around the problem of too thin
// data in x or y... It should be solved in the gtk_image_viewer.
if (max_x - min_x < max_y-min_y) {
@@ -328,15 +316,15 @@ class Giv:Widget from Gtk:Image:Viewer
GdkPixbuf *img)
{
if (selfp->img_org)
- gdk_pixbuf_unref(selfp->img_org);
+ g_object_unref(selfp->img_org);
if (selfp->img_display) {
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
selfp->img_display = NULL;
}
selfp->img_org = img;
if (selfp->img_org) {
- gdk_pixbuf_ref(selfp->img_org);
+ g_object_ref(selfp->img_org);
apply_color_map(self);
}
@@ -402,7 +390,7 @@ class Giv:Widget from Gtk:Image:Viewer
gtk_image_viewer_redraw(GTK_IMAGE_VIEWER(self), true);
return 1;
case 'm':
- giv_widget_set_show_marks(self, !selfp->do_view_marks);
+ giv_widget_set_show_marks(self, !selfp->do_show_marks);
gtk_image_viewer_redraw(GTK_IMAGE_VIEWER(self), true);
return 1;
case 'g':
@@ -410,7 +398,7 @@ class Giv:Widget from Gtk:Image:Viewer
gtk_image_viewer_redraw(GTK_IMAGE_VIEWER(self), true);
return 1;
case 'x':
- giv_widget_set_show_cross_hair(self, !selfp->do_view_cross_hair);
+ giv_widget_set_show_cross_hair(self, !selfp->do_show_cross_hair);
gtk_image_viewer_redraw(GTK_IMAGE_VIEWER(self), true);
return 1;
case 'f':
@@ -501,26 +489,61 @@ class Giv:Widget from Gtk:Image:Viewer
do_show_balloon);
}
+ public bool get_show_balloon(self)
+ {
+ return selfp->do_show_balloon;
+ }
+
+ public void toggle_show_balloon(self)
+ {
+ giv_widget_set_show_balloon(self,!selfp->do_show_balloon);
+ }
+
public void set_show_marks(self,
gboolean do_show_marks)
{
- gboolean need_signal = selfp->do_view_marks != do_show_marks;
- selfp->do_view_marks = do_show_marks;
- if (need_signal)
- emit_bool_signal(self,
- VIEW_MARKS_CHANGED_SIGNAL,
- do_show_marks);
+ gboolean need_signal = selfp->do_show_marks != do_show_marks;
+ selfp->do_show_marks = do_show_marks;
+ if (need_signal) {
+ giv_widget_show_marks_changed(self,do_show_marks);
+ gtk_image_viewer_redraw(GTK_IMAGE_VIEWER(self),TRUE);
+ }
+ }
+
+ public bool get_show_marks(self)
+ {
+ return selfp->do_show_marks;
+ }
+
+ public void toggle_show_marks(self)
+ {
+ giv_widget_set_show_marks(self,!selfp->do_show_marks);
}
public void set_show_cross_hair(self,
gboolean do_show_cross_hair)
{
- gboolean need_signal = selfp->do_view_cross_hair != do_show_cross_hair;
- selfp->do_view_cross_hair = do_show_cross_hair;
+ gboolean need_signal = selfp->do_show_cross_hair != do_show_cross_hair;
+ selfp->do_show_cross_hair = do_show_cross_hair;
if (need_signal)
+ giv_widget_cross_hair_changed(self,
+ do_show_cross_hair);
+#if 0
emit_bool_signal(self,
CROSS_HAIR_CHANGED_SIGNAL,
do_show_cross_hair);
+#endif
+
+ }
+
+ public bool get_show_cross_hair(self)
+ {
+ return selfp->do_show_cross_hair;
+ }
+
+ public void toggle_show_cross_hair(self)
+ {
+ giv_widget_set_show_cross_hair(self,!selfp->do_show_cross_hair);
}
signal last NONE (INT)
@@ -532,11 +555,12 @@ class Giv:Widget from Gtk:Image:Viewer
gboolean show_cross_hair);
signal last NONE (INT)
- void view_marks_changed(self,
+ void show_marks_changed(self,
gboolean show_marks);
signal last NONE (POINTER)
void file_reference(self, const gchar *filename);
+
}
%{
@@ -572,14 +596,14 @@ cb_image_annotate(GivWidget *self,
shift_x, shift_y,
width, height);
renderer.set_do_no_transparency(selfp->do_no_transparency);
- if (!selfp->is_dragging && selfp->do_view_marks)
+ if (!selfp->is_dragging && selfp->do_show_marks)
renderer.paint();
gint li_width, li_height;
gdk_window_get_size(GTK_WIDGET(self)->window,
&li_width, &li_height
);
- if (selfp->do_view_cross_hair && selfp->img_org) {
+ if (selfp->do_show_cross_hair && selfp->img_org) {
int w = gdk_pixbuf_get_width(selfp->img_org);
int h = gdk_pixbuf_get_height(selfp->img_org);
@@ -647,7 +671,7 @@ cb_image_annotate(GivWidget *self,
gint li_shift_x, li_shift_y;
gdouble li_scale_x, li_scale_y;
if (selfp->w_label_image)
- gdk_pixbuf_unref(selfp->w_label_image);
+ g_object_unref(selfp->w_label_image);
selfp->w_label_image = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
TRUE,
@@ -718,13 +742,13 @@ apply_color_map(GivWidget *self)
if (!selfp->img_org)
return;
if (selfp->img_display)
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
if (selfp->colormap == GIV_PSEUDO_COLOR_OFF
// || !selfp->img_is_mono
) {
selfp->img_display = selfp->img_org;
- gdk_pixbuf_ref(selfp->img_display);
+ g_object_ref(selfp->img_display);
}
else {
int width = gdk_pixbuf_get_width(selfp->img_org);
diff --git a/src/giv-win.gob b/src/giv-win.gob
index bc517ca..5441b10 100644
--- a/src/giv-win.gob
+++ b/src/giv-win.gob
@@ -103,7 +103,6 @@ static void cb_view_sub_pixel (GtkAction *action, gpointer data);
static void cb_view_hflip (GtkAction *action, gpointer data);
static void cb_view_vflip (GtkAction *action, gpointer data);
static void cb_view_colormap (GtkAction *action, gpointer data);
-static void cb_view_cross_hair (GtkAction *action, gpointer data);
static void cb_view_pixel_grid (GtkAction *action, gpointer data);
static void cb_view_auto_resize (GtkAction *action, gpointer data);
static void cb_view_auto_contrast (GtkAction *action, gpointer data);
@@ -130,7 +129,6 @@ static void cb_menu_print (GtkAction *action, gpointer data);
static void cb_menu_mark_browser (GtkAction *action, gpointer data);
static void cb_menu_contrast_view (GtkAction *action, gpointer data);
static void cb_menu_info_dialog (GtkAction *action, gpointer data);
-static gboolean giv_check_img_for_mono(GdkPixbuf *im);
static gboolean giv_check_img_for_mono(GivImage *im);
static void cb_change_pseudo_color(GtkRadioAction* action,
GtkRadioAction*,
@@ -138,10 +136,15 @@ static void cb_change_pseudo_color(GtkRadioAction* action,
static void cb_image_reference(GtkWidget *widget,
const char *filename,
gpointer user_data);
-static void cb_set_orientation(giv_parser_orientation_t hflip,
- giv_parser_orientation_t vflip,
- gpointer self);
static void menu_add_widget (GtkUIManager *ui, GtkWidget *widget, GtkContainer *container);
+static void
+cb_balloon_changed(GtkWidget *widget,
+ bool show_balloon,
+ gpointer data);
+static void
+cb_marks_changed(GtkWidget *widget,
+ bool show_balloon,
+ gpointer data);
static void
cb_file_list_drag_data_received (GtkWidget *widget,
@@ -374,11 +377,6 @@ static GtkToggleActionEntry toggle_entries[] =
"Colormap Bar", NULL,
"Colormap Bar",
G_CALLBACK (cb_view_colormap), FALSE },
- { "ViewCrossHair",
- NULL,
- "View Cross Hair", NULL,
- "View Cross hair",
- G_CALLBACK (cb_view_cross_hair), FALSE },
{ "ViewPixelGrid",
NULL,
"View Pixel Grid", NULL,
@@ -470,13 +468,13 @@ class Giv:Win from Gtk:Window
// private GdkPixbuf *img_org = NULL
// destroy {
// if (img_org) {
-// gdk_pixbuf_unref(img_org);
+// g_object_unref(img_org);
// };
// };
private GdkPixbuf *img_display = NULL
destroy {
if (img_display) {
- gdk_pixbuf_unref(img_display);
+ g_object_unref(img_display);
};
};
@@ -485,18 +483,14 @@ class Giv:Win from Gtk:Window
private GdkPixbuf *w_label_image = NULL
destroy {
if (w_label_image) {
- gdk_pixbuf_unref(w_label_image);
+ g_object_unref(w_label_image);
};
};
private gint cb_annotate_id;
private bool do_view_marks = true;
private bool do_view_colormap = false;
private bool img_is_mono = false;
- private bool do_show_balloon = false;
private bool do_show_sub_pixel = false;
- private bool do_flip_horizontal = false;
- private bool do_flip_vertical = false;
- private bool do_view_cross_hair = false;
private bool do_square_aspect_ratio = true;
private bool do_auto_fit_marks = TRUE;
private bool do_auto_reload = FALSE;
@@ -724,7 +718,7 @@ class Giv:Win from Gtk:Window
gtk_window_set_icon (GTK_WINDOW(self),
pixbuf_icon);
- gdk_pixbuf_unref(pixbuf_icon);
+ g_object_unref(pixbuf_icon);
num_top_levels++;
g_signal_connect (G_OBJECT(self), "destroy",
@@ -825,6 +819,14 @@ class Giv:Win from Gtk:Window
"image-annotate",
G_CALLBACK(cb_image_annotate),
self);
+ g_signal_connect(selfp->w_imgv,
+ "balloon-changed",
+ G_CALLBACK(cb_balloon_changed),
+ self);
+ g_signal_connect(selfp->w_imgv,
+ "show-marks-changed",
+ G_CALLBACK(cb_marks_changed),
+ self);
// Scrolling is like moving
g_signal_connect(selfp->w_imgv, "scroll-event",
@@ -924,6 +926,18 @@ class Giv:Win from Gtk:Window
gdk_flush();
+ // Apply settings
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->menu_manager,
+ "/menubar/ViewMenu/Sub-pixel")),
+ selfp->giv_settings->default_show_subpixel);
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->menu_manager,
+ "/menubar/ViewMenu/AutoResize")),
+ selfp->giv_settings->default_auto_resize);
+
// Handle the command line
if (argc == argp+1) {
char *filename = argv[argp++];
@@ -1093,7 +1107,7 @@ class Giv:Win from Gtk:Window
if (selfp->img_org)
giv_image_unref(selfp->img_org);
if (selfp->img_display) {
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
selfp->img_display = NULL;
}
@@ -1250,7 +1264,7 @@ class Giv:Win from Gtk:Window
selfp->img_org = NULL;
}
if (selfp->img_display) {
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
selfp->img_display = NULL;
}
@@ -1394,7 +1408,7 @@ class Giv:Win from Gtk:Window
if (selfp->img_org)
giv_image_unref(selfp->img_org);
if (selfp->img_display)
- gdk_pixbuf_ref(selfp->img_display);
+ g_object_ref(selfp->img_display);
selfp->img_org = image;
apply_color_map(self);
gtk_image_viewer_set_image(GTK_IMAGE_VIEWER(selfp->w_imgv),
@@ -1603,6 +1617,48 @@ menu_add_widget (GtkUIManager *ui, GtkWidget *widget, GtkContainer *container)
gtk_widget_show (widget);
}
+static void
+cb_balloon_changed(GtkWidget *widget,
+ bool show_balloon,
+ gpointer data)
+{
+ GivWin *self = GIV_WIN(data);
+
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->popup_manager,
+ "/popup/ViewMenu/Balloons")),
+ show_balloon);
+
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->menu_manager,
+ "/menubar/ViewMenu/Balloons")),
+ show_balloon);
+
+}
+
+static void
+cb_marks_changed(GtkWidget *widget,
+ bool show_marks,
+ gpointer data)
+{
+ GivWin *self = GIV_WIN(data);
+
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->popup_manager,
+ "/popup/ViewMenu/Marks")),
+ show_marks);
+
+ gtk_check_menu_item_set_active(
+ GTK_CHECK_MENU_ITEM(
+ gtk_ui_manager_get_widget(selfp->menu_manager,
+ "/menubar/ViewMenu/Marks")),
+ show_marks);
+}
+
+
static gint
cb_button_press_event (GtkWidget * widget,
GdkEventButton * event,
@@ -1698,6 +1754,8 @@ cb_key_press_event (GtkWidget * widget,
gpointer user_data)
{
GivWin *self = (GivWin *)user_data;
+ gboolean handled = FALSE;
+
gint k = event->keyval;
if (k == 'a') {
selfp->do_no_transparency = !selfp->do_no_transparency;
@@ -1833,33 +1891,6 @@ cb_key_press_event (GtkWidget * widget,
}
}
}
- if (k == 'm') {
- // Toggle the marks by pressing the toggle button in the menu.
- // Is there a better way?
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/Marks")),
- !selfp->do_view_marks);
- }
- if (k == 'c') {
- // Toggle the marks by pressing the toggle button in the menu.
- // Is there a better way?
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/CrossHair")),
- !selfp->do_view_cross_hair);
- }
- if (k == 'b') {
- // Toggle the marks by pressing the toggle button in the menu.
- // Is there a better way?
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/Balloons")),
- !selfp->do_show_balloon);
- }
if (k == 'i') {
#if 0
// TBD: create a popup window
@@ -1870,7 +1901,7 @@ cb_key_press_event (GtkWidget * widget,
#endif
}
- return 0;
+ return handled;
}
static gint
@@ -2038,109 +2069,52 @@ static void cb_view_menu_bar (GtkAction *action, gpointer data)
static void cb_view_marks (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
- GSList *proxies = NULL;
- GSList *p;
-
- if (action)
- proxies = gtk_action_get_proxies(action);
- selfp->do_view_marks = !selfp->do_view_marks;
-
- // Block to prevent an infinite loop of activating and deactivating.
- p = proxies;
- while(p) {
- gtk_action_block_activate_from(action, GTK_WIDGET(p->data));
- p = p->next;
- }
-
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/Marks")),
- selfp->do_view_marks);
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->popup_manager,
- "/popup/ViewMenu/Marks")),
- selfp->do_view_marks);
-
- p = proxies;
- while(p) {
- gtk_action_unblock_activate_from(action, GTK_WIDGET(p->data));
- p = p->next;
- }
-
- giv_win_redraw(self);
+ gboolean do_view_marks = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
+ giv_widget_set_show_marks(GIV_WIDGET(selfp->w_imgv),do_view_marks);
}
static void cb_view_balloons (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
- GSList *proxies = NULL;
- GSList *p;
-
- if (action)
- proxies = gtk_action_get_proxies(action);
- selfp->do_show_balloon = !selfp->do_show_balloon;
-
- // Block to prevent an infinite loop of activating and deactivating.
- p = proxies;
- while(p) {
- gtk_action_block_activate_from(action, GTK_WIDGET(p->data));
- p = p->next;
- }
-
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/Balloons")),
- selfp->do_show_balloon);
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->popup_manager,
- "/popup/ViewMenu/Balloons")),
- selfp->do_show_balloon);
-
- p = proxies;
- while(p) {
- gtk_action_unblock_activate_from(action, GTK_WIDGET(p->data));
- p = p->next;
- }
+ giv_widget_set_show_balloon(GIV_WIDGET(selfp->w_imgv),
+ gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)));
- // Force redraw to calculate the label image
- giv_win_popdown_balloon(self);
- if (selfp->do_show_balloon) {
- // Force redraw to calculate the label image
- giv_win_redraw(self);
- giv_widget_show_balloon(GIV_WIDGET(selfp->w_imgv),
- (int)selfp->last_cx, (int)selfp->last_cy);
- }
}
static void cb_view_sub_pixel (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
- selfp->do_show_sub_pixel = !selfp->do_show_sub_pixel;
+ selfp->do_show_sub_pixel = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
}
static void cb_view_hflip (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
+ gboolean do_vertical_flip, do_horizontal_flip;
+ gtk_image_viewer_get_flip(GTK_IMAGE_VIEWER(selfp->w_imgv),
+ &do_horizontal_flip,
+ &do_vertical_flip);
+ do_horizontal_flip = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
- selfp->do_flip_horizontal = !selfp->do_flip_horizontal;
gtk_image_viewer_set_flip(GTK_IMAGE_VIEWER(selfp->w_imgv),
- selfp->do_flip_horizontal,
- selfp->do_flip_vertical);
+ do_horizontal_flip,
+ do_vertical_flip);
}
static void cb_view_vflip (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
- selfp->do_flip_vertical = !selfp->do_flip_vertical;
+ gboolean do_vertical_flip, do_horizontal_flip;
+ gtk_image_viewer_get_flip(GTK_IMAGE_VIEWER(selfp->w_imgv),
+ &do_horizontal_flip,
+ &do_vertical_flip);
+ do_vertical_flip = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
+
gtk_image_viewer_set_flip(GTK_IMAGE_VIEWER(selfp->w_imgv),
- selfp->do_flip_horizontal,
- selfp->do_flip_vertical);
+ do_horizontal_flip,
+ do_vertical_flip);
}
static void cb_view_colormap (GtkAction *action, gpointer data)
@@ -2158,25 +2132,11 @@ static void cb_view_colormap (GtkAction *action, gpointer data)
gtk_widget_hide(selfp->w_color_map_bar);
}
-static void cb_view_cross_hair (GtkAction *action, gpointer data)
-{
- GivWin *self = GIV_WIN(data);
-
- selfp->do_view_cross_hair = !selfp->do_view_cross_hair;
- gtk_check_menu_item_set_active(
- GTK_CHECK_MENU_ITEM(
- gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/CrossHair")),
- selfp->do_view_cross_hair);
-
- giv_win_redraw(self);
-}
-
static void cb_view_pixel_grid (GtkAction *action, gpointer data)
{
GivWin *self = GIV_WIN(data);
GtkWidget *menu_widget = gtk_ui_manager_get_widget(selfp->menu_manager,
- "/menubar/ViewMenu/CrossHair");
+ "/menubar/ViewMenu/ViewPixelGrid");
gboolean old_val = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_widget));
giv_widget_set_show_grid(GIV_WIDGET(selfp->w_imgv), !old_val);
@@ -2554,7 +2514,7 @@ cb_menu_clear (GtkAction *action, gpointer data)
giv_widget_clear_giv(GIV_WIDGET(selfp->w_imgv));
giv_image_unref(selfp->img_org);
selfp->img_org = NULL;
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
selfp->img_display = NULL;
gtk_image_viewer_set_image(GTK_IMAGE_VIEWER(selfp->w_imgv), NULL);
@@ -2856,8 +2816,8 @@ void draw_to_cairo(cairo_t *cr,
cairo_set_source_surface(cr, img_srf, 0, 0);
cairo_paint(cr);
cairo_surface_destroy(img_srf);
- gdk_pixbuf_unref(cimg);
- gdk_pixbuf_unref(img_scaled);
+ g_object_unref(cimg);
+ g_object_unref(img_scaled);
#else
if (selfp->img_display) {
// Draw img_display
@@ -2881,7 +2841,7 @@ void draw_to_cairo(cairo_t *cr,
cairo_paint(cr);
cairo_restore(cr);
cairo_surface_destroy(img_srf);
- gdk_pixbuf_unref(cimg);
+ g_object_unref(cimg);
}
if (selfp->do_view_marks) {
@@ -3099,10 +3059,6 @@ cb_flip_changed(GtkImageViewer *imgv,
gpointer data)
{
GivWin *self = GIV_WIN(data);
-#if 0
- selfp->do_flip_vertical = do_flip_vertical;
- selfp->do_flip_horizontal = do_flip_horizontal;
-#endif
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(
@@ -3297,14 +3253,14 @@ apply_color_map(GivWin *self)
min, max);
if (selfp->img_display)
- gdk_pixbuf_unref(selfp->img_display);
+ g_object_unref(selfp->img_display);
const guint8 *tmap = NULL;
if (selfp->colormap == PSEUDO_COLOR_OFF
// || !selfp->img_is_mono
) {
selfp->img_display = org_pixbuf;
- gdk_pixbuf_ref(selfp->img_display);
+ g_object_ref(selfp->img_display);
}
else {
int width = gdk_pixbuf_get_width(org_pixbuf);
@@ -3406,7 +3362,7 @@ apply_color_map(GivWin *self)
gtk_image_viewer_set_image(GTK_IMAGE_VIEWER(selfp->w_imgv),
selfp->img_display);
#endif
- gdk_pixbuf_unref(org_pixbuf);
+ g_object_unref(org_pixbuf);
// Notify the colorbar
giv_color_map_set_rgb_colormap(GIV_COLOR_MAP(selfp->w_color_map_bar),
@@ -3955,7 +3911,7 @@ draw_caliper(GivWin *self,
if (lasso_context == DOVTK_LASSO_CONTEXT_LABEL)
return;
-#if 0
+#if _WIN32
// This is stil broken!
// As I can't get pango cairo to work under Windows, I use the specific windows
diff --git a/src/glib-jsonrpc/json-glib/json-scanner.h b/src/glib-jsonrpc/json-glib/json-scanner.h
index 49d7b1e..e3df02c 100644
--- a/src/glib-jsonrpc/json-glib/json-scanner.h
+++ b/src/glib-jsonrpc/json-glib/json-scanner.h
@@ -34,9 +34,7 @@
#ifndef __JSON_SCANNER_H__
#define __JSON_SCANNER_H__
-#include <glib/gdataset.h>
-#include <glib/ghash.h>
-#include <glib/gscanner.h>
+#include <glib.h>
G_BEGIN_DECLS
diff --git a/src/gtkimageviewer/gtk-image-viewer.gob b/src/gtkimageviewer/gtk-image-viewer.gob
index 8b2d566..04b5671 100644
--- a/src/gtkimageviewer/gtk-image-viewer.gob
+++ b/src/gtkimageviewer/gtk-image-viewer.gob
@@ -1098,12 +1098,6 @@ class Gtk:Image:Viewer from Gtk:Widget
selfp->frozen);
#endif
if (!selfp->frozen) {
- GValue ___param_values[6];
- GValue ___return_val;
- int i;
-
- int signal_shift_x = offs_x;
- int signal_shift_y = offs_y;
double signal_scale_x = scale_x;
double signal_scale_y = scale_y;
@@ -1112,43 +1106,13 @@ class Gtk:Image:Viewer from Gtk:Widget
signal_scale_x = -signal_scale_x;
if (selfp->do_flip_vertical)
signal_scale_y = -signal_scale_y;
-
- memset (&___return_val, 0, sizeof (___return_val));
- memset (&___param_values, 0, sizeof (___param_values));
-
- ___param_values[0].g_type = 0;
- g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
- g_value_set_instance (&___param_values[0], (gpointer) self);
-
- ___param_values[1].g_type = 0;
- g_value_init (&___param_values[1], G_TYPE_POINTER);
- g_value_set_pointer (&___param_values[1], img_scaled);
-
- ___param_values[2].g_type = 0;
- g_value_init (&___param_values[2], G_TYPE_INT);
- g_value_set_int (&___param_values[2], -signal_shift_x);
-
- ___param_values[3].g_type = 0;
- g_value_init (&___param_values[3], G_TYPE_INT);
- g_value_set_int (&___param_values[3], -signal_shift_y);
-
- ___param_values[4].g_type = 0;
- g_value_init (&___param_values[4], G_TYPE_DOUBLE);
- g_value_set_double (&___param_values[4], signal_scale_x);
-
- ___param_values[5].g_type = 0;
- g_value_init (&___param_values[5], G_TYPE_DOUBLE);
- g_value_set_double (&___param_values[5], signal_scale_y);
-
- // printf("Emitting!\n");
- g_signal_emitv (___param_values,
- object_signals[IMAGE_ANNOTATE_SIGNAL],
- 0 /* detail */,
- &___return_val);
-
- //printf("Done emitting!\n");
- for (i=0; i<6; i++)
- g_value_unset (&___param_values[i]);
+
+ gtk_image_viewer_image_annotate(self,
+ img_scaled,
+ -offs_x,
+ -offs_y,
+ signal_scale_x,
+ signal_scale_y);
}
// Add checkerboard below images that have alpha channel
@@ -1778,39 +1742,11 @@ class Gtk:Image:Viewer from Gtk:Widget
need_signal =TRUE;
}
- if (need_signal)
- {
- // Emit flip signal
- {
- GValue ___param_values[3];
- GValue ___return_val;
- int i;
-
- memset (&___return_val, 0, sizeof (___return_val));
- memset (&___param_values, 0, sizeof (___param_values));
-
- ___param_values[0].g_type = 0;
- g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
- g_value_set_instance (&___param_values[0], (gpointer) self);
-
- ___param_values[1].g_type = 0;
- g_value_init (&___param_values[1], G_TYPE_INT);
- g_value_set_int (&___param_values[1], selfp->do_flip_horizontal);
-
- ___param_values[2].g_type = 0;
- g_value_init (&___param_values[2], G_TYPE_INT);
- g_value_set_int (&___param_values[2], selfp->do_flip_vertical);
-
- g_signal_emitv (___param_values,
- object_signals[FLIP_CHANGED_SIGNAL],
- 0 /* detail */,
- &___return_val);
-
- for (i=0; i<3; i++)
- g_value_unset (&___param_values[i]);
-
+ if (need_signal) {
+ gtk_image_viewer_flip_changed(self,
+ selfp->do_flip_horizontal,
+ selfp->do_flip_vertical);
gtk_image_viewer_redraw(self, TRUE);
- }
}
}
diff --git a/src/menu-popup.xml b/src/menu-popup.xml
index cdfa2c8..2bf2d58 100644
--- a/src/menu-popup.xml
+++ b/src/menu-popup.xml
@@ -17,7 +17,6 @@
<menuitem name="Balloons" action="ViewBalloonAction" />
<menuitem name="HorizontalFlip" action="ViewHorizontalFlip" />
<menuitem name="VerticalFlip" action="ViewVerticalFlip" />
- <menuitem name="CrossHair" action="ViewCrossHair" />
<menuitem name="AutoResize" action="AutoResize" />
<menu name="ColorTableMenu" action="ColorTableMenuAction">
<menuitem name="PseudoColorOff" action="PseudoColorNone" />
diff --git a/src/menu-top.xml b/src/menu-top.xml
index 0273c16..5636d26 100644
--- a/src/menu-top.xml
+++ b/src/menu-top.xml
@@ -16,7 +16,6 @@
<menuitem name="Balloons" action="ViewBalloonAction" />
<menuitem name="HorizontalFlip" action="ViewHorizontalFlip" />
<menuitem name="VerticalFlip" action="ViewVerticalFlip" />
- <menuitem name="CrossHair" action="ViewCrossHair" />
<menuitem name="Pixel-grid" action="ViewPixelGrid" />
<menuitem name="ColorMapBar" action="ViewColorMap" />
<menuitem name="AutoResize" action="AutoResize" />
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]