185 if (GTK_IS_WIDGET(widg))
187 return gtk_widget_is_visible (widg);
206 if (GTK_IS_WIDGET(widg))
209 gtk_widget_set_visible (widg, TRUE);
211 gtk_widget_show_all (widg);
228 if (GTK_IS_WIDGET(widg))
231 gtk_widget_set_visible (widg, FALSE);
233 gtk_widget_hide (widg);
251 if (GTK_IS_WIDGET(widg))
253 gtk_widget_set_sensitive (widg, sensitive);
270 gtk_container_add (GTK_CONTAINER(widg), child);
276 gtk_window_set_child ((GtkWindow *)widg, child);
284 gtk_scrolled_window_set_child ((GtkScrolledWindow *)widg, NULL);
285 gtk_scrolled_window_set_child ((GtkScrolledWindow *)widg, child);
289 gtk_viewport_set_child ((GtkViewport *)widg, child);
293 gtk_button_set_child ((GtkButton *)widg, child);
297 gtk_frame_set_child ((GtkFrame *)widg, child);
301 gtk_expander_set_child ((GtkExpander *)widg, child);
318void add_box_child_end (GtkWidget * widg, GtkWidget * child, gboolean expand, gboolean fill,
int padding)
322 gtk_box_append (GTK_BOX(widg), child);
324 gtk_box_pack_end (GTK_BOX(widg), child, expand, fill, padding);
340void add_box_child_start (
int orientation, GtkWidget * widg, GtkWidget * child, gboolean expand, gboolean fill,
int padding)
343 if (orientation == GTK_ORIENTATION_HORIZONTAL && padding)
345 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", padding, -1, 0.0, 0.0));
347 else if (orientation == GTK_ORIENTATION_VERTICAL && padding > 10)
349 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", -1, padding/2, 0.0, 0.0));
351 gtk_box_append (GTK_BOX(widg), child);
352 if (orientation == GTK_ORIENTATION_HORIZONTAL && padding)
354 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", padding, -1, 0.0, 0.0));
356 else if (orientation == GTK_ORIENTATION_VERTICAL && padding > 10)
358 gtk_box_append (GTK_BOX(widg),
markup_label (
" ", -1, padding/2, 0.0, 0.0));
361 gtk_box_pack_start (GTK_BOX(widg), child, expand, fill, padding);
378 gtk_menu_item_set_submenu ((GtkMenuItem *)item, sub_menu);
392 return gtk_window_new ();
394 return gtk_window_new (GTK_WINDOW_TOPLEVEL);
426void add_widget_gesture_and_key_action (GtkWidget * widget,
427 gchar * cp_name, GCallback cp_handler, gpointer cp_data,
428 gchar * cr_name, GCallback cr_handler, gpointer cr_data,
429 gchar * kp_name, GCallback kp_handler, gpointer kp_data,
430 gchar * mo_name, GCallback mo_handler, gpointer mo_data,
431 gchar * sc_name, GCallback sc_handler, gpointer sc_data)
433 GtkGesture * gesture;
434 GtkEventController * key;
435 GtkEventController *
motion;
438 gesture = gtk_gesture_click_new ();
439 gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), cp_name);
440 gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
441 if (cp_handler) g_signal_connect (gesture,
"pressed", cp_handler, cp_data);
442 gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
446 gesture = gtk_gesture_click_new ();
447 gtk_event_controller_set_name (GTK_EVENT_CONTROLLER (gesture), cr_name);
448 gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
449 if (cr_handler) g_signal_connect (gesture,
"released", cr_handler, cr_data);
450 gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
454 key = gtk_event_controller_key_new ();
455 gtk_event_controller_set_name (key, kp_name);
456 if (kp_handler) g_signal_connect (key,
"key-pressed", kp_handler, kp_data);
457 gtk_widget_add_controller (widget, key);
461 motion = gtk_event_controller_motion_new ();
462 gtk_event_controller_set_name (
motion, mo_name);
463 if (mo_handler) g_signal_connect (
motion,
"motion", mo_handler, mo_data);
464 gtk_widget_add_controller (widget,
motion);
468 motion = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL);
469 gtk_event_controller_set_name (
motion, sc_name);
470 if (sc_handler) g_signal_connect (
motion,
"scroll", sc_handler, sc_data);
471 gtk_widget_add_controller (widget,
motion);
486GtkWidget *
create_win (gchar * str, GtkWidget * parent, gboolean modal, gboolean resiz)
491 gtk_window_set_resizable (GTK_WINDOW (win), TRUE);
493 gtk_window_set_attached_to (GTK_WINDOW (win), parent);
494 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
497 gtk_window_set_modal (GTK_WINDOW(win), modal);
498 gtk_window_set_resizable (GTK_WINDOW(win), resiz);
499 gtk_window_set_destroy_with_parent (GTK_WINDOW (win), TRUE);
513void run_this_gtk_native_dialog (GtkNativeDialog * dial, GCallback handler, gpointer data)
515 gtk_native_dialog_set_modal (dial, TRUE);
516 if (handler) g_signal_connect (G_OBJECT(dial),
"response", handler, data);
517 gtk_native_dialog_show (dial);
535 gtk_window_set_modal (GTK_WINDOW(dial), TRUE);
536 if (handler) g_signal_connect (G_OBJECT(dial),
"response", handler, data);
554 GtkWidget * win = gtk_dialog_new_with_buttons (str, parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _(
"_Close"), GTK_RESPONSE_CLOSE, NULL);
555 gtk_window_set_resizable (GTK_WINDOW (win), FALSE);
557 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
573GtkWidget *
message_dialogmodal (gchar * message, gchar * title, GtkMessageType mtype, GtkButtonsType buttons, GtkWidget * parent)
578 win = gtk_message_dialog_new (GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, mtype, buttons, NULL);
582 win = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, mtype, buttons, NULL);
584 gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (win), message);
586 GtkWidget * content_area = gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(win));
589 label = gtk_widget_get_first_child(content_area);
591 GList * children = gtk_container_get_children(GTK_CONTAINER(content_area));
592 label = GTK_WIDGET(children -> data);
593 g_list_free(children);
595 gtk_label_set_use_markup (GTK_LABEL(label), TRUE);
596 gtk_label_set_selectable(GTK_LABEL(label), TRUE);
598 gtk_window_set_title (GTK_WINDOW(win), title);
599 gtk_window_set_resizable (GTK_WINDOW (win), FALSE);
601 gtk_window_set_icon (GTK_WINDOW (win),
THETD);
618 GtkWidget * dca = gtk_dialog_new_with_buttons (title, GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
619 _(
"Cancel"), GTK_RESPONSE_CANCEL, _(
"Apply"), GTK_RESPONSE_APPLY, NULL);
620 gtk_window_set_resizable (GTK_WINDOW(dca), resiz);
622 gtk_window_set_icon (GTK_WINDOW (dca),
THETD);
639 gtk_window_resize (GTK_WINDOW(window),
x,
y);
641 gtk_window_set_default_size (GTK_WINDOW(window),
x,
y);
655 return gtk_editable_get_text (GTK_EDITABLE(entry));
657 return gtk_entry_get_text (entry);
671 gchar * value = g_strdup_printf(
"%d", intval);
673 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
675 gtk_entry_set_text (entry, (
const gchar *)value);
690 gchar * value = g_strdup_printf(
"%f", doubleval);
692 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
694 gtk_entry_set_text (entry, (
const gchar *)value);
709 gchar * value = g_strdup_printf(
"%15.10lf", doubleval);
711 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)value);
713 gtk_entry_set_text (entry, (
const gchar *)value);
729 gtk_editable_set_text (GTK_EDITABLE(entry), (
const gchar *)
text);
731 gtk_entry_set_text (entry, (
const gchar *)
text);
744 gtk_text_view_set_monospace (GTK_TEXT_VIEW(view), TRUE);
758 gtk_label_set_xalign (GTK_LABEL (
lab),
ax);
759 gtk_label_set_yalign (GTK_LABEL (
lab),
ay);
781 float val,
int pos,
int round,
int size,
782 GCallback handler, GCallback scroll_handler, gpointer data)
785 hscale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
min,
max, delta);
786 gtk_scale_set_draw_value (GTK_SCALE(hscale), TRUE);
787 gtk_widget_set_size_request (hscale, size, -1);
788 gtk_scale_set_value_pos (GTK_SCALE(hscale), pos);
789 gtk_range_set_value (GTK_RANGE(hscale),
val);
790 gtk_range_set_round_digits (GTK_RANGE(hscale), round);
791 if (handler != NULL) g_signal_connect (G_OBJECT(hscale),
"value-changed", handler, data);
792 if (scroll_handler != NULL) g_signal_connect (G_OBJECT(hscale),
"change-value", scroll_handler, data);
815 float val,
int pos,
int round,
int size,
816 GCallback handler, GCallback scroll_handler, gpointer data)
819 vscale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
min,
max, delta);
820 gtk_scale_set_draw_value (GTK_SCALE(vscale), TRUE);
821 gtk_scale_set_value_pos (GTK_SCALE(vscale), pos);
822 gtk_widget_set_size_request (vscale, size, size);
823 gtk_range_set_value (GTK_RANGE(vscale),
val);
824 gtk_range_set_round_digits (GTK_RANGE(vscale), round);
825 if (handler != NULL) g_signal_connect (G_OBJECT(vscale),
"value-changed", handler, data);
826 if (scroll_handler != NULL) g_signal_connect (G_OBJECT(vscale),
"change-value", scroll_handler, data);
839 return gtk_box_new (GTK_ORIENTATION_VERTICAL, spacing);
851 return gtk_box_new (GTK_ORIENTATION_HORIZONTAL, spacing);
864 return gtk_dialog_get_content_area (GTK_DIALOG(widg));
867 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, gtk_dialog_get_content_area (GTK_DIALOG(widg)),
vbox, TRUE, TRUE, 0);
885 gtk_layout_put (GTK_LAYOUT(
layout), child, x_pos, y_pos);
887 gtk_fixed_put (GTK_FIXED(
layout), child, x_pos, y_pos);
903 gtk_widget_set_size_request (
vbox, size_x, size_y);
920 layout = gtk_layout_new (NULL, NULL);
922 layout = gtk_fixed_new ();
924 gtk_widget_set_size_request (
layout,
x,
y);
937 return gtk_combo_box_get_active ((GtkComboBox *)combo);
960 gtk_combo_box_set_active ((GtkComboBox *)combo, pos);
972 GList * cell_list = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(combo));
973 if (cell_list && cell_list -> data)
975 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell_list -> data,
"markup", 0, NULL);
989 gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(combo),
text);
1002 gtk_combo_box_text_prepend_text (GTK_COMBO_BOX_TEXT(combo),
text);
1012 return gtk_combo_box_text_new ();
1024 GtkTextTagTable * textags = gtk_text_buffer_get_tag_table(buffer);
1027 tag = gtk_text_tag_new (
"sans");
1029 gtk_text_tag_table_add (textags,
tag);
1030 g_object_unref (
tag);
1033 tag = gtk_text_tag_new (
"monospace");
1035 gtk_text_tag_table_add (textags,
tag);
1036 g_object_unref (
tag);
1039 tag = gtk_text_tag_new (
"default-size");
1041 gtk_text_tag_table_add (textags,
tag);
1042 g_object_unref (
tag);
1045 tag = gtk_text_tag_new (
"underline");
1046 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"underline", PANGO_UNDERLINE_SINGLE, NULL);
1047 gtk_text_tag_table_add (textags,
tag);
1048 g_object_unref (
tag);
1051 tag = gtk_text_tag_new (
"underline_double");
1052 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"underline", PANGO_UNDERLINE_DOUBLE, NULL);
1053 gtk_text_tag_table_add (textags,
tag);
1054 g_object_unref (
tag);
1057 tag = gtk_text_tag_new (
"italic");
1058 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"style", PANGO_STYLE_ITALIC, NULL);
1059 gtk_text_tag_table_add (textags,
tag);
1060 g_object_unref (
tag);
1063 tag = gtk_text_tag_new (
"bold");
1064 g_object_set (
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"weight", PANGO_WEIGHT_BOLD, NULL);
1065 gtk_text_tag_table_add (textags,
tag);
1066 g_object_unref (
tag);
1069 tag = gtk_text_tag_new (
"bold_italic");
1071 "style", PANGO_STYLE_ITALIC,
1072 "weight", PANGO_WEIGHT_BOLD, NULL);
1073 gtk_text_tag_table_add (textags,
tag);
1074 g_object_unref (
tag);
1077 tag = gtk_text_tag_new (
"sup");
1079 gtk_text_tag_table_add (textags,
tag);
1080 g_object_unref (
tag);
1083 tag = gtk_text_tag_new (
"sub");
1085 gtk_text_tag_table_add (textags,
tag);
1086 g_object_unref (
tag);
1089 tag = gtk_text_tag_new(
"justify-left");
1090 g_object_set(
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"justification", GTK_JUSTIFY_LEFT, NULL);
1091 gtk_text_tag_table_add(textags,
tag);
1092 g_object_unref(
tag);
1095 tag = gtk_text_tag_new(
"justify-center");
1096 g_object_set(
tag,
"size",
DEFAULT_FONT_SIZE * PANGO_SCALE,
"justification", GTK_JUSTIFY_CENTER, NULL);
1097 gtk_text_tag_table_add(textags,
tag);
1098 g_object_unref(
tag);
1101 tag = gtk_text_tag_new(
"justify-right");
1102 g_object_set(
tag,
"justification", GTK_JUSTIFY_RIGHT, NULL);
1103 gtk_text_tag_table_add(textags,
tag);
1104 g_object_unref (
tag);
1107 tag = gtk_text_tag_new(
"heading");
1109 "weight", PANGO_WEIGHT_BOLD,
1111 "justification", GTK_JUSTIFY_CENTER,
1112 "underline", PANGO_UNDERLINE_DOUBLE, NULL);
1113 gtk_text_tag_table_add(textags,
tag);
1114 g_object_unref (
tag);
1117 tag = gtk_text_tag_new(
"red");
1119 gtk_text_tag_table_add(textags,
tag);
1120 g_object_unref (
tag);
1123 tag = gtk_text_tag_new(
"orange");
1125 gtk_text_tag_table_add(textags,
tag);
1126 g_object_unref (
tag);
1129 tag = gtk_text_tag_new(
"yellow");
1131 gtk_text_tag_table_add(textags,
tag);
1132 g_object_unref (
tag);
1135 tag = gtk_text_tag_new(
"green");
1137 gtk_text_tag_table_add(textags,
tag);
1138 g_object_unref (
tag);
1141 tag = gtk_text_tag_new(
"light_green");
1143 gtk_text_tag_table_add(textags,
tag);
1144 g_object_unref (
tag);
1147 tag = gtk_text_tag_new(
"cyan");
1149 gtk_text_tag_table_add(textags,
tag);
1150 g_object_unref (
tag);
1153 tag = gtk_text_tag_new(
"blue");
1155 gtk_text_tag_table_add(textags,
tag);
1156 g_object_unref (
tag);
1159 tag = gtk_text_tag_new(
"pink");
1161 gtk_text_tag_table_add(textags,
tag);
1162 g_object_unref (
tag);
1165 tag = gtk_text_tag_new(
"violet");
1167 gtk_text_tag_table_add(textags,
tag);
1168 g_object_unref (
tag);
1171 tag = gtk_text_tag_new(
"grey_back");
1173 gtk_text_tag_table_add(textags,
tag);
1174 g_object_unref (
tag);
1177 tag = gtk_text_tag_new(
"bold_grey_back");
1179 "background",
"lightgrey",
1180 "weight", PANGO_WEIGHT_BOLD, NULL);
1181 gtk_text_tag_table_add(textags,
tag);
1182 g_object_unref (
tag);
1185 tag = gtk_text_tag_new (
"bold_red");
1187 "foreground",
"red",
1188 "weight", PANGO_WEIGHT_BOLD, NULL);
1189 gtk_text_tag_table_add (textags,
tag);
1190 g_object_unref (
tag);
1193 tag = gtk_text_tag_new (
"bold_blue");
1195 "foreground",
"blue",
1196 "weight", PANGO_WEIGHT_BOLD, NULL);
1197 gtk_text_tag_table_add (textags,
tag);
1198 g_object_unref (
tag);
1201 tag = gtk_text_tag_new (
"bold_green");
1203 "foreground",
"green",
1204 "weight", PANGO_WEIGHT_BOLD, NULL);
1205 gtk_text_tag_table_add (textags,
tag);
1206 g_object_unref (
tag);
1209 tag = gtk_text_tag_new (
"bold_orange");
1211 "foreground",
"orange",
1212 "weight", PANGO_WEIGHT_BOLD, NULL);
1213 gtk_text_tag_table_add (textags,
tag);
1214 g_object_unref (
tag);
1217 tag = gtk_text_tag_new (
"bold_pink");
1219 "foreground",
"pink",
1220 "weight", PANGO_WEIGHT_BOLD, NULL);
1221 gtk_text_tag_table_add (textags,
tag);
1222 g_object_unref (
tag);
1225 tag = gtk_text_tag_new (
"sub_italic");
1227 "style", PANGO_STYLE_ITALIC,
1228 "scale", .6,
"rise", -6000, NULL);
1229 gtk_text_tag_table_add (textags,
tag);
1230 g_object_unref (
tag);
1233 tag = gtk_text_tag_new (
"sub_bold");
1235 "weight", PANGO_WEIGHT_BOLD,
1236 "scale", .6,
"rise", -6000, NULL);
1237 gtk_text_tag_table_add (textags,
tag);
1238 g_object_unref (
tag);
1241 tag = gtk_text_tag_new (
"sup_bold");
1243 "weight", PANGO_WEIGHT_BOLD,
1244 "scale", .6,
"rise", 6000, NULL);
1245 gtk_text_tag_table_add (textags,
tag);
1246 g_object_unref (
tag);
1260 GtkTextBuffer * buffer;
1263 buffer = gtk_text_buffer_new (NULL);
1265 gtk_text_buffer_get_start_iter (buffer, &bStart);
1266 gtk_text_buffer_get_end_iter (buffer, &bEnd);
1267 gtk_text_buffer_delete (buffer, &bStart, &bEnd);
1268 if (
text != NULL) gtk_text_buffer_set_text (buffer,
text, -1);
1269 if (handler != NULL) g_signal_connect (G_OBJECT (buffer),
"changed", handler, data);
1286GtkWidget *
create_text_view (
int dimx,
int dimy,
int edit,
int mono, GCallback handler, gpointer data, gchar *
text)
1288 GtkWidget * tview = gtk_text_view_new ();
1289 gtk_text_view_set_buffer (GTK_TEXT_VIEW(tview),
add_buffer(handler, data,
text));
1290 gtk_widget_set_size_request (tview, dimx, dimy);
1291 gtk_text_view_set_editable (GTK_TEXT_VIEW(tview), edit);
1308static void convert_alpha (cairo_surface_t * surf, GdkPixbuf *
pix,
int src_x,
int src_y,
int width,
int height)
1311 guchar * src_data = cairo_image_surface_get_data (surf);
1312 int src_stride = cairo_image_surface_get_stride (surf);
1313 guchar * dest_data = gdk_pixbuf_get_pixels (
pix);
1314 int dest_stride = gdk_pixbuf_get_rowstride (
pix);
1316 src_data += src_stride * src_y + src_x * 4;
1318 for (
y = 0;
y < height;
y++) {
1319 guint32 *src = (guint32 *) src_data;
1321 for (
x = 0;
x < width;
x++) {
1322 guint alpha = src[
x] >> 24;
1326 dest_data[
x * 4 + 0] = 0;
1327 dest_data[
x * 4 + 1] = 0;
1328 dest_data[
x * 4 + 2] = 0;
1332 dest_data[
x * 4 + 0] = (((src[
x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
1333 dest_data[
x * 4 + 1] = (((src[
x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
1334 dest_data[
x * 4 + 2] = (((src[
x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
1336 dest_data[
x * 4 + 3] = alpha;
1339 src_data += src_stride;
1340 dest_data += dest_stride;
1353 int width = cairo_image_surface_get_width (surf);
1354 int height = cairo_image_surface_get_height (surf);
1355 GdkPixbuf *
pix = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width , height);
1356 convert_alpha (surf,
pix, 0, 0, width, height);
1370G_MODULE_EXPORT gboolean
to_activate_entry (GtkWidget * widg, GdkEventFocus * event, gpointer data)
1372 g_signal_emit_by_name (G_OBJECT(widg),
"activate", data);
1386 g_signal_emit_by_name (G_OBJECT(gtk_event_controller_get_widget((GtkEventController *)focus)),
"activate", data);
1401GtkWidget *
create_entry (GCallback handler,
int dim,
int cdim, gboolean key_release, gpointer data)
1403 GtkWidget * entry = gtk_entry_new ();
1404 gtk_widget_set_size_request (entry, dim, -1);
1406 gtk_editable_set_width_chars (GTK_EDITABLE(entry), 0);
1407 gtk_editable_set_max_width_chars (GTK_EDITABLE(entry), cdim);
1409 gtk_entry_set_width_chars (GTK_ENTRY(entry), 0);
1410 gtk_entry_set_max_width_chars (GTK_ENTRY(entry), cdim);
1412 gtk_entry_set_alignment (GTK_ENTRY(entry), 1.0);
1414 if (handler != NULL)
1416 g_signal_connect (G_OBJECT (entry),
"activate", handler, data);
1418 g_signal_connect (G_OBJECT (entry),
"focus-out-event", G_CALLBACK(
to_activate_entry), data);
1427 GtkEventController * focus = gtk_event_controller_focus_new ();
1428 gtk_event_controller_set_name (focus,
"focus-out");
1429 g_signal_connect (G_OBJECT(focus),
"leave", G_CALLBACK(
to_activate_entry), data);
1430 gtk_widget_add_controller (entry, focus);
1436 g_signal_connect (G_OBJECT (entry),
"key-release-event", G_CALLBACK(
to_activate_entry), data);
1454 return gtk_image_new_from_icon_name (stock_id);
1456 return gtk_image_new_from_icon_name (stock_id, GTK_ICON_SIZE_MENU);
1471 return (add_mnemo) ? gtk_menu_item_new_with_mnemonic (name) : gtk_menu_item_new_with_label (name);
1489 item = gtk_check_menu_item_new ();
1490 if (radio) gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM(item), TRUE);
1491 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(item),
status);
1495 item = gtk_menu_item_new ();
1497 gtk_container_add (GTK_CONTAINER(item), widg);
1532 GtkWidget * icon = NULL;
1536 icon = gtk_image_new_from_pixbuf ((GdkPixbuf*)item_image);
1540 icon = gtk_image_new_from_pixbuf (
convert_to_pixbuf ((cairo_surface_t *)item_image));
1542 icon = gtk_image_new_from_surface ((cairo_surface_t *)item_image);
1546 icon = gtk_image_new_from_file ((
const gchar *)item_image);
1579 int icon_format, gpointer item_icon,
1580 GCallback handler, gpointer data,
1581 gboolean accel, guint key, GdkModifierType mod,
1582 gboolean check, gboolean radio, gboolean
status)
1584 GtkWidget * item = NULL;
1585 GtkWidget * icon = NULL;
1586 GtkWidget *
lab = NULL;
1592 lab = gtk_accel_label_new (name);
1594 gtk_widget_set_size_request (
lab, -1, -1);
1595 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1596 gtk_accel_label_set_accel ((GtkAccelLabel *)
lab, key, mod);
1626 if (handler != NULL) g_signal_connect (G_OBJECT(item),
"activate", handler, data);
1627 if (menu != NULL) gtk_menu_shell_append ((GtkMenuShell *)menu, item);
1643GtkWidget *
add_advanced_item (GtkWidget * menu, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod)
1645 return gtk3_menu_item (menu, _(
"Advanced"),
IMG_STOCK, (gpointer)
DPROPERTIES, handler, data, accel, key, mod, FALSE, FALSE, FALSE);
1657 gtk_menu_shell_append ((GtkMenuShell *)menu, gtk_separator_menu_item_new ());
1674 GtkWidget *
lab = gtk_label_new (
text);
1676 gtk_widget_set_size_request (
lab, dimx, dimy);
1677 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1691 ColRGBA * new_col = g_malloc0(num*
sizeof*new_col);
1693 for (i=0; i<num; i++) new_col[i] =
col[i];
1707 col.red = colgdk.red;
1708 col.green = colgdk.green;
1709 col.blue = colgdk.blue;
1710 col.alpha = colgdk.alpha;
1725 colo.green =
col.green;
1726 colo.blue =
col.blue;
1727 colo.alpha =
col.alpha;
1745 g_object_set (renderer,
"foreground-rgba", & colo,
"foreground-set", TRUE, NULL);
1746 g_object_set(renderer,
"weight", PANGO_WEIGHT_BOLD,
"weight-set", TRUE, NULL);
1750 g_object_set(renderer,
"foreground-set", FALSE,
"weight", FALSE, NULL);
1767 gtk_tree_model_get (mod, iter,
col, & str, -1);
1768 g_object_set (renderer,
"markup", str, NULL, NULL);
1791 gtk_button_set_child (but,
hbox);
1795 gtk_button_set_child (but,
img);
1815 gtk_label_set_xalign (GTK_LABEL(
lab),
ax);
1816 gtk_label_set_yalign (GTK_LABEL(
lab),
ay);
1817 gtk_widget_set_size_request (
lab, dimx, dimy);
1818 gtk_label_set_use_markup (GTK_LABEL(
lab), TRUE);
1837 colorb = gtk_color_button_new_with_rgba (& colo);
1838 gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER(colorb), alpha);
1839 if (handler != NULL) g_signal_connect (G_OBJECT(colorb),
"color-set", handler, data);
1840 gtk_widget_set_size_request (colorb, dimx, dimy);
1855GtkWidget *
font_button (gchar * font,
int dimx,
int dimy, GCallback handler, gpointer data)
1857 GtkWidget * fontb = gtk_font_button_new_with_font (font);
1858 g_signal_connect (G_OBJECT(fontb),
"font-set", handler, data);
1859 gtk_widget_set_size_request (fontb, dimx, dimy);
1877GtkWidget *
spin_button (GCallback handler,
double value,
double start,
double end,
double step,
int digits,
int dim, gpointer data)
1879 GtkWidget *
spin = gtk_spin_button_new_with_range (start, end,
step);
1880 gtk_spin_button_set_digits (GTK_SPIN_BUTTON(
spin), digits);
1882 gtk_editable_set_alignment (GTK_EDITABLE(
spin), 1.0);
1884 gtk_entry_set_alignment (GTK_ENTRY(
spin), 1.0);
1886 gtk_spin_button_set_value (GTK_SPIN_BUTTON(
spin), value);
1887 gtk_widget_set_size_request (
spin, dim, -1);
1888 if (handler != NULL) g_signal_connect (G_OBJECT (
spin),
"value-changed", handler, data);
1902 return gtk_check_button_get_active (GTK_CHECK_BUTTON(button));
1904 return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button));
1919 gtk_check_button_set_active (GTK_CHECK_BUTTON(button),
status);
1921 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button),
status);
1937GtkWidget *
check_button (gchar *
text,
int dimx,
int dimy, gboolean state, GCallback handler, gpointer data)
1939 GtkWidget * but = gtk_check_button_new ();
1942 gchar * label = g_strdup_printf (
" %s",
text);
1944 gtk_check_button_set_label (GTK_CHECK_BUTTON(but), label);
1945 GtkWidget *
lab = gtk_widget_get_last_child (but);
1952 gtk_widget_set_size_request (but, dimx, dimy);
1954 if (handler != NULL) g_signal_connect (G_OBJECT(but),
"toggled", handler, data);
1970GtkWidget *
radio_button (gchar *
text,
int dimx,
int dimy, gboolean state, GCallback handler, gpointer data)
1974 but = gtk_toggle_button_new ();
1976 but = gtk_radio_button_new (NULL);
1979 gtk_widget_set_size_request (but, dimx, dimy);
1980 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(but), state);
1981 if (handler != NULL) g_signal_connect (G_OBJECT(but),
"toggled", handler, data);
1999GtkWidget *
create_button (gchar *
text,
int image_format, gchar *
image,
int dimx,
int dimy,
int relief, GCallback handler, gpointer data)
2003 but = (
text) ? gtk_button_new_with_label (
text) : gtk_button_new ();
2005 but = (
text && image_format ==
IMG_NONE) ? gtk_button_new_with_label (
text) : gtk_button_new ();
2008 gtk_widget_set_size_request (but, dimx, dimy);
2010 gtk_button_set_relief (GTK_BUTTON(but), relief);
2013 if (relief == GTK_RELIEF_NONE) gtk_button_set_has_frame (GTK_BUTTON(but), FALSE);
2015 if (handler != NULL)
2017 g_signal_connect (G_OBJECT (but),
"clicked", handler, data);
2033 gtk_image_set_from_icon_name (GTK_IMAGE(widg), icon);
2035 gtk_image_set_from_icon_name (GTK_IMAGE(widg), icon, GTK_ICON_SIZE_BUTTON);
2051 gchar * str = g_strdup_printf (
"<i><sub>%s</sub></i>", legend);
2143 scroll = gtk_scrolled_window_new ();
2145 scroll = gtk_scrolled_window_new (NULL, NULL);
2146 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scroll), shadow);
2148 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
2149 gtk_widget_set_size_request (scroll, dimx, dimy);
2165 GtkWidget * expand = gtk_expander_new (name);
2167 if (file_img != NULL)
2169 GtkWidget *
img = gtk_image_new_from_file (file_img);
2170 gtk_widget_set_size_request (
img, 20, 20);
2174 gtk_expander_set_label_widget (GTK_EXPANDER(expand),
hbox);
2187 GtkCssProvider * provider = gtk_css_provider_new ();
2189#if GTK_MINOR_VERSION < 12
2190 gtk_css_provider_load_from_data (provider, css, -1);
2192 gtk_css_provider_load_from_string (provider, css);
2194 gtk_style_context_add_provider_for_display (gdk_display_get_default (),
2195 GTK_STYLE_PROVIDER(provider),
2196 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
2198 gtk_css_provider_load_from_data (provider, css, -1, NULL);
2199 gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
2200 GTK_STYLE_PROVIDER(provider),
2201 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
2203 g_object_unref (provider);
2219 if (GTK_IS_WIDGET(widg))
2221 gtk_widget_destroy (widg);
2238 gtk_window_destroy (GTK_WINDOW(dialog));
2256 gtk_native_dialog_destroy (dialog);
2257 g_object_unref (dialog);
2285 return gtk_file_chooser_get_files (chooser);
2295 return gtk_file_chooser_get_filenames (chooser);
2309 return g_file_get_parse_name (gtk_file_chooser_get_file (chooser));
2311 return gtk_file_chooser_get_filename (chooser);
2325 return g_file_get_parse_name (gtk_file_chooser_get_current_folder (chooser));
2327 return gtk_file_chooser_get_current_folder (chooser);
2341 GFile * default_file_for_saving = g_file_new_for_path (filename);
2342 gboolean
res = gtk_file_chooser_set_file (chooser, default_file_for_saving, NULL);
2345 gchar * str = g_strdup_printf (_(
"Impossible to locate file: %s"), filename);
2361 gtk_file_chooser_set_current_folder (chooser, g_file_new_for_path (
"./"), NULL);
2363 gtk_file_chooser_set_current_folder (chooser,
"");
2378GtkFileChooserNative *
create_file_chooser (
const gchar * title, GtkWindow * parent, GtkFileChooserAction act,
const gchar * act_name)
2380 return gtk_file_chooser_native_new (title, parent, act, act_name, _(
"Cancel"));
2393GtkWidget *
create_file_chooser (
const gchar * title, GtkWindow * parent, GtkFileChooserAction act,
const gchar * act_name)
2395 return gtk_file_chooser_dialog_new (title, parent, act, _(
"Cancel"), GTK_RESPONSE_CANCEL, act_name, GTK_RESPONSE_ACCEPT, NULL);
2409 gtk_color_chooser_get_rgba (colob, &
col);
2423 gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(color_win), &
col);
2438 gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER(color_win), & colo);
2458 gtk_popover_set_has_arrow (GTK_POPOVER(
pop), FALSE);
2459 gtk_popover_set_pointing_to (GTK_POPOVER(
pop), & rect);
2460 gtk_popover_popup (GTK_POPOVER(
pop));
2474 gtk_menu_popup_at_pointer (GTK_MENU (widg), event);
2488 return (GtkWidget *)gtk_widget_get_root (widg);
2490 return gtk_widget_get_toplevel (widg);
2560 g_signal_connect (G_OBJECT (widg),
"close-request", handler, data);
2562 g_signal_connect (G_OBJECT (widg),
"delete-event", handler, data);
2576 return gtk_widget_get_allocated_width (widg);
2578 return gtk_widget_get_width (widg);
2592 return gtk_widget_get_allocated_height (widg);
2594 return gtk_widget_get_height (widg);
GMainLoop * Event_loop[5]
Global variable declarations Global convenience function declarations Global data structure defin...
GdkPixbuf * convert_to_pixbuf(cairo_surface_t *surf)
convert cairo surface to GdkPixbuf
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 * markup_label(gchar *text, int dimx, int dimy, float ax, float ay)
create a GtkLabel with pango markup
GtkWidget * create_image_from_data(int format, gpointer item_image)
create Gtk image for data
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 set_renderer_markup(GtkTreeModel *mod, GtkTreeIter *iter, GtkCellRenderer *renderer, int col)
set Pango text markup for a GtkCellRenderer
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.