void gtkut_ctree_set_focus_row(GtkCTree *ctree, GtkCTreeNode *node)
{
+ if (node == NULL)
+ return;
gtkut_clist_set_focus_row(GTK_CLIST(ctree),
gtkut_ctree_get_nth_from_node(ctree, node));
}
GtkTextBuffer *buffer;
GtkTextIter iter;
- g_return_val_if_fail(text != NULL, FALSE);
+ g_return_if_fail(text != NULL);
buffer = gtk_text_view_get_buffer(text);
gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 1);
- gtk_box_pack_end((GTK_BOX(box), label, FALSE, FALSE, 1);
+ gtk_box_pack_end(GTK_BOX(box), label, FALSE, FALSE, 1);
gtk_widget_show(label);
gtk_widget_show(image);
gtk_widget_show(box);
return button;
}
+GtkWidget *gtkut_get_replace_btn(const gchar *button_label)
+{
+ GtkWidget *button;
+
+#if GTK_CHECK_VERSION(2, 6, 0)
+ button = gtk_button_new_with_mnemonic(button_label);
+ gtk_button_set_image(GTK_BUTTON(button),
+ gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_BUTTON));
+#else
+ GtkWidget* image;
+ GtkWidget* box;
+ GtkWidget* label;
+
+ button = gtk_button_new();
+ box = gtk_hbox_new(FALSE, 0);
+
+ image = gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_BUTTON);
+ label = gtk_label_new(NULL);
+ gtk_label_set_text_with_mnemonic(GTK_LABEL(label), button_label);
+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
+
+ gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 1);
+ gtk_box_pack_end(GTK_BOX(box), label, FALSE, FALSE, 1);
+ gtk_widget_show(label);
+ gtk_widget_show(image);
+ gtk_widget_show(box);
+ gtk_container_add(GTK_CONTAINER(button), box);
+#endif
+ return button;
+}
+
#if HAVE_LIBCOMPFACE
gint create_xpm_from_xface(gchar *xpm[], const gchar *xface)
{
GdkPixbufLoader *loader = gdk_pixbuf_loader_new ();
GtkWidget *image;
+ if (o_face == NULL || strlen(o_face) == 0)
+ return NULL;
+
strncpy2(face, o_face, sizeof(face));
unfold_line(face); /* strip all whitespace and linebreaks */
g_object_unref(pixbuf);
return image;
}
+
+static GdkCursor *hand_cursor = NULL;
+
+static void link_btn_enter(GtkButton *button, gpointer data)
+{
+ GtkWidget *window = (GtkWidget *)data;
+
+ if (!hand_cursor)
+ hand_cursor = gdk_cursor_new(GDK_HAND2);
+ if (window && window->window)
+ gdk_window_set_cursor(window->window, hand_cursor);
+
+ gtk_button_set_relief(button, GTK_RELIEF_NONE);
+ gtk_widget_set_state(GTK_WIDGET(button), GTK_STATE_NORMAL);
+
+}
+
+static void link_btn_leave(GtkButton *button, gpointer data)
+{
+ GtkWidget *window = (GtkWidget *)data;
+
+ if (window && window->window)
+ gdk_window_set_cursor(window->window, NULL);
+
+ gtk_button_set_relief(button, GTK_RELIEF_NONE);
+ gtk_widget_set_state(GTK_WIDGET(button), GTK_STATE_NORMAL);
+}
+
+static void link_btn_pressed(GtkButton *button, gpointer data)
+{
+ gtk_button_set_relief(button, GTK_RELIEF_NONE);
+ gtk_widget_set_state(GTK_WIDGET(button), GTK_STATE_NORMAL);
+}
+
+static void link_btn_released(GtkButton *button, gpointer data)
+{
+ gtk_button_set_relief(button, GTK_RELIEF_NONE);
+ gtk_widget_set_state(GTK_WIDGET(button), GTK_STATE_NORMAL);
+}
+
+static void link_btn_clicked(GtkButton *button, gpointer data)
+{
+ gchar *url = (gchar *)data;
+ gtk_button_set_relief(button, GTK_RELIEF_NONE);
+ gtk_widget_set_state(GTK_WIDGET(button), GTK_STATE_NORMAL);
+ open_uri(url, prefs_common.uri_cmd);
+}
+
+static void link_btn_unrealize(GtkButton *button, gpointer data)
+{
+ gchar *url = (gchar *)data;
+ g_signal_handlers_disconnect_by_func(G_OBJECT(button),
+ G_CALLBACK(link_btn_clicked), url);
+ g_free(url);
+}
+
+GtkWidget *gtkut_get_link_btn(GtkWidget *window, const gchar *url, const gchar *label)
+{
+ GtkWidget *btn;
+ GtkWidget *btn_label;
+ GdkColormap *cmap;
+ GdkColor uri_color[2] = {{0, 0, 0, 0xffff}, {0, 0xffff, 0, 0}};
+ gboolean success[2];
+ gchar *local_url = NULL;
+ if (!url)
+ return NULL;
+
+ gtkut_convert_int_to_gdk_color(prefs_common.uri_col,
+ &uri_color[0]);
+ gtkut_convert_int_to_gdk_color(prefs_common.uri_col,
+ &uri_color[1]);
+
+ btn = gtk_button_new_with_label(label?label:url);
+ gtk_button_set_relief(GTK_BUTTON(btn), GTK_RELIEF_NONE);
+ btn_label = GTK_BIN(btn)->child;
+ cmap = gdk_drawable_get_colormap(window->window);
+ gdk_colormap_alloc_colors(cmap, uri_color, 2, FALSE, TRUE, success);
+ if (success[0] == TRUE && success[1] == TRUE) {
+ GtkStyle *style;
+ gtk_widget_ensure_style(btn_label);
+ style = gtk_style_copy
+ (gtk_widget_get_style(btn_label));
+ style->fg[GTK_STATE_NORMAL] = uri_color[0];
+ style->fg[GTK_STATE_ACTIVE] = uri_color[1];
+ style->fg[GTK_STATE_PRELIGHT] = uri_color[0];
+ gtk_widget_set_style(btn_label, style);
+ } else
+ g_warning("about_create(): color allocation failed.\n");
+
+ g_signal_connect(G_OBJECT(btn), "enter",
+ G_CALLBACK(link_btn_enter), window);
+ g_signal_connect(G_OBJECT(btn), "leave",
+ G_CALLBACK(link_btn_leave), window);
+ g_signal_connect(G_OBJECT(btn), "pressed",
+ G_CALLBACK(link_btn_pressed), window);
+ g_signal_connect(G_OBJECT(btn), "released",
+ G_CALLBACK(link_btn_released), window);
+
+ local_url = g_strdup(url);
+ g_signal_connect(G_OBJECT(btn), "clicked",
+ G_CALLBACK(link_btn_clicked), local_url);
+ g_signal_connect(G_OBJECT(btn), "unrealize",
+ G_CALLBACK(link_btn_unrealize), local_url);
+ return btn;
+}
+
+GtkWidget *gtkut_sc_combobox_create(GtkWidget *eventbox, gboolean focus_on_click)
+{
+ GtkWidget *combobox;
+ GtkListStore *menu;
+ GtkCellRenderer *rend;
+
+ menu = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
+
+ combobox = gtk_combo_box_new_with_model(GTK_TREE_MODEL(menu));
+
+ rend = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combobox), rend, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combobox), rend,
+ "markup", 0,
+ NULL);
+
+ if( eventbox != NULL )
+ gtk_container_add(GTK_CONTAINER(eventbox), combobox);
+#if GTK_CHECK_VERSION(2,6,0)
+ gtk_combo_box_set_focus_on_click(GTK_COMBO_BOX(combobox), focus_on_click);
+#endif
+ return combobox;
+}