From: <kr_...@us...> - 2003-12-14 10:51:51
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK In directory sc8-pr-cvs1:/tmp/cvs-serv2507/src/cbits/GTK Modified Files: ToolBar.c gtkdropdowntoolbutton.c gtkdropdowntoolbutton.h Log Message: Make the library compatible with ToolBar API in GTK 2.3.1 Index: ToolBar.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/ToolBar.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ToolBar.c 31 Aug 2003 12:56:26 -0000 1.10 --- ToolBar.c 14 Dec 2003 10:51:39 -0000 1.11 *************** *** 45,63 **** } - void tool_button_clicked(GtkWidget *widget, gpointer user_data) - { - handleToolCommand((ToolHandle) user_data); - } - ToolHandle osInsertToolButton(WindowHandle toolbar, int pos) { ! GtkToolItem *item = gtk_tool_button_new("", gtk_image_new()); ! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked", ! GTK_SIGNAL_FUNC(tool_button_clicked), ! item); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); - gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new("")); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); --- 45,58 ---- } ToolHandle osInsertToolButton(WindowHandle toolbar, int pos) { ! GtkToolItem *item = gtk_tool_button_new(gtk_image_new(), ""); ! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE); ! gtk_signal_connect (GTK_OBJECT(item), "clicked", ! GTK_SIGNAL_FUNC(handleToolCommand), ! NULL); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); *************** *** 68,80 **** { GtkToolItem *item = gtk_toggle_tool_button_new(); ! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked", ! GTK_SIGNAL_FUNC(tool_button_clicked), ! item); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); - gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new("")); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new()); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); --- 63,74 ---- { GtkToolItem *item = gtk_toggle_tool_button_new(); ! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE); ! gtk_signal_connect (GTK_OBJECT(item), "clicked", ! GTK_SIGNAL_FUNC(handleToolCommand), ! NULL); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new()); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); *************** *** 84,91 **** static void tool_radio_button_clicked(GtkWidget *widget, gpointer user_data) { ! ToolHandle toolItem = (ToolHandle) user_data; ! ! if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toolItem))) ! handleToolCommand(toolItem); } --- 78,83 ---- static void tool_radio_button_clicked(GtkWidget *widget, gpointer user_data) { ! if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(widget))) ! handleToolCommand(widget); } *************** *** 93,107 **** { GtkToolItem *item = gtk_radio_tool_button_new(NULL); ! GTK_TOGGLE_BUTTON (GTK_TOOL_BUTTON(item)->button)->active = FALSE; ! ! gtk_signal_connect (GTK_OBJECT(GTK_TOOL_BUTTON(item)->button), "clicked", GTK_SIGNAL_FUNC(tool_radio_button_clicked), ! item); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); - gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new("")); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new()); - gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); --- 85,97 ---- { GtkToolItem *item = gtk_radio_tool_button_new(NULL); ! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE); ! gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON (item), FALSE); ! gtk_signal_connect (GTK_OBJECT(item), "clicked", GTK_SIGNAL_FUNC(tool_radio_button_clicked), ! NULL); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new()); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); *************** *** 123,133 **** ToolHandle osInsertToolDropDownButton(WindowHandle toolbar, MenuHandle hmenu, int pos) { ! GtkToolItem *item = gtk_drop_down_tool_button_new(); gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(item), hmenu); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); - gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(item), gtk_label_new("")); - gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(item), gtk_image_new()); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); --- 113,122 ---- ToolHandle osInsertToolDropDownButton(WindowHandle toolbar, MenuHandle hmenu, int pos) { ! GtkToolItem *item = gtk_drop_down_tool_button_new(gtk_image_new(), "", NULL); ! gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON(item), TRUE); gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(item), hmenu); gtk_signal_connect (GTK_OBJECT(item), "destroy", GTK_SIGNAL_FUNC(handleToolDestroy), NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, pos); gtk_widget_show_all(GTK_WIDGET(item)); *************** *** 148,152 **** void osSetToolButtonBitmap(ToolHandle toolButton, BitmapHandle bitmap) { ! gtk_image_set_from_pixbuf(gtk_tool_button_get_icon_widget (GTK_TOOL_BUTTON(toolButton)), bitmap->pixbuf); } --- 137,141 ---- void osSetToolButtonBitmap(ToolHandle toolButton, BitmapHandle bitmap) { ! gtk_image_set_from_pixbuf(GTK_IMAGE(gtk_tool_button_get_icon_widget (GTK_TOOL_BUTTON(toolButton))), bitmap->pixbuf); } *************** *** 175,187 **** void osSetToolButtonText(ToolHandle toolButton, char *text) { ! GtkWidget *label = gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON(toolButton)); ! gtk_label_set_text(GTK_LABEL(label), text); } char *osGetToolButtonText(ToolHandle toolButton) { ! GtkWidget *label = gtk_tool_button_get_label_widget (GTK_TOOL_BUTTON(toolButton)); ! char *text = gtk_label_get_text(GTK_LABEL(label)); ! return strdup(text); } --- 164,175 ---- void osSetToolButtonText(ToolHandle toolButton, char *text) { ! gchar *szText = toMnemonicString(text); ! gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolButton), szText); ! rfree(szText); } char *osGetToolButtonText(ToolHandle toolButton) { ! return fromMnemonicString(gtk_tool_button_get_label(GTK_TOOL_BUTTON(toolButton))); } Index: gtkdropdowntoolbutton.c =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/gtkdropdowntoolbutton.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gtkdropdowntoolbutton.c 22 Aug 2003 21:45:08 -0000 1.1 --- gtkdropdowntoolbutton.c 14 Dec 2003 10:51:39 -0000 1.2 *************** *** 82,85 **** --- 82,123 ---- } + static GtkWidget * + clone_image_menu_size (GtkImage *image, GtkSettings *settings) + { + GtkImageType storage_type = gtk_image_get_storage_type (image); + + if (storage_type == GTK_IMAGE_STOCK) + { + gchar *stock_id; + gtk_image_get_stock (image, &stock_id, NULL); + return gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU); + } + else if (storage_type == GTK_IMAGE_ICON_SET) + { + GtkIconSet *icon_set; + gtk_image_get_icon_set (image, &icon_set, NULL); + return gtk_image_new_from_icon_set (icon_set, GTK_ICON_SIZE_MENU); + } + else if (storage_type == GTK_IMAGE_PIXBUF) + { + gint width, height; + + if (settings && + gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU, + &width, &height)) + { + GdkPixbuf *src_pixbuf, *dest_pixbuf; + + src_pixbuf = gtk_image_get_pixbuf (image); + dest_pixbuf = gdk_pixbuf_scale_simple (src_pixbuf, width, height, + GDK_INTERP_BILINEAR); + + return gtk_image_new_from_pixbuf (dest_pixbuf); + } + } + + return NULL; + } + static gboolean gtk_drop_down_tool_button_create_menu_proxy (GtkToolItem *item) *************** *** 89,109 **** GtkStockItem stock_item; gboolean use_mnemonic = TRUE; ! const char *label = ""; ! if (tool_button->label_widget && GTK_IS_LABEL (tool_button->label_widget)) ! label = gtk_label_get_label (GTK_LABEL (tool_button->label_widget)); ! else if (tool_button->label_text) { ! label = tool_button->label_text; ! use_mnemonic = tool_button->use_underline; } - else if (tool_button->stock_id && gtk_stock_lookup (tool_button->stock_id, &stock_item)) - label = stock_item.label; if (use_mnemonic) ! menu_item = gtk_menu_item_new_with_mnemonic (label); else ! menu_item = gtk_menu_item_new_with_label (label); ! gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), GTK_DROP_DOWN_BUTTON(tool_button->button)->menu); gtk_tool_item_set_proxy_menu_item (item, MENU_ID, menu_item); --- 127,177 ---- GtkStockItem stock_item; gboolean use_mnemonic = TRUE; ! const char *label; ! GtkWidget *menu_image = NULL; ! GtkWidget *label_widget = gtk_tool_button_get_label_widget (tool_button); ! GtkWidget *icon_widget = gtk_tool_button_get_icon_widget(tool_button); ! GtkWidget *menu_widget = GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(tool_button)))->menu; ! const gchar *label_text = gtk_tool_button_get_label (tool_button); ! const gchar *stock_id = gtk_tool_button_get_stock_id (tool_button); ! ! if (label_widget && GTK_IS_LABEL (label_widget)) { ! label = gtk_label_get_label (GTK_LABEL (label_widget)); ! use_mnemonic = gtk_label_get_use_underline (GTK_LABEL (label_widget)); ! } ! else if (label_text) ! { ! label = label_text; ! use_mnemonic = gtk_tool_button_get_use_underline (tool_button); ! } ! else if (stock_id && gtk_stock_lookup (stock_id, &stock_item)) ! { ! label = stock_item.label; ! } ! else ! { ! label = ""; } if (use_mnemonic) ! menu_item = gtk_image_menu_item_new_with_mnemonic (label); else ! menu_item = gtk_image_menu_item_new_with_label (label); ! ! if (icon_widget && GTK_IS_IMAGE (icon_widget)) ! { ! menu_image = clone_image_menu_size (GTK_IMAGE(icon_widget), ! gtk_widget_get_settings (GTK_WIDGET (tool_button))); ! } ! else if (stock_id) ! { ! menu_image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU); ! } ! ! if (menu_image) ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), menu_image); ! ! gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), menu_widget); gtk_tool_item_set_proxy_menu_item (item, MENU_ID, menu_item); *************** *** 113,117 **** GtkToolItem * ! gtk_drop_down_tool_button_new (void) { GtkToolButton *button; --- 181,187 ---- GtkToolItem * ! gtk_drop_down_tool_button_new (GtkWidget *icon_widget, ! const gchar *label, ! GtkWidget *menu) { GtkToolButton *button; *************** *** 119,123 **** button = g_object_new (GTK_TYPE_DROP_DOWN_TOOL_BUTTON, NULL); ! return GTK_TOOL_ITEM (button); } --- 189,202 ---- button = g_object_new (GTK_TYPE_DROP_DOWN_TOOL_BUTTON, NULL); ! ! if (label) ! gtk_tool_button_set_label (button, label); ! ! if (icon_widget) ! gtk_tool_button_set_icon_widget (button, icon_widget); ! ! if (menu) ! gtk_drop_down_tool_button_set_menu(GTK_DROP_DOWN_TOOL_BUTTON(button), menu); ! return GTK_TOOL_ITEM (button); } *************** *** 139,147 **** GtkWidget* gtk_drop_down_tool_button_get_menu(GtkDropDownToolButton *button) { ! return gtk_drop_down_button_get_menu(GTK_DROP_DOWN_BUTTON(GTK_TOOL_BUTTON(button)->button)); } void gtk_drop_down_tool_button_set_menu(GtkDropDownToolButton *button, GtkWidget *menu) { ! gtk_drop_down_button_set_menu(GTK_DROP_DOWN_BUTTON(GTK_TOOL_BUTTON(button)->button), menu); } --- 218,229 ---- GtkWidget* gtk_drop_down_tool_button_get_menu(GtkDropDownToolButton *button) { ! return gtk_drop_down_button_get_menu( ! GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(button)))); } void gtk_drop_down_tool_button_set_menu(GtkDropDownToolButton *button, GtkWidget *menu) { ! gtk_drop_down_button_set_menu( ! GTK_DROP_DOWN_BUTTON(_gtk_tool_button_get_button (GTK_TOOL_BUTTON(button))), ! menu); } Index: gtkdropdowntoolbutton.h =================================================================== RCS file: /cvsroot/htoolkit/port/src/cbits/GTK/gtkdropdowntoolbutton.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gtkdropdowntoolbutton.h 22 Aug 2003 21:45:08 -0000 1.1 --- gtkdropdowntoolbutton.h 14 Dec 2003 10:51:39 -0000 1.2 *************** *** 50,54 **** GType gtk_drop_down_tool_button_get_type (void) G_GNUC_CONST; ! GtkToolItem *gtk_drop_down_tool_button_new (void); GtkToolItem *gtk_drop_down_tool_button_new_from_stock (const gchar *stock_id); GtkWidget* gtk_drop_down_tool_button_get_menu (GtkDropDownToolButton *button); --- 50,54 ---- GType gtk_drop_down_tool_button_get_type (void) G_GNUC_CONST; ! GtkToolItem *gtk_drop_down_tool_button_new (GtkWidget *icon_widget, const gchar *label, GtkWidget *menu); GtkToolItem *gtk_drop_down_tool_button_new_from_stock (const gchar *stock_id); GtkWidget* gtk_drop_down_tool_button_get_menu (GtkDropDownToolButton *button); |