185 gtk_widget_set_visible (widg, TRUE);
187 gtk_widget_show_all (widg);
201 gtk_widget_set_visible (widg, FALSE);
203 gtk_widget_hide (widg);
219 if (GTK_IS_WIDGET(widg))
221 gtk_widget_set_sensitive (widg, sensitive);
238 gtk_container_add (GTK_CONTAINER(widg), child);
244 gtk_window_set_child ((GtkWindow *)widg, child);
252 gtk_scrolled_window_set_child ((GtkScrolledWindow *)widg, NULL);
253 gtk_scrolled_window_set_child ((GtkScrolledWindow *)widg, child);
257 gtk_viewport_set_child ((GtkViewport *)widg, child);
261 gtk_button_set_child ((GtkButton *)widg, child);
265 gtk_frame_set_child ((GtkFrame *)widg, child);
269 gtk_expander_set_child ((GtkExpander *)widg, child);
286void add_box_child_end (GtkWidget * widg, GtkWidget * child, gboolean expand, gboolean fill,
int padding)
290 gtk_box_append (GTK_BOX(widg), child);
292 gtk_box_pack_end (GTK_BOX(widg), child, expand, fill, padding);
308void add_box_child_start (
int orientation, GtkWidget * widg, GtkWidget * child, gboolean expand, gboolean fill,
int padding)
311 if (orientation == GTK_ORIENTATION_HORIZONTAL && padding)
313 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", padding, -1, 0.0, 0.0));
315 else if (orientation == GTK_ORIENTATION_VERTICAL && padding > 10)
317 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", -1, padding/2, 0.0, 0.0));
319 gtk_box_append (GTK_BOX(widg), child);
320 if (orientation == GTK_ORIENTATION_HORIZONTAL && padding)
322 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", padding, -1, 0.0, 0.0));
324 else if (orientation == GTK_ORIENTATION_VERTICAL && padding > 10)
326 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", -1, padding/2, 0.0, 0.0));
329 gtk_box_pack_start (GTK_BOX(widg), child, expand, fill, padding);
346 gtk_menu_item_set_submenu ((GtkMenuItem *)item, sub_menu);
360 return gtk_window_new ();
362 return gtk_window_new (GTK_WINDOW_TOPLEVEL);
394void add_widget_gesture_and_key_action (GtkWidget * widget,
395 gchar * cp_name, GCallback cp_handler, gpointer cp_data,
396 gchar * cr_name, GCallback cr_handler, gpointer cr_data,
397 gchar * kp_name, GCallback kp_handler, gpointer kp_data,
398 gchar * mo_name, GCallback mo_handler, gpointer mo_data,
399 gchar * sc_name, GCallback sc_handler, gpointer sc_data)
401 GtkGesture * gesture;
402 GtkEventController * key;
403 GtkEventController *
motion;
406 gesture = gtk_gesture_click_new ();
407 gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), cp_name);
408 gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
409 if (cp_handler) g_signal_connect (gesture,
"pressed", cp_handler, cp_data);
410 gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
414 gesture = gtk_gesture_click_new ();
415 gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), cr_name);
416 gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
417 if (cr_handler) g_signal_connect (gesture,
"released", cr_handler, cr_data);
418 gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
422 key = gtk_event_controller_key_new ();
423 gtk_event_controller_set_name (key, kp_name);
424 if (kp_handler) g_signal_connect (key,
"key-pressed", kp_handler, kp_data);
425 gtk_widget_add_controller (widget, key);
429 motion = gtk_event_controller_motion_new ();
430 gtk_event_controller_set_name (
motion, mo_name);
431 if (mo_handler) g_signal_connect (
motion,
"motion", mo_handler, mo_data);
432 gtk_widget_add_controller (widget,
motion);
436 motion = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL);
437 gtk_event_controller_set_name (
motion, sc_name);
438 if (sc_handler) g_signal_connect (
motion,
"scroll", sc_handler, sc_data);
439 gtk_widget_add_controller (widget,
motion);
454GtkWidget *
create_win (gchar * str, GtkWidget * parent, gboolean modal, gboolean resiz)
459 gtk_window_set_resizable (GTK_WINDOW (win), TRUE);
461 gtk_window_set_attached_to (GTK_WINDOW (win), parent);
462 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
465 gtk_window_set_modal (GTK_WINDOW(win), modal);
466 gtk_window_set_resizable (GTK_WINDOW(win), resiz);
467 gtk_window_set_destroy_with_parent (GTK_WINDOW (win), TRUE);
481void run_this_gtk_native_dialog (GtkNativeDialog * dial, GCallback handler, gpointer data)
483 gtk_native_dialog_set_modal (dial, TRUE);
484 if (handler) g_signal_connect (G_OBJECT(dial),
"response", handler, data);
485 gtk_native_dialog_show (dial);
503 gtk_window_set_modal (GTK_WINDOW(dial), TRUE);
504 if (handler) g_signal_connect (G_OBJECT(dial),
"response", handler, data);
522 GtkWidget * win = gtk_dialog_new_with_buttons (str, parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _(
"_Close"), GTK_RESPONSE_CLOSE, NULL);
523 gtk_window_set_resizable (GTK_WINDOW (win), FALSE);
525 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
541GtkWidget *
message_dialogmodal (gchar * message, gchar * title, GtkMessageType mtype, GtkButtonsType buttons, GtkWidget * parent)
546 win = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, mtype, buttons, NULL);
550 win = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, mtype, buttons, NULL);
552 gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (win), message);
553 gtk_window_set_title (GTK_WINDOW(win), title);
554 gtk_window_set_resizable (GTK_WINDOW (win), FALSE);
556 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
573 GtkWidget * dca = gtk_dialog_new_with_buttons (title, GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
574 "Cancel", GTK_RESPONSE_CANCEL,
"Apply", GTK_RESPONSE_APPLY, NULL);
575 gtk_window_set_resizable (GTK_WINDOW(dca), resiz);
577 gtk_window_set_icon (GTK_WINDOW (dca),
THETD);
594 gtk_window_resize (GTK_WINDOW(window),
x,
y);
596 gtk_window_set_default_size (GTK_WINDOW(window),
x,
y);
610 return gtk_editable_get_text (GTK_EDITABLE(entry));
612 return gtk_entry_get_text (entry);
626 gchar * value = g_strdup_printf(
"%d", intval);
628 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
630 gtk_entry_set_text (entry, (
const gchar *)value);
645 gchar * value = g_strdup_printf(
"%f", doubleval);
647 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
649 gtk_entry_set_text (entry, (
const gchar *)value);
664 gchar * value = g_strdup_printf(
"%15.10lf", doubleval);
666 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
668 gtk_entry_set_text (entry, (
const gchar *)value);
684 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)
text);
686 gtk_entry_set_text (entry, (
const gchar *)
text);
699 gtk_text_view_set_monospace (GTK_TEXT_VIEW(view), TRUE);
713 gtk_label_set_xalign (GTK_LABEL (
lab),
ax);
714 gtk_label_set_yalign (GTK_LABEL (
lab),
ay);
726 if (GTK_IS_WIDGET(widg))
728 return gtk_widget_is_visible (widg);
755 float val,
int pos,
int round,
int size,
756 GCallback handler, GCallback scroll_handler, gpointer data)
759 hscale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
min,
max, delta);
760 gtk_scale_set_draw_value (GTK_SCALE(hscale), TRUE);
761 gtk_widget_set_size_request (hscale, size, -1);
762 gtk_scale_set_value_pos (GTK_SCALE(hscale), pos);
763 gtk_range_set_value (GTK_RANGE(hscale),
val);
764 gtk_range_set_round_digits (GTK_RANGE(hscale), round);
765 if (handler != NULL) g_signal_connect (G_OBJECT(hscale),
"value-changed", handler, data);
766 if (scroll_handler != NULL) g_signal_connect (G_OBJECT(hscale),
"change-value", scroll_handler, data);
789 float val,
int pos,
int round,
int size,
790 GCallback handler, GCallback scroll_handler, gpointer data)
793 vscale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
min,
max, delta);
794 gtk_scale_set_draw_value (GTK_SCALE(vscale), TRUE);
795 gtk_scale_set_value_pos (GTK_SCALE(vscale), pos);
796 gtk_widget_set_size_request (vscale, size, size);
797 gtk_range_set_value (GTK_RANGE(vscale),
val);
798 gtk_range_set_round_digits (GTK_RANGE(vscale), round);
799 if (handler != NULL) g_signal_connect (G_OBJECT(vscale),
"value-changed", handler, data);
800 if (scroll_handler != NULL) g_signal_connect (G_OBJECT(vscale),
"change-value", scroll_handler, data);
813 return gtk_box_new (GTK_ORIENTATION_VERTICAL, spacing);
825 return gtk_box_new (GTK_ORIENTATION_HORIZONTAL, spacing);
838 return gtk_dialog_get_content_area (GTK_DIALOG(widg));
841 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, gtk_dialog_get_content_area (GTK_DIALOG(widg)),
vbox, TRUE, TRUE, 0);
859 gtk_layout_put (GTK_LAYOUT(
layout), child, x_pos, y_pos);
861 gtk_fixed_put (GTK_FIXED(
layout), child, x_pos, y_pos);
877 gtk_widget_set_size_request (
vbox, size_x, size_y);
894 layout = gtk_layout_new (NULL, NULL);
896 layout = gtk_fixed_new ();
898 gtk_widget_set_size_request (
layout,
x,
y);
911 return gtk_combo_box_get_active ((GtkComboBox *)combo);
934 gtk_combo_box_set_active ((GtkComboBox *)combo, pos);
946 GList * cell_list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(combo));
947 if (cell_list && cell_list -> data)
949 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell_list -> data,
"markup", 0, NULL);
963 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(combo),
text);
976 gtk_combo_box_text_prepend_text (GTK_COMBO_BOX_TEXT(combo),
text);
986 return gtk_combo_box_text_new ();
998 GtkTextTagTable * textags = gtk_text_buffer_get_tag_table(buffer);
1001 tag = gtk_text_tag_new (
"sans");
1003 gtk_text_tag_table_add (textags,
tag);
1004 g_object_unref (
tag);
1007 tag = gtk_text_tag_new (
"monospace");
1009 gtk_text_tag_table_add (textags,
tag);
1010 g_object_unref (
tag);
1013 tag = gtk_text_tag_new (
"default-size");
1015 gtk_text_tag_table_add (textags,
tag);
1016 g_object_unref (
tag);
1019 tag = gtk_text_tag_new (
"underline");
1020 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"underline", PANGO_UNDERLINE_SINGLE, NULL);
1021 gtk_text_tag_table_add (textags,
tag);
1022 g_object_unref (
tag);
1025 tag = gtk_text_tag_new (
"underline_double");
1026 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"underline", PANGO_UNDERLINE_DOUBLE, NULL);
1027 gtk_text_tag_table_add (textags,
tag);
1028 g_object_unref (
tag);
1031 tag = gtk_text_tag_new (
"italic");
1032 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"style", PANGO_STYLE_ITALIC, NULL);
1033 gtk_text_tag_table_add (textags,
tag);
1034 g_object_unref (
tag);
1037 tag = gtk_text_tag_new (
"bold");
1038 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"weight", PANGO_WEIGHT_BOLD, NULL);
1039 gtk_text_tag_table_add (textags,
tag);
1040 g_object_unref (
tag);
1043 tag = gtk_text_tag_new (
"bold_italic");
1045 "style", PANGO_STYLE_ITALIC,
1046 "weight", PANGO_WEIGHT_BOLD, NULL);
1047 gtk_text_tag_table_add (textags,
tag);
1048 g_object_unref (
tag);
1051 tag = gtk_text_tag_new (
"sup");
1053 gtk_text_tag_table_add (textags,
tag);
1054 g_object_unref (
tag);
1057 tag = gtk_text_tag_new (
"sub");
1059 gtk_text_tag_table_add (textags,
tag);
1060 g_object_unref (
tag);
1063 tag = gtk_text_tag_new(
"justify-left");
1064 g_object_set(
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"justification", GTK_JUSTIFY_LEFT, NULL);
1065 gtk_text_tag_table_add(textags,
tag);
1066 g_object_unref(
tag);
1069 tag = gtk_text_tag_new(
"justify-center");
1070 g_object_set(
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"justification", GTK_JUSTIFY_CENTER, NULL);
1071 gtk_text_tag_table_add(textags,
tag);
1072 g_object_unref(
tag);
1075 tag = gtk_text_tag_new(
"justify-right");
1076 g_object_set(
tag,
"justification", GTK_JUSTIFY_RIGHT, NULL);
1077 gtk_text_tag_table_add(textags,
tag);
1078 g_object_unref (
tag);
1081 tag = gtk_text_tag_new(
"heading");
1083 "weight", PANGO_WEIGHT_BOLD,
1085 "justification", GTK_JUSTIFY_CENTER,
1086 "underline", PANGO_UNDERLINE_DOUBLE, NULL);
1087 gtk_text_tag_table_add(textags,
tag);
1088 g_object_unref (
tag);
1091 tag = gtk_text_tag_new(
"red");
1093 gtk_text_tag_table_add(textags,
tag);
1094 g_object_unref (
tag);
1097 tag = gtk_text_tag_new(
"orange");
1099 gtk_text_tag_table_add(textags,
tag);
1100 g_object_unref (
tag);
1103 tag = gtk_text_tag_new(
"yellow");
1105 gtk_text_tag_table_add(textags,
tag);
1106 g_object_unref (
tag);
1109 tag = gtk_text_tag_new(
"green");
1111 gtk_text_tag_table_add(textags,
tag);
1112 g_object_unref (
tag);
1115 tag = gtk_text_tag_new(
"light_green");
1117 gtk_text_tag_table_add(textags,
tag);
1118 g_object_unref (
tag);
1121 tag = gtk_text_tag_new(
"cyan");
1123 gtk_text_tag_table_add(textags,
tag);
1124 g_object_unref (
tag);
1127 tag = gtk_text_tag_new(
"blue");
1129 gtk_text_tag_table_add(textags,
tag);
1130 g_object_unref (
tag);
1133 tag = gtk_text_tag_new(
"pink");
1135 gtk_text_tag_table_add(textags,
tag);
1136 g_object_unref (
tag);
1139 tag = gtk_text_tag_new(
"violet");
1141 gtk_text_tag_table_add(textags,
tag);
1142 g_object_unref (
tag);
1145 tag = gtk_text_tag_new(
"grey_back");
1147 gtk_text_tag_table_add(textags,
tag);
1148 g_object_unref (
tag);
1151 tag = gtk_text_tag_new(
"bold_grey_back");
1153 "background",
"lightgrey",
1154 "weight", PANGO_WEIGHT_BOLD, NULL);
1155 gtk_text_tag_table_add(textags,
tag);
1156 g_object_unref (
tag);
1159 tag = gtk_text_tag_new (
"bold_red");
1161 "foreground",
"red",
1162 "weight", PANGO_WEIGHT_BOLD, NULL);
1163 gtk_text_tag_table_add (textags,
tag);
1164 g_object_unref (
tag);
1167 tag = gtk_text_tag_new (
"bold_blue");
1169 "foreground",
"blue",
1170 "weight", PANGO_WEIGHT_BOLD, NULL);
1171 gtk_text_tag_table_add (textags,
tag);
1172 g_object_unref (
tag);
1175 tag = gtk_text_tag_new (
"bold_green");
1177 "foreground",
"green",
1178 "weight", PANGO_WEIGHT_BOLD, NULL);
1179 gtk_text_tag_table_add (textags,
tag);
1180 g_object_unref (
tag);
1183 tag = gtk_text_tag_new (
"bold_orange");
1185 "foreground",
"orange",
1186 "weight", PANGO_WEIGHT_BOLD, NULL);
1187 gtk_text_tag_table_add (textags,
tag);
1188 g_object_unref (
tag);
1191 tag = gtk_text_tag_new (
"bold_pink");
1193 "foreground",
"pink",
1194 "weight", PANGO_WEIGHT_BOLD, NULL);
1195 gtk_text_tag_table_add (textags,
tag);
1196 g_object_unref (
tag);
1199 tag = gtk_text_tag_new (
"sub_italic");
1201 "style", PANGO_STYLE_ITALIC,
1202 "scale", .6,
"rise", -6000, NULL);
1203 gtk_text_tag_table_add (textags,
tag);
1204 g_object_unref (
tag);
1207 tag = gtk_text_tag_new (
"sub_bold");
1209 "weight", PANGO_WEIGHT_BOLD,
1210 "scale", .6,
"rise", -6000, NULL);
1211 gtk_text_tag_table_add (textags,
tag);
1212 g_object_unref (
tag);
1215 tag = gtk_text_tag_new (
"sup_bold");
1217 "weight", PANGO_WEIGHT_BOLD,
1218 "scale", .6,
"rise", 6000, NULL);
1219 gtk_text_tag_table_add (textags,
tag);
1220 g_object_unref (
tag);
1234 GtkTextBuffer * buffer;
1237 buffer = gtk_text_buffer_new (NULL);
1239 gtk_text_buffer_get_start_iter (buffer, &bStart);
1240 gtk_text_buffer_get_end_iter (buffer, &bEnd);
1241 gtk_text_buffer_delete (buffer, &bStart, &bEnd);
1242 if (
text != NULL) gtk_text_buffer_set_text (buffer,
text, -1);
1243 if (handler != NULL) g_signal_connect (G_OBJECT (buffer),
"changed", handler, data);
1260GtkWidget *
create_text_view (
int dimx,
int dimy,
int edit,
int mono, GCallback handler, gpointer data, gchar *
text)
1262 GtkWidget * tview = gtk_text_view_new ();
1263 gtk_text_view_set_buffer (GTK_TEXT_VIEW(tview),
add_buffer(handler, data,
text));
1264 gtk_widget_set_size_request (tview, dimx, dimy);
1265 gtk_text_view_set_editable (GTK_TEXT_VIEW(tview), edit);
1282static void convert_alpha (cairo_surface_t * surf, GdkPixbuf *
pix,
int src_x,
int src_y,
int width,
int height)
1285 guchar * src_data = cairo_image_surface_get_data (surf);
1286 int src_stride = cairo_image_surface_get_stride (surf);
1287 guchar * dest_data = gdk_pixbuf_get_pixels (
pix);
1288 int dest_stride = gdk_pixbuf_get_rowstride (
pix);
1290 src_data += src_stride * src_y + src_x * 4;
1292 for (
y = 0;
y < height;
y++) {
1293 guint32 *src = (guint32 *) src_data;
1295 for (
x = 0;
x < width;
x++) {
1296 guint alpha = src[
x] >> 24;
1300 dest_data[
x * 4 + 0] = 0;
1301 dest_data[
x * 4 + 1] = 0;
1302 dest_data[
x * 4 + 2] = 0;
1306 dest_data[
x * 4 + 0] = (((src[
x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
1307 dest_data[
x * 4 + 1] = (((src[
x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
1308 dest_data[
x * 4 + 2] = (((src[
x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
1310 dest_data[
x * 4 + 3] = alpha;
1313 src_data += src_stride;
1314 dest_data += dest_stride;
1327 int width = cairo_image_surface_get_width (surf);
1328 int height = cairo_image_surface_get_height (surf);
1329 GdkPixbuf *
pix = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width , height);
1330 convert_alpha (surf,
pix, 0, 0, width, height);
1344G_MODULE_EXPORT gboolean
to_activate_entry (GtkWidget * widg, GdkEventFocus * event, gpointer data)
1346 g_signal_emit_by_name (G_OBJECT(widg),
"activate", data);
1360 g_signal_emit_by_name (G_OBJECT(gtk_event_controller_get_widget((GtkEventController *)focus)),
"activate", data);
1375GtkWidget *
create_entry (GCallback handler,
int dim,
int cdim, gboolean key_release, gpointer data)
1377 GtkWidget * entry = gtk_entry_new ();
1378 gtk_widget_set_size_request (entry, dim, -1);
1380 gtk_editable_set_width_chars (GTK_EDITABLE(entry), 0);
1381 gtk_editable_set_max_width_chars (GTK_EDITABLE(entry), cdim);
1383 gtk_entry_set_width_chars (GTK_ENTRY(entry), 0);
1384 gtk_entry_set_max_width_chars (GTK_ENTRY(entry), cdim);
1386 gtk_entry_set_alignment (GTK_ENTRY(entry), 1.0);
1388 if (handler != NULL)
1390 g_signal_connect (G_OBJECT (entry),
"activate", handler, data);
1392 g_signal_connect (G_OBJECT (entry),
"focus-out-event", G_CALLBACK(
to_activate_entry), data);
1401 GtkEventController * focus = gtk_event_controller_focus_new ();
1402 gtk_event_controller_set_name (focus,
"focus-out");
1403 g_signal_connect (G_OBJECT(focus),
"leave", G_CALLBACK(
to_activate_entry), data);
1404 gtk_widget_add_controller (entry, focus);
1410 g_signal_connect (G_OBJECT (entry),
"key-release-event", G_CALLBACK(
to_activate_entry), data);
1428 return gtk_image_new_from_icon_name (stock_id);
1430 return gtk_image_new_from_icon_name (stock_id, GTK_ICON_SIZE_MENU);
1445 return (add_mnemo) ? gtk_menu_item_new_with_mnemonic (name) : gtk_menu_item_new_with_label (name);
1463 item = gtk_check_menu_item_new ();
1464 if (radio) gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM(item), TRUE);
1465 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(item),
status);
1469 item = gtk_menu_item_new ();
1471 gtk_container_add (GTK_CONTAINER(item), widg);
1506 GtkWidget * icon = NULL;
1510 icon = gtk_image_new_from_pixbuf ((GdkPixbuf*)item_image);
1514 icon = gtk_image_new_from_pixbuf (
convert_to_pixbuf ((cairo_surface_t *)item_image));
1516 icon = gtk_image_new_from_surface ((cairo_surface_t *)item_image);
1520 icon = gtk_image_new_from_file ((
const gchar *)item_image);
1553 int icon_format, gpointer item_icon,
1554 GCallback handler, gpointer data,
1555 gboolean accel, guint key, GdkModifierType mod,
1556 gboolean check, gboolean radio, gboolean
status)
1558 GtkWidget * item = NULL;
1559 GtkWidget * icon = NULL;
1560 GtkWidget *
lab = NULL;
1566 lab = gtk_accel_label_new (name);
1568 gtk_widget_set_size_request (
lab, -1, -1);
1569 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1570 gtk_accel_label_set_accel ((GtkAccelLabel *)
lab, key, mod);
1600 if (handler != NULL) g_signal_connect (G_OBJECT(item),
"activate", handler, data);
1601 if (menu != NULL) gtk_menu_shell_append ((GtkMenuShell *)menu, item);
1617GtkWidget *
add_advanced_item (GtkWidget * menu, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod)
1619 return gtk3_menu_item (menu,
"Advanced",
IMG_STOCK, (gpointer)
DPROPERTIES, handler, data, accel, key, mod, FALSE, FALSE, FALSE);
1631 gtk_menu_shell_append ((GtkMenuShell *)menu, gtk_separator_menu_item_new ());
1648 GtkWidget *
lab = gtk_label_new (
text);
1650 gtk_widget_set_size_request (
lab, dimx, dimy);
1651 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1665 ColRGBA * new_col = g_malloc0 (num*
sizeof*new_col);
1667 for (i=0; i<num; i++) new_col[i] =
col[i];
1719 g_object_set (renderer,
"foreground-rgba", & colo,
"foreground-set", TRUE, NULL);
1720 g_object_set(renderer,
"weight", PANGO_WEIGHT_BOLD,
"weight-set", TRUE, NULL);
1724 g_object_set(renderer,
"foreground-set", FALSE,
"weight", FALSE, NULL);
1747 gtk_button_set_child (but,
hbox);
1751 gtk_button_set_child (but,
img);
1771 gtk_label_set_xalign (GTK_LABEL(
lab),
ax);
1772 gtk_label_set_yalign (GTK_LABEL(
lab),
ay);
1773 gtk_widget_set_size_request (
lab, dimx, dimy);
1774 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1793 colorb = gtk_color_button_new_with_rgba (& colo);
1794 gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER(colorb), alpha);
1795 if (handler != NULL) g_signal_connect (G_OBJECT(colorb),
"color-set", handler, data);
1796 gtk_widget_set_size_request (colorb, dimx, dimy);
1811GtkWidget *
font_button (gchar * font,
int dimx,
int dimy, GCallback handler, gpointer data)
1813 GtkWidget * fontb = gtk_font_button_new_with_font (font);
1814 g_signal_connect (G_OBJECT(fontb),
"font-set", handler, data);
1815 gtk_widget_set_size_request (fontb, dimx, dimy);
1833GtkWidget *
spin_button (GCallback handler,
double value,
double start,
double end,
double step,
int digits,
int dim, gpointer data)
1835 GtkWidget *
spin = gtk_spin_button_new_with_range (start, end,
step);
1836 gtk_spin_button_set_digits (GTK_SPIN_BUTTON(
spin), digits);
1838 gtk_editable_set_alignment (GTK_EDITABLE(
spin), 1.0);
1840 gtk_entry_set_alignment (GTK_ENTRY(
spin), 1.0);
1842 gtk_spin_button_set_value (GTK_SPIN_BUTTON(
spin), value);
1843 gtk_widget_set_size_request (
spin, dim, -1);
1844 if (handler != NULL) g_signal_connect (G_OBJECT (
spin),
"value-changed", handler, data);
1858 return gtk_check_button_get_active (GTK_CHECK_BUTTON(button));
1860 return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button));
1875 gtk_check_button_set_active (GTK_CHECK_BUTTON(button),
status);
1877 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button),
status);
1893GtkWidget *
check_button (gchar *
text,
int dimx,
int dimy, gboolean state, GCallback handler, gpointer data)
1895 GtkWidget * but = gtk_check_button_new ();
1898 gchar *
label = g_strdup_printf (
" %s",
text);
1900 gtk_check_button_set_label (GTK_CHECK_BUTTON(but),
label);
1901 GtkWidget *
lab = gtk_widget_get_last_child (but);
1908 gtk_widget_set_size_request (but, dimx, dimy);
1910 if (handler != NULL) g_signal_connect (G_OBJECT(but),
"toggled", handler, data);
1926GtkWidget *
radio_button (gchar *
text,
int dimx,
int dimy, gboolean state, GCallback handler, gpointer data)
1930 but = gtk_toggle_button_new ();
1932 but = gtk_radio_button_new (NULL);
1935 gtk_widget_set_size_request (but, dimx, dimy);
1936 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(but), state);
1937 if (handler != NULL) g_signal_connect (G_OBJECT(but),
"toggled", handler, data);
1955GtkWidget *
create_button (gchar *
text,
int image_format, gchar *
image,
int dimx,
int dimy,
int relief, GCallback handler, gpointer data)
1959 but = (
text) ? gtk_button_new_with_label (
text) : gtk_button_new ();
1961 but = (
text && image_format ==
IMG_NONE) ? gtk_button_new_with_label (
text) : gtk_button_new ();
1964 gtk_widget_set_size_request (but, dimx, dimy);
1966 gtk_button_set_relief (GTK_BUTTON(but), relief);
1969 if (relief == GTK_RELIEF_NONE) gtk_button_set_has_frame (GTK_BUTTON(but), FALSE);
1971 if (handler != NULL)
1973 g_signal_connect (G_OBJECT (but),
"clicked", handler, data);
1989 gtk_image_set_from_icon_name (GTK_IMAGE(widg), icon);
1991 gtk_image_set_from_icon_name (GTK_IMAGE(widg), icon, GTK_ICON_SIZE_BUTTON);
2007 gchar * str = g_strdup_printf (
"<i><sub>%s</sub></i>", legend);
2099 scroll = gtk_scrolled_window_new ();
2101 scroll = gtk_scrolled_window_new (NULL, NULL);
2102 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scroll), shadow);
2104 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2105 gtk_widget_set_size_request (scroll, dimx, dimy);
2121 GtkWidget * expand = gtk_expander_new (name);
2123 if (file_img != NULL)
2125 GtkWidget *
img = gtk_image_new_from_file (file_img);
2126 gtk_widget_set_size_request (
img, 20, 20);
2130 gtk_expander_set_label_widget (GTK_EXPANDER(expand),
hbox);
2143 GtkCssProvider * provider = gtk_css_provider_new ();
2145#if GTK_MINOR_VERSION < 12
2146 gtk_css_provider_load_from_data (provider, css, -1);
2148 gtk_css_provider_load_from_string (provider, css);
2150 gtk_style_context_add_provider_for_display (gdk_display_get_default (),
2151 GTK_STYLE_PROVIDER(provider),
2152 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
2154 gtk_css_provider_load_from_data (provider, css, -1, NULL);
2155 gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
2156 GTK_STYLE_PROVIDER(provider),
2157 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
2159 g_object_unref (provider);
2173 if (GTK_IS_WIDGET(widg))
2177 gtk_widget_destroy (widg);
2203 gtk_window_destroy (GTK_WINDOW(dialog));
2221 gtk_native_dialog_destroy (dialog);
2222 g_object_unref (dialog);
2250 return gtk_file_chooser_get_files (chooser);
2260 return gtk_file_chooser_get_filenames (chooser);
2274 return g_file_get_parse_name (gtk_file_chooser_get_file (chooser));
2276 return gtk_file_chooser_get_filename (chooser);
2290 return g_file_get_parse_name (gtk_file_chooser_get_current_folder (chooser));
2292 return gtk_file_chooser_get_current_folder (chooser);
2306 GFile * default_file_for_saving = g_file_new_for_path (filename);
2307 gboolean
res = gtk_file_chooser_set_file (chooser, default_file_for_saving, NULL);
2310 gchar * str = g_strdup_printf (
"Impossible to locate file: %s", filename);
2326 gtk_file_chooser_set_current_folder (chooser, g_file_new_for_path (
"./"), NULL);
2328 gtk_file_chooser_set_current_folder (chooser,
"");
2343GtkFileChooserNative *
create_file_chooser (
const gchar * title, GtkWindow * parent, GtkFileChooserAction act,
const gchar * act_name)
2345 return gtk_file_chooser_native_new (title, parent, act, act_name,
"Cancel");
2358GtkWidget *
create_file_chooser (
const gchar * title, GtkWindow * parent, GtkFileChooserAction act,
const gchar * act_name)
2360 return gtk_file_chooser_dialog_new (title, parent, act,
"Cancel", GTK_RESPONSE_CANCEL, act_name, GTK_RESPONSE_ACCEPT, NULL);
2374 gtk_color_chooser_get_rgba (colob, &
col);
2388 gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(color_win), &
col);
2403 gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER(color_win), & colo);
2423 gtk_popover_set_has_arrow (GTK_POPOVER(
pop), FALSE);
2424 gtk_popover_set_pointing_to (GTK_POPOVER(
pop), & rect);
2425 gtk_popover_popup (GTK_POPOVER(
pop));
2439 gtk_menu_popup_at_pointer (GTK_MENU (widg), event);
2453 return (GtkWidget *)gtk_widget_get_root (widg);
2455 return gtk_widget_get_toplevel (widg);
2525 g_signal_connect (G_OBJECT (widg),
"close-request", handler, data);
2527 g_signal_connect (G_OBJECT (widg),
"delete-event", handler, data);
2541 return gtk_widget_get_allocated_width (widg);
2543 return gtk_widget_get_width (widg);
2557 return gtk_widget_get_allocated_height (widg);
2559 return gtk_widget_get_height (widg);
void label(cairo_t *cr, double val, int axe, int p, project *this_proj)
draw axis label
GMainLoop * Event_loop[5]
Global variable declarations Global convenience function declarations Global data structure defin...
GtkWidget * create_menu_item_from_widget(GtkWidget *widg, gboolean check, gboolean radio, gboolean status)
GtkWidget * gtk3_menu_item(GtkWidget *menu, gchar *name, int icon_format, gpointer item_icon, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod, gboolean check, gboolean radio, gboolean status)
GtkWidget * add_advanced_item(GtkWidget *menu, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod)
GtkWidget * create_menu_item(gboolean add_mnemo, gchar *action)
#define DEFAULT_FONT_SIZE
gchar * prepare_for_title(gchar *init)
prepare a string for a window title, getting rid of all markup
void add_menu_separator(GtkWidget *menu)
GtkWidget * menu_item_new_with_submenu(gchar *name, gboolean active, GtkWidget *sub_menu)
void motion(glwin *view, gint x, gint y, GdkModifierType state)
mouse motion in the OpenGL window
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
gboolean spin(gpointer data)
spin
GtkWidget * dialog_cancel_apply(gchar *title, GtkWidget *parent, gboolean resiz)
create a dialog modal offering a choice to apply something or not
GdkPixbuf * convert_to_pixbuf(cairo_surface_t *surf)
convert cairo surface to GdkPixbuf
void run_this_gtk_dialog(GtkWidget *dial, GCallback handler, gpointer data)
run a GTK (3 and 4) basic GtkDialog
void file_chooser_set_current_folder(GtkFileChooser *chooser)
set current folder in a GtkFilechooser
int combo_get_active(GtkWidget *combo)
retrieve the active item's position
GtkWidget * create_entry(GCallback handler, int dim, int cdim, gboolean key_release, gpointer data)
Create a GtkEntry.
void update_entry_double(GtkEntry *entry, double doubleval)
update the content of a GtkEntry as double
void set_renderer_color(int tocol, GtkCellRenderer *renderer, ColRGBA col)
set the color of a GtkCellRenderer
void append_comments(GtkWidget *vbox, gchar *symbol, gchar *legend)
append comments to a vertical box
void adjust_label(GtkWidget *lab, int dimx, int dimy, float ax, float ay)
adjust the text position, and widget size of a GtkLabel
ColRGBA gdkrgba_to_rgba(GdkRGBA colgdk)
convert GdkRGBA color to ColRGBA color
GtkWidget * font_button(gchar *font, int dimx, int dimy, GCallback handler, gpointer data)
create a font selection button
GtkWidget * create_text_view(int dimx, int dimy, int edit, int mono, GCallback handler, gpointer data, gchar *text)
create a GtkTextView and display some text
GtkTextBuffer * add_buffer(GCallback handler, gpointer data, gchar *text)
create a GtkTextBuffer
GtkWidget * create_scroll(GtkWidget *box, int dimx, int dimy, int shadow)
create a scroll window
GtkWidget * dialogmodal(gchar *str, GtkWindow *parent)
Create a new dialog modal window.
void set_color_chooser_color(GtkWidget *color_win, ColRGBA col)
set the color of a color selection window
gboolean is_the_widget_visible(GtkWidget *widg)
test if a GtkWidget exist, then return if it is visible or not
void resize_this_window(GtkWidget *window, int x, int y)
resize this GtkWindow
GtkWidget * create_win(gchar *str, GtkWidget *parent, gboolean modal, gboolean resiz)
create a new GtkWindow
void combo_set_markup(GtkWidget *combo)
use pango markup in combo widget
ColRGBA get_window_color(GtkWidget *color_win)
get the ColRGBA color from a color selection window
void combo_set_active(GtkWidget *combo, int pos)
set the active item's position
GtkWidget * add_vbox_to_layout(GtkWidget *layout, int size_x, int size_y)
Insert a vertical GtkBox in a GtkLatout then send back the GtkBox.
int get_widget_height(GtkWidget *widg)
retrive GtkWidget height
gchar * file_chooser_get_file_name(GtkFileChooser *chooser)
get a file name from a GtkFileChooser (single file selected)
const gchar * entry_get_text(GtkEntry *entry)
get the text in a GtkEntry
GdkRGBA colrgba_togtkrgba(ColRGBA col)
convert ColRGBA color to GdkRGBA color
void update_entry_int(GtkEntry *entry, int intval)
update the content of a GtkEntry as int
G_MODULE_EXPORT gboolean hide_this_window(GtkWidget *win, GdkEvent *event, gpointer data)
hide a GtkWindow
void pop_menu_at_pointer(GtkWidget *widg, GdkEvent *event)
popup a menu at pointer location
gboolean file_chooser_set_file_name(GtkFileChooser *chooser, gchar *filename)
set file name in a GtkFilechooser
G_MODULE_EXPORT gboolean destroy_this_window(GtkWidget *win, GdkEvent *event, gpointer data)
destroy a GtkWindow
GtkWidget * stock_image(const gchar *stock_id)
create a GtkImage for the Gtk database
int get_widget_width(GtkWidget *widg)
retrive GtkWidget width
void add_gtk_close_event(GtkWidget *widg, GCallback handler, gpointer data)
add a close event signal and callback to a GtkWidget
GtkWidget * create_vscale(float min, float max, float delta, float val, int pos, int round, int size, GCallback handler, GCallback scroll_handler, gpointer data)
create an vertical scale GtkWidget
void layout_add_widget(GtkWidget *layout, GtkWidget *child, int x_pos, int y_pos)
Add a GtkWidget in a GtkLayout.
void button_set_status(GtkWidget *button, int status)
set status of check / toggle button
GtkWidget * fbox(GtkWidget *box, char *lab)
box creating routine, to help design faster elements for the GUI
gchar * file_chooser_get_current_folder(GtkFileChooser *chooser)
get the current folder for a GtkFileChooser
GtkWidget * radio_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a radio button
GtkWidget * spin_button(GCallback handler, double value, double start, double end, double step, int digits, int dim, gpointer data)
create a spin button
GtkWidget * check_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a check button
G_MODULE_EXPORT void to_activate_entry(GtkEventControllerFocus *focus, gpointer data)
GtkEntry activate signal managment.
GtkWidget * create_button(gchar *text, int image_format, gchar *image, int dimx, int dimy, int relief, GCallback handler, gpointer data)
create a simple button
GtkWidget * get_top_level(GtkWidget *widg)
get the top level container, window, of a widget
GtkWidget * create_combo()
create a GtkCombox widget, note deprecated in GTK4
GtkWidget * dialog_get_content_area(GtkWidget *widg)
prepare GtkWidget to insert content in a GtkDialog window
void button_set_image(GtkButton *but, gchar *text, int format, gpointer image)
Add an image to a GtkButton.
GtkWidget * markup_label(gchar *text, int dimx, int dimy, float ax, float ay)
create a GtkLabel with pango markup
GtkWidget * cbox(GtkWidget *box, char *lab)
box creating routine, to help design faster elements for the GUI
void add_box_child_start(int orientation, GtkWidget *widg, GtkWidget *child, gboolean expand, gboolean fill, int padding)
Add a GtkWidget in a GtkBox at the initial position.
ColRGBA get_button_color(GtkColorChooser *colob)
get the ColRGBA color from a GtkColorChooser button
void widget_set_sensitive(GtkWidget *widg, gboolean sensitive)
Set sensitivity for a GtkWidget, ensuring it is a GtkWidget.
void destroy_this_dialog(GtkDialog *dialog)
destroy a GtkDialog
void text_view_set_monospace(GtkWidget *view)
set the font of a GtkTextView as monospace
GtkWidget * create_hbox(int spacing)
create a GtkBox with horizontal orientation
GtkWidget * new_gtk_window()
create a new GtkWindow
GtkWidget * create_image_from_data(int format, gpointer item_image)
create Gtk image for data
void gtk_label_align(GtkWidget *lab, float ax, float ay)
set text alignment in a GtkLabel
void combo_text_append(GtkWidget *combo, gchar *text)
append text in GtkComboBox widget
G_MODULE_EXPORT void run_destroy_dialog(GtkDialog *dialog, gint response_id, gpointer data)
to destroy a GtkDialog when the dialog emit the closing signal
GtkWidget * create_layout(int x, int y)
create a GtkLayout / GtkFixed widget
GtkWidget * destroy_this_widget(GtkWidget *widg)
destroy a GtkWidget
GtkWidget * color_button(ColRGBA col, gboolean alpha, int dimx, int dimy, GCallback handler, gpointer data)
create a color selection button
GtkWidget * create_hscale(float min, float max, float delta, float val, int pos, int round, int size, GCallback handler, GCallback scroll_handler, gpointer data)
create an horizontal scale GtkWidget
GtkWidget * bbox(GtkWidget *box, char *lab)
box creating routine, to help design faster elements for the GUI
void add_box_child_end(GtkWidget *widg, GtkWidget *child, gboolean expand, gboolean fill, int padding)
Add a GtkWidget in a GtkBox at the end position.
void update_entry_text(GtkEntry *entry, gchar *text)
update the content of a GtkEntry as string
void provide_gtk_css(gchar *css)
create a css provider based on the css data
GSList * file_chooser_get_file_names(GtkFileChooser *chooser)
create a file list from files selected using a GtkFileChooser
void setup_text_tags(GtkTextBuffer *buffer)
prepare the available text tags for the GtkTextBuffer
void add_container_child(int type, GtkWidget *widg, GtkWidget *child)
Add a GtkWidget into another GtkWidget.
void set_image_from_icon_name(GtkWidget *widg, gchar *icon)
set a image from a stock icon name
GtkWidget * message_dialogmodal(gchar *message, gchar *title, GtkMessageType mtype, GtkButtonsType buttons, GtkWidget *parent)
create a modal (cannot be ignored) message window
void combo_text_prepend(GtkWidget *combo, gchar *text)
prepend text in GtkComboBox widget
void hide_the_widgets(GtkWidget *widg)
hide GtkWidget
GtkWidget * create_vbox(int spacing)
create a GtkBox with vertical orientation
ColRGBA * duplicate_color(int num, ColRGBA *col)
duplicate a ColRGBA pointer
int button_get_status(GtkWidget *button)
get status of check / toggle button
GtkWidget * abox(GtkWidget *box, char *lab, int vspace)
box creating routine, to help design faster elements for the GUI
GtkWidget * create_expander(gchar *name, gchar *file_img)
create GtkExpander
GtkWidget * create_file_chooser(const gchar *title, GtkWindow *parent, GtkFileChooserAction act, const gchar *act_name)
create a GtkFileChooser, utility to select file(s)
void destroy_this_native_dialog(GtkNativeDialog *dialog)
destroy a GtkNativeDialog
void adjust_preferences_window()
adjust the widgets of the preferences window
void show_the_widgets(GtkWidget *widg)
show GtkWidget
void update_entry_long_double(GtkEntry *entry, double doubleval)
update the content of a GtkEntry as long double
void show_error(char *error, int val, GtkWidget *win)
show error message
Messaging function declarations.
Preference variable declarations.