kopia lustrzana https://gitlab.com/sane-project/frontends
Fix tooltips
rodzic
2265e3cec4
commit
4676a37ad7
129
src/gtkglue.c
129
src/gtkglue.c
|
@ -86,17 +86,11 @@ unit_string (SANE_Unit unit)
|
|||
}
|
||||
|
||||
static void
|
||||
set_tooltip (GtkTooltip * tooltips, GtkWidget * widget, const char *desc)
|
||||
set_tooltip (GtkWidget * widget, const char *desc)
|
||||
{
|
||||
/*
|
||||
if (desc && desc[0])
|
||||
#ifdef HAVE_GTK_TOOLTIPS_SET_TIPS
|
||||
// pre 0.99.4:
|
||||
gtk_tooltips_set_tips (tooltips, widget, (char *) desc);
|
||||
#else
|
||||
gtk_tooltips_set_tip (tooltips, widget, desc, 0);
|
||||
#endif
|
||||
*/
|
||||
gtk_widget_set_tooltip_text (widget, desc);
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -210,9 +204,7 @@ set_option (GSGDialog * dialog, int opt_num, void *val, SANE_Action action)
|
|||
SANE_Int info;
|
||||
char buf[256];
|
||||
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
status = sane_control_option (dialog->dev, opt_num, action, val, &info);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
snprintf (buf, sizeof (buf), "Failed to set value of option %s: %s.",
|
||||
|
@ -221,20 +213,14 @@ set_option (GSGDialog * dialog, int opt_num, void *val, SANE_Action action)
|
|||
gsg_error (buf);
|
||||
return;
|
||||
}
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
if (info & SANE_INFO_RELOAD_OPTIONS)
|
||||
{
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
panel_rebuild (dialog);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
if (dialog->option_reload_callback)
|
||||
(*dialog->option_reload_callback) (dialog, dialog->option_reload_arg);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
}
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
if ((info & SANE_INFO_RELOAD_PARAMS) && dialog->param_change_callback)
|
||||
(*dialog->param_change_callback) (dialog, dialog->param_change_arg);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -257,6 +243,7 @@ gsg_message (gchar * title, gchar * message)
|
|||
}
|
||||
gsg_message_dialog_active = 1;
|
||||
message_dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_position (GTK_WINDOW (message_dialog), GTK_WIN_POS_MOUSE);
|
||||
gtk_window_set_title (GTK_WINDOW (message_dialog), title);
|
||||
|
||||
/* create the main vbox */
|
||||
|
@ -367,7 +354,7 @@ autobutton_update (GtkWidget * widget, GSGDialogElement * elem)
|
|||
|
||||
static void
|
||||
autobutton_new (GtkWidget * parent, GSGDialogElement * elem,
|
||||
GtkWidget * label, GtkTooltip * tooltips)
|
||||
GtkWidget * label)
|
||||
{
|
||||
GtkWidget *button;
|
||||
|
||||
|
@ -376,9 +363,7 @@ autobutton_new (GtkWidget * parent, GSGDialogElement * elem,
|
|||
gtk_widget_set_size_request (button, 20, 20);
|
||||
g_signal_connect (G_OBJECT (button), "toggled",
|
||||
G_CALLBACK (autobutton_update), elem);
|
||||
set_tooltip (tooltips, button, "Turns on automatic mode.");
|
||||
|
||||
// alignment = gtk_alignment_new (0.0, 1.0, 0.5, 0.5); // => button
|
||||
set_tooltip (button, "Turns on automatic mode.");
|
||||
|
||||
gtk_box_pack_end (GTK_BOX (parent), label, FALSE, FALSE, 0);
|
||||
gtk_box_pack_end (GTK_BOX (parent), button, FALSE, FALSE, 2);
|
||||
|
@ -414,7 +399,7 @@ button_new (GtkWidget * parent, const char *name, SANE_Word val,
|
|||
if (!is_settable)
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE);
|
||||
gtk_widget_show (button);
|
||||
set_tooltip (tooltips, button, desc);
|
||||
set_tooltip (button, desc);
|
||||
|
||||
elem->widget = button;
|
||||
}
|
||||
|
@ -498,7 +483,7 @@ value_changed:
|
|||
static void
|
||||
scale_new (GtkWidget * parent, const char *name, gfloat val,
|
||||
gfloat min, gfloat max, gfloat quant, int automatic,
|
||||
GSGDialogElement * elem, GtkTooltip * tooltips, const char *desc,
|
||||
GSGDialogElement * elem, const char *desc,
|
||||
gint is_settable)
|
||||
{
|
||||
GtkWidget *hbox, *label, *scale;
|
||||
|
@ -515,11 +500,11 @@ scale_new (GtkWidget * parent, const char *name, gfloat val,
|
|||
scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, min, max, quant);
|
||||
elem->data = gtk_range_get_adjustment (GTK_RANGE (scale));
|
||||
gtk_scale_set_value_pos (GTK_SCALE (scale), val);
|
||||
set_tooltip (tooltips, scale, desc);
|
||||
set_tooltip (scale, desc);
|
||||
gtk_widget_set_size_request (scale, 200, 0);
|
||||
|
||||
if (automatic)
|
||||
autobutton_new (hbox, elem, scale, tooltips);
|
||||
autobutton_new (hbox, elem, scale);
|
||||
else
|
||||
gtk_box_pack_end (GTK_BOX (hbox), scale, FALSE, FALSE, 0);
|
||||
|
||||
|
@ -535,8 +520,8 @@ scale_new (GtkWidget * parent, const char *name, gfloat val,
|
|||
|
||||
gtk_widget_show (label);
|
||||
gtk_widget_show (scale);
|
||||
if (!is_settable)
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (hbox), FALSE);
|
||||
//if (!is_settable)
|
||||
// gtk_widget_set_sensitive (GTK_WIDGET (hbox), FALSE);
|
||||
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
|
@ -605,7 +590,7 @@ option_menu_callback (GtkWidget * widget, gpointer data)
|
|||
static void
|
||||
option_menu_new (GtkWidget * parent, const char *name, char *str_list[],
|
||||
const char *val, GSGDialogElement * elem,
|
||||
GtkTooltip * tooltips, const char *desc, gint is_settable)
|
||||
const char *desc, gint is_settable)
|
||||
{
|
||||
GtkWidget *hbox, *label, *option_menu;
|
||||
GSGMenuItem *menu_items;
|
||||
|
@ -634,7 +619,7 @@ option_menu_new (GtkWidget * parent, const char *name, char *str_list[],
|
|||
}
|
||||
gtk_box_pack_end (GTK_BOX (hbox), option_menu, FALSE, FALSE, 2);
|
||||
gtk_combo_box_set_active (GTK_COMBO_BOX (option_menu), selected);
|
||||
set_tooltip (tooltips, option_menu, desc);
|
||||
set_tooltip (option_menu, desc);
|
||||
gtk_widget_show (label);
|
||||
gtk_widget_show (option_menu);
|
||||
if (!is_settable)
|
||||
|
@ -679,7 +664,7 @@ text_entry_callback (GtkWidget * w, gpointer data)
|
|||
static void
|
||||
text_entry_new (GtkWidget * parent, const char *name, const char *val,
|
||||
GSGDialogElement * elem,
|
||||
GtkTooltip * tooltips, const char *desc, gint is_settable)
|
||||
const char *desc, gint is_settable)
|
||||
{
|
||||
GtkWidget *hbox, *text, *label;
|
||||
|
||||
|
@ -695,7 +680,7 @@ text_entry_new (GtkWidget * parent, const char *name, const char *val,
|
|||
gtk_box_pack_start (GTK_BOX (hbox), text, FALSE, TRUE, 0);
|
||||
g_signal_connect (G_OBJECT (text), "changed",
|
||||
G_CALLBACK (text_entry_callback), elem);
|
||||
set_tooltip (tooltips, text, desc);
|
||||
set_tooltip (text, desc);
|
||||
|
||||
gtk_widget_show (hbox);
|
||||
if (!is_settable)
|
||||
|
@ -849,11 +834,6 @@ panel_destroy (GSGDialog * dialog)
|
|||
GSGDialogElement *elem;
|
||||
int i, j;
|
||||
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
if (dialog->tooltips)
|
||||
g_object_unref (G_OBJECT (dialog->tooltips));
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
|
||||
gtk_widget_destroy (dialog->main_hbox);
|
||||
|
||||
/* free the menu labels of integer/fix-point word-lists: */
|
||||
|
@ -924,23 +904,9 @@ panel_build (GSGDialog * dialog)
|
|||
advanced_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_box_set_homogeneous (GTK_BOX (advanced_vbox), FALSE);
|
||||
gtk_box_pack_start (GTK_BOX (option_vbox), advanced_vbox, TRUE, TRUE, 0);
|
||||
|
||||
dialog->tooltips = NULL;
|
||||
/*
|
||||
// use black as foreground:
|
||||
dialog->tooltips = gtk_tooltips_new ();
|
||||
dialog->tooltips_fg.red = 0;
|
||||
dialog->tooltips_fg.green = 0;
|
||||
dialog->tooltips_fg.blue = 0;
|
||||
// postit yellow (khaki) as background:
|
||||
gdk_color_alloc (gtk_widget_get_colormap (main_hbox), &dialog->tooltips_fg);
|
||||
dialog->tooltips_bg.red = 61669;
|
||||
dialog->tooltips_bg.green = 59113;
|
||||
dialog->tooltips_bg.blue = 35979;
|
||||
gdk_color_alloc (gtk_widget_get_colormap (main_hbox), &dialog->tooltips_bg);
|
||||
|
||||
gsg_set_tooltips (dialog, preferences.tooltips_enabled);
|
||||
*/
|
||||
gsg_set_tooltips (preferences.tooltips_enabled);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (dialog->window), main_hbox);
|
||||
dialog->main_hbox = main_hbox;
|
||||
dialog->advanced_vbox = advanced_vbox;
|
||||
|
@ -1047,7 +1013,7 @@ panel_build (GSGDialog * dialog)
|
|||
opt->constraint.range->min,
|
||||
opt->constraint.range->max, quant,
|
||||
(opt->cap & SANE_CAP_AUTOMATIC), elem,
|
||||
dialog->tooltips, opt->desc,
|
||||
opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
break;
|
||||
|
@ -1074,7 +1040,7 @@ panel_build (GSGDialog * dialog)
|
|||
val = opt->constraint.word_list[1];
|
||||
sprintf (str, "%d", val);
|
||||
option_menu_new (parent, title, str_list, str, elem,
|
||||
dialog->tooltips, opt->desc,
|
||||
opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
free (str_list);
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
|
@ -1127,7 +1093,7 @@ panel_build (GSGDialog * dialog)
|
|||
}
|
||||
scale_new (parent, title, dval, dmin, dmax, dquant,
|
||||
(opt->cap & SANE_CAP_AUTOMATIC), elem,
|
||||
dialog->tooltips, opt->desc,
|
||||
opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
break;
|
||||
|
@ -1145,7 +1111,7 @@ panel_build (GSGDialog * dialog)
|
|||
str_list[j] = 0;
|
||||
sprintf (str, "%g", SANE_UNFIX (val));
|
||||
option_menu_new (parent, title, str_list, str, elem,
|
||||
dialog->tooltips, opt->desc,
|
||||
opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
free (str_list);
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
|
@ -1183,14 +1149,14 @@ panel_build (GSGDialog * dialog)
|
|||
/* use a "list-selection" widget */
|
||||
option_menu_new (parent, title,
|
||||
(char **) opt->constraint.string_list, buf,
|
||||
elem, dialog->tooltips, opt->desc,
|
||||
elem, opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
break;
|
||||
|
||||
case SANE_CONSTRAINT_NONE:
|
||||
text_entry_new (parent, title, buf, elem,
|
||||
dialog->tooltips, opt->desc,
|
||||
opt->desc,
|
||||
SANE_OPTION_IS_SETTABLE (opt->cap));
|
||||
gtk_widget_show (gtk_widget_get_parent (parent));
|
||||
break;
|
||||
|
@ -1211,7 +1177,7 @@ panel_build (GSGDialog * dialog)
|
|||
"clicked",
|
||||
G_CALLBACK (push_button_callback),
|
||||
elem);
|
||||
set_tooltip (dialog->tooltips, button, opt->desc);
|
||||
set_tooltip (button, opt->desc);
|
||||
|
||||
label = gtk_label_new (title);
|
||||
gtk_container_add (GTK_CONTAINER (button), label);
|
||||
|
@ -1261,11 +1227,8 @@ panel_build (GSGDialog * dialog)
|
|||
static void
|
||||
panel_rebuild (GSGDialog * dialog)
|
||||
{
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
panel_destroy (dialog);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
panel_build (dialog);
|
||||
fprintf(stdout, "%d) %s\n", __LINE__, __FILE__); fflush (stdout);
|
||||
}
|
||||
|
||||
GSGDialog *
|
||||
|
@ -1413,8 +1376,13 @@ gsg_sync (GSGDialog * dialog)
|
|||
if (opt->size == sizeof (SANE_Word))
|
||||
continue;
|
||||
|
||||
/* ok, we're dealing with an active vector */
|
||||
/*
|
||||
// If curves is hidden (advanced option perhaps) then nothing to do.
|
||||
if (!dialog->element[i].widget)
|
||||
continue;
|
||||
|
||||
// ok, we're dealing with an active vector
|
||||
|
||||
optlen = opt->size / sizeof (SANE_Word);
|
||||
optval = alloca (optlen * sizeof (optval[0]));
|
||||
vector = alloca (optlen * sizeof (vector[0]));
|
||||
|
@ -1442,17 +1410,38 @@ gsg_set_advanced (GSGDialog * dialog, int advanced)
|
|||
panel_rebuild (dialog);
|
||||
}
|
||||
|
||||
|
||||
static GtkCssProvider *css_prov = NULL;
|
||||
|
||||
void
|
||||
gsg_set_tooltips (GSGDialog * dialog, int enable)
|
||||
gsg_set_tooltips (int enable)
|
||||
{
|
||||
if (!dialog->tooltips)
|
||||
return;
|
||||
/*
|
||||
if (enable)
|
||||
gtk_tooltips_enable (dialog->tooltips);
|
||||
{
|
||||
if (css_prov) {
|
||||
gtk_style_context_remove_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css_prov));
|
||||
g_object_unref(css_prov);
|
||||
}
|
||||
css_prov = gtk_css_provider_new();
|
||||
const gchar style[] = "tooltip {opacity:1;}";
|
||||
gtk_css_provider_load_from_data(css_prov, style, -1, NULL);
|
||||
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css_prov),
|
||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
}
|
||||
else
|
||||
gtk_tooltips_disable (dialog->tooltips);
|
||||
*/
|
||||
{
|
||||
if (css_prov) {
|
||||
gtk_style_context_remove_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css_prov));
|
||||
g_object_unref(css_prov);
|
||||
}
|
||||
css_prov = gtk_css_provider_new();
|
||||
const gchar style[] = "tooltip {opacity:0;}";
|
||||
gtk_css_provider_load_from_data(css_prov, style, -1, NULL);
|
||||
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css_prov),
|
||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -111,7 +111,7 @@ extern void gsg_sync (GSGDialog *dialog);
|
|||
extern void gsg_refresh_dialog (GSGDialog *dialog);
|
||||
extern void gsg_update_scan_window (GSGDialog *dialog);
|
||||
extern void gsg_set_advanced (GSGDialog *dialog, int advanced);
|
||||
extern void gsg_set_tooltips (GSGDialog *dialog, int enable);
|
||||
extern void gsg_set_tooltips (int enable);
|
||||
extern void gsg_set_twocolumn (GSGDialog *dialog, int enable);
|
||||
extern void gsg_set_sensitivity (GSGDialog *dialog, int sensitive);
|
||||
extern void gsg_destroy_dialog (GSGDialog * dialog);
|
||||
|
|
|
@ -842,7 +842,7 @@ static void
|
|||
pref_toggle_tooltips (GtkWidget * widget, gpointer data)
|
||||
{
|
||||
preferences.tooltips_enabled = (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)) != 0);
|
||||
gsg_set_tooltips (dialog, preferences.tooltips_enabled);
|
||||
gsg_set_tooltips (preferences.tooltips_enabled);
|
||||
pref_xcam_save ();
|
||||
}
|
||||
|
||||
|
|
|
@ -630,7 +630,7 @@ scan_win_delete (GtkWidget * w, gpointer data)
|
|||
static void
|
||||
preview_window_destroyed (GtkWidget * widget, gpointer call_data)
|
||||
{
|
||||
// gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (call_data), FALSE);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (call_data), FALSE);
|
||||
}
|
||||
|
||||
/* Invoked when the preview button is pressed. */
|
||||
|
@ -1432,7 +1432,7 @@ update_int_callback (GtkWidget * widget, gpointer data)
|
|||
{
|
||||
int *valuep = data;
|
||||
|
||||
*valuep = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)) != 0);
|
||||
*valuep = (gtk_widget_get_sensitive ( widget) != 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1632,7 +1632,7 @@ static void
|
|||
pref_toggle_tooltips (GtkWidget * widget, gpointer data)
|
||||
{
|
||||
preferences.tooltips_enabled = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM (widget));
|
||||
gsg_set_tooltips (dialog, preferences.tooltips_enabled);
|
||||
gsg_set_tooltips (preferences.tooltips_enabled);
|
||||
pref_xscanimage_save ();
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue