SF.net SVN: geany:[3874] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sat Jun 20 16:51:32 UTC 2009
Revision: 3874
http://geany.svn.sourceforge.net/geany/?rev=3874&view=rev
Author: eht16
Date: 2009-06-20 16:51:32 +0000 (Sat, 20 Jun 2009)
Log Message:
-----------
Instantly reload (i.e. rebuild) the toolbar when ui_toolbar.xml is saved within Geany.
Refactor some related code.
Modified Paths:
--------------
trunk/ChangeLog
trunk/data/ui_toolbar.xml
trunk/doc/geany.txt
trunk/src/build.c
trunk/src/geanymenubuttonaction.c
trunk/src/geanymenubuttonaction.h
trunk/src/main.c
trunk/src/plugins.c
trunk/src/templates.c
trunk/src/toolbar.c
trunk/src/toolbar.h
trunk/src/ui_utils.c
trunk/src/ui_utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/ChangeLog 2009-06-20 16:51:32 UTC (rev 3874)
@@ -1,3 +1,14 @@
+2009-06-20 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * data/ui_toolbar.xml, doc/geany.txt, src/build.c,
+ src/geanymenubuttonaction.c, src/geanymenubuttonaction.h, src/main.c,
+ src/plugins.c, src/templates.c, src/toolbar.c, src/toolbar.h,
+ src/ui_utils.c, src/ui_utils.h:
+ Instantly reload (i.e. rebuild) the toolbar when ui_toolbar.xml is
+ saved within Geany.
+ Refactor some related code.
+
+
2009-06-18 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/highlighting.c, README.Packagers, HACKING:
Modified: trunk/data/ui_toolbar.xml
===================================================================
--- trunk/data/ui_toolbar.xml 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/data/ui_toolbar.xml 2009-06-20 16:51:32 UTC (rev 3874)
@@ -3,10 +3,10 @@
The DTD can be found at http://library.gnome.org/devel/gtk/stable/GtkUIManager.html#GtkUIManager.description.
You can re-order all items and freely add and remove available actions.
-You cannot add new actions which are not listed below.
+You cannot add new actions which are not listed in the documentation.
Everything you add or change must be inside the /ui/toolbar/ path.
-For changes to take effect, you need to restart Geany.
+For changes to take effect, simply save this file within Geany or restart Geany.
A list of available actions can be found in the documentation included with Geany or
at http://www.geany.org/manual/current/index.html#customizing-the-toolbar.
Modified: trunk/doc/geany.txt
===================================================================
--- trunk/doc/geany.txt 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/doc/geany.txt 2009-06-20 16:51:32 UTC (rev 3874)
@@ -3534,11 +3534,11 @@
This file must be valid XML, otherwise the global toolbar UI definition
will be used instead.
+Your changes are applied once you save the file.
+
.. note::
(1) You cannot add new actions which are not listed below.
(2) Everything you add or change must be inside the /ui/toolbar/ path.
- (3) After you finish editing the file, you need to restart Geany
- for changes to take effect.
Available toolbar elements
Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/build.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -94,10 +94,10 @@
static struct
{
- GtkWidget *run_button;
- GtkWidget *compile_button;
- GtkWidget *build_button;
+ GtkAction *run_action;
+ GtkAction *compile_action;
GtkAction *build_action;
+ GtkWidget *toolmenu;
GtkWidget *toolitem_build;
GtkWidget *toolitem_make_all;
@@ -130,7 +130,7 @@
static void process_build_output_line(const gchar *line, gint color);
-void build_finalize()
+void build_finalize(void)
{
g_free(build_info.dir);
g_free(build_info.custom_target);
@@ -139,6 +139,8 @@
gtk_widget_destroy(default_menu_items.menu);
if (latex_menu_items.menu != NULL && GTK_IS_WIDGET(latex_menu_items.menu))
gtk_widget_destroy(latex_menu_items.menu);
+
+ g_object_unref(widgets.toolmenu);
}
@@ -1627,9 +1629,9 @@
{
gtk_widget_set_sensitive(menubar_build_menu, FALSE);
gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menubar_build_menu));
- ui_widget_set_sensitive(widgets.compile_button, FALSE);
- ui_widget_set_sensitive(widgets.build_button, FALSE);
- ui_widget_set_sensitive(widgets.run_button, FALSE);
+ gtk_action_set_sensitive(widgets.compile_action, FALSE);
+ gtk_action_set_sensitive(widgets.build_action, FALSE);
+ gtk_action_set_sensitive(widgets.run_action, FALSE);
return;
}
else
@@ -1703,10 +1705,10 @@
if (widgets.toolitem_set_args != NULL)
gtk_widget_set_sensitive(widgets.toolitem_set_args, can_set_args);
- ui_widget_set_sensitive(widgets.compile_button,
+ gtk_action_set_sensitive(widgets.compile_action,
can_build && ft->actions->can_compile && NZV(ft->programs->compiler));
- ui_widget_set_sensitive(widgets.build_button, can_make);
- ui_widget_set_sensitive(widgets.run_button, can_run || can_stop);
+ gtk_action_set_sensitive(widgets.build_action, can_make);
+ gtk_action_set_sensitive(widgets.run_action, can_run || can_stop);
/* show the stop command if a program is running, otherwise show run command */
set_stop_button(can_stop);
@@ -1725,21 +1727,20 @@
static void set_stop_button(gboolean stop)
{
GtkStockItem sitem;
+ GtkToolButton *run_button;
GtkWidget *menuitem =
build_get_menu_items(run_info.file_type_id)->item_exec;
- if (widgets.run_button == NULL)
+ run_button = GTK_TOOL_BUTTON(toolbar_get_widget_by_name("Run"));
+ if (stop && utils_str_equal(gtk_tool_button_get_stock_id(run_button), "gtk-stop"))
return;
+ if (! stop && utils_str_equal(gtk_tool_button_get_stock_id(run_button), "gtk-execute"))
+ return;
- if (stop && utils_str_equal(
- gtk_tool_button_get_stock_id(GTK_TOOL_BUTTON(widgets.run_button)), "gtk-stop")) return;
- if (! stop && utils_str_equal(
- gtk_tool_button_get_stock_id(GTK_TOOL_BUTTON(widgets.run_button)), "gtk-execute")) return;
-
/* use the run button also as stop button */
if (stop)
{
- gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(widgets.run_button), "gtk-stop");
+ gtk_tool_button_set_stock_id(run_button, "gtk-stop");
if (menuitem != NULL)
{
@@ -1752,7 +1753,7 @@
}
else
{
- gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(widgets.run_button), "gtk-execute");
+ gtk_tool_button_set_stock_id(run_button, "gtk-execute");
if (menuitem != NULL)
{
@@ -2095,66 +2096,69 @@
}
-void build_init()
+void build_init(void)
{
GtkWidget *item;
GtkWidget *toolmenu;
- widgets.build_action = toolbar_get_action_by_name("Build");
- toolmenu = geany_menu_button_action_get_menu(GEANY_MENU_BUTTON_ACTION(widgets.build_action));
+ /* create the toolbar Build item sub menu */
+ toolmenu = gtk_menu_new();
+ g_object_ref(toolmenu);
- if (toolmenu != NULL)
- {
- /* build the code */
- item = ui_image_menu_item_new(GEANY_STOCK_BUILD, _("_Build"));
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_build_activate), NULL);
- widgets.toolitem_build = item;
+ /* build the code */
+ item = ui_image_menu_item_new(GEANY_STOCK_BUILD, _("_Build"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_build_activate), NULL);
+ widgets.toolitem_build = item;
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ item = gtk_separator_menu_item_new();
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
- /* build the code with make all */
- item = gtk_image_menu_item_new_with_mnemonic(_("_Make All"));
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
- GINT_TO_POINTER(GBO_MAKE_ALL));
- widgets.toolitem_make_all = item;
+ /* build the code with make all */
+ item = gtk_image_menu_item_new_with_mnemonic(_("_Make All"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
+ GINT_TO_POINTER(GBO_MAKE_ALL));
+ widgets.toolitem_make_all = item;
- /* build the code with make custom */
- item = gtk_image_menu_item_new_with_mnemonic(_("Make Custom _Target"));
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
- GINT_TO_POINTER(GBO_MAKE_CUSTOM));
- widgets.toolitem_make_custom = item;
+ /* build the code with make custom */
+ item = gtk_image_menu_item_new_with_mnemonic(_("Make Custom _Target"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
+ GINT_TO_POINTER(GBO_MAKE_CUSTOM));
+ widgets.toolitem_make_custom = item;
- /* build the code with make object */
- item = gtk_image_menu_item_new_with_mnemonic(_("Make _Object"));
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
- GINT_TO_POINTER(GBO_MAKE_OBJECT));
- widgets.toolitem_make_object = item;
+ /* build the code with make object */
+ item = gtk_image_menu_item_new_with_mnemonic(_("Make _Object"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(on_toolbutton_make_activate),
+ GINT_TO_POINTER(GBO_MAKE_OBJECT));
+ widgets.toolitem_make_object = item;
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ item = gtk_separator_menu_item_new();
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
- /* arguments */
- item = ui_image_menu_item_new(GTK_STOCK_PREFERENCES, _("_Set Includes and Arguments"));
- gtk_widget_show(item);
- gtk_container_add(GTK_CONTAINER(toolmenu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_build_arguments_activate), NULL);
- widgets.toolitem_set_args = item;
- }
+ /* arguments */
+ item = ui_image_menu_item_new(GTK_STOCK_PREFERENCES, _("_Set Includes and Arguments"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(toolmenu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(on_build_arguments_activate), NULL);
+ widgets.toolitem_set_args = item;
- widgets.compile_button = toolbar_get_widget_by_name("Compile");
- widgets.run_button = toolbar_get_widget_by_name("Run");
- widgets.build_button = toolbar_get_widget_by_name("Build");
+
+ /* get toolbar action pointers */
+ widgets.build_action = toolbar_get_action_by_name("Build");
+ widgets.compile_action = toolbar_get_action_by_name("Compile");
+ widgets.run_action = toolbar_get_action_by_name("Run");
+ widgets.toolmenu = toolmenu;
+ /* set the submenu to the toolbar item */
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(widgets.build_action), toolmenu);
}
Modified: trunk/src/geanymenubuttonaction.c
===================================================================
--- trunk/src/geanymenubuttonaction.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/geanymenubuttonaction.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -26,6 +26,7 @@
#include "geany.h"
#include "support.h"
+#include "utils.h"
#include "geanymenubuttonaction.h"
@@ -37,9 +38,7 @@
struct _GeanyMenubuttonActionPrivate
{
- GtkWidget *button;
GtkWidget *menu;
- gboolean menu_added;
};
enum
@@ -64,48 +63,12 @@
}
-static void menu_filled_cb(GtkContainer *container, GtkWidget *widget, gpointer data)
-{
- GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(data);
-
- if (! priv->menu_added)
- {
- gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(priv->button), priv->menu);
- priv->menu_added = TRUE;
- }
-}
-
-
-static void geany_menu_button_action_connect_proxy(GtkAction *action, GtkWidget *widget)
-{
- GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
- /* add the menu to the menu button once it got items ("add" from GtkContainer) */
- g_signal_connect(priv->menu, "add", G_CALLBACK(menu_filled_cb), action);
-
- GTK_ACTION_CLASS(geany_menu_button_action_parent_class)->connect_proxy(action, widget);
-}
-
-
static void delegate_button_activated(GtkAction *action)
{
g_signal_emit(action, signals[BUTTON_CLICKED], 0);
}
-static GtkWidget *geany_menu_button_action_create_tool_item(GtkAction *action)
-{
- GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
-
- priv->menu = gtk_menu_new();
- g_object_ref(priv->menu);
- gtk_widget_show(priv->menu);
-
- priv->button = g_object_new(GTK_TYPE_MENU_TOOL_BUTTON, NULL);
-
- return priv->button;
-}
-
-
static void geany_menu_button_action_class_init(GeanyMenubuttonActionClass *klass)
{
GtkActionClass *action_class = GTK_ACTION_CLASS(klass);
@@ -114,8 +77,6 @@
g_object_class->finalize = geany_menu_button_action_finalize;
action_class->activate = delegate_button_activated;
- action_class->connect_proxy = geany_menu_button_action_connect_proxy;
- action_class->create_tool_item = geany_menu_button_action_create_tool_item;
action_class->toolbar_item_type = GTK_TYPE_MENU_TOOL_BUTTON;
g_type_class_add_private(klass, sizeof(GeanyMenubuttonActionPrivate));
@@ -133,11 +94,7 @@
static void geany_menu_button_action_init(GeanyMenubuttonAction *action)
{
- GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
-
- priv->menu = NULL;
- priv->button = NULL;
- priv->menu_added = FALSE;
+ /* nothing to do */
}
@@ -167,3 +124,22 @@
return priv->menu;
}
+
+
+void geany_menu_button_action_set_menu(GeanyMenubuttonAction *action, GtkWidget *menu)
+{
+ GeanyMenubuttonActionPrivate *priv;
+ GSList *l;
+
+ g_return_if_fail(action != NULL);
+ g_return_if_fail(menu != NULL);
+
+ priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
+
+ priv->menu = menu;
+
+ foreach_slist(l, gtk_action_get_proxies(GTK_ACTION(action)))
+ {
+ gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(l->data), priv->menu);
+ }
+}
Modified: trunk/src/geanymenubuttonaction.h
===================================================================
--- trunk/src/geanymenubuttonaction.h 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/geanymenubuttonaction.h 2009-06-20 16:51:32 UTC (rev 3874)
@@ -55,6 +55,8 @@
const gchar *stock_id);
GtkWidget* geany_menu_button_action_get_menu (GeanyMenubuttonAction *action);
+void geany_menu_button_action_set_menu (GeanyMenubuttonAction *action, GtkWidget *menu);
+
G_END_DECLS
#endif /* __GEANY_MENU_BUTTON_ACTION_H__ */
Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/main.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -192,37 +192,7 @@
}
ui_sidebar_show_hide();
- /* sets the icon style of the toolbar */
- switch (toolbar_prefs.icon_style)
- {
- case GTK_TOOLBAR_BOTH:
- {
- /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "images_and_text1")), TRUE);*/
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "images_and_text2")), TRUE);
- break;
- }
- case GTK_TOOLBAR_ICONS:
- {
- /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "images_only1")), TRUE);*/
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "images_only2")), TRUE);
- break;
- }
- case GTK_TOOLBAR_TEXT:
- {
- /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "text_only1")), TRUE);*/
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "text_only2")), TRUE);
- break;
- }
- }
- gtk_toolbar_set_style(GTK_TOOLBAR(main_widgets.toolbar), toolbar_prefs.icon_style);
-
- /* sets the icon size of the toolbar, use user preferences (.gtkrc) if not set */
- if (toolbar_prefs.icon_size == GTK_ICON_SIZE_SMALL_TOOLBAR ||
- toolbar_prefs.icon_size == GTK_ICON_SIZE_LARGE_TOOLBAR ||
- toolbar_prefs.icon_size == GTK_ICON_SIZE_MENU)
- {
- gtk_toolbar_set_icon_size(GTK_TOOLBAR(main_widgets.toolbar), toolbar_prefs.icon_size);
- }
+ toolbar_apply_settings();
toolbar_update_ui();
ui_update_view_editor_menu_items();
@@ -275,11 +245,6 @@
main_status.opening_session_files = FALSE;
main_widgets.window = create_window1();
- /* add recent files to the File menu */
- ui_widgets.recent_files_menuitem = ui_lookup_widget(main_widgets.window, "recent_files1");
- ui_widgets.recent_files_menu_menubar = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(ui_widgets.recent_files_menuitem),
- ui_widgets.recent_files_menu_menubar);
/* add recent projects to the Project menu */
ui_widgets.recent_projects_menuitem = ui_lookup_widget(main_widgets.window, "recent_projects1");
@@ -1018,22 +983,12 @@
}
/* registering some basic events */
- {
- GtkWidget *entry;
+ g_signal_connect(main_widgets.window, "delete-event", G_CALLBACK(on_exit_clicked), NULL);
+ g_signal_connect(main_widgets.window, "window-state-event", G_CALLBACK(on_window_state_event), NULL);
- g_signal_connect(main_widgets.window, "delete-event", G_CALLBACK(on_exit_clicked), NULL);
- g_signal_connect(main_widgets.window, "window-state-event", G_CALLBACK(on_window_state_event), NULL);
- g_signal_connect(main_widgets.toolbar, "button-press-event", G_CALLBACK(toolbar_popup_menu), NULL);
+ g_signal_connect(ui_lookup_widget(main_widgets.window, "textview_scribble"),
+ "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
- g_signal_connect(ui_lookup_widget(main_widgets.window, "textview_scribble"),
- "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
- entry = toolbar_get_widget_child_by_name("SearchEntry");
- if (entry != NULL)
- g_signal_connect(entry, "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
- entry = toolbar_get_widget_child_by_name("GotoEntry");
- if (entry != NULL)
- g_signal_connect(entry, "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
- }
#ifdef HAVE_VTE
vte_init();
#endif
Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/plugins.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -1325,12 +1325,16 @@
autosep->widget = GTK_WIDGET(sep);
gtk_toolbar_insert(toolbar, item, pos + 1);
+
+ toolbar_item_ref(sep);
+ toolbar_item_ref(item);
}
else
{
pos = gtk_toolbar_get_item_index(toolbar, GTK_TOOL_ITEM(autosep->widget));
g_return_if_fail(pos >= 0);
gtk_toolbar_insert(toolbar, item, pos);
+ toolbar_item_ref(item);
}
/* hide the separator widget if there are no toolbar items showing for the plugin */
ui_auto_separator_add_ref(autosep, GTK_WIDGET(item));
Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/templates.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -37,6 +37,8 @@
#include "document.h"
#include "filetypes.h"
#include "ui_utils.h"
+#include "toolbar.h"
+#include "geanymenubuttonaction.h"
GeanyTemplatePrefs template_prefs;
@@ -360,7 +362,7 @@
/* template items for the new file menu */
-static void create_new_menu_items(void)
+static void create_new_menu_items(GtkWidget *toolbar_new_file_menu)
{
GSList *node;
@@ -378,13 +380,10 @@
gtk_container_add(GTK_CONTAINER(new_with_template_menu), tmp_menu);
g_signal_connect(tmp_menu, "activate", G_CALLBACK(on_new_with_template), ft);
- if (ui_widgets.new_file_menu != NULL)
- {
- tmp_button = gtk_menu_item_new_with_label(label);
- gtk_widget_show(tmp_button);
- gtk_container_add(GTK_CONTAINER(ui_widgets.new_file_menu), tmp_button);
- g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_template), ft);
- }
+ tmp_button = gtk_menu_item_new_with_label(label);
+ gtk_widget_show(tmp_button);
+ gtk_container_add(GTK_CONTAINER(toolbar_new_file_menu), tmp_button);
+ g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_template), ft);
}
}
@@ -443,6 +442,7 @@
static void add_file_item(gpointer data, gpointer user_data)
{
GtkWidget *tmp_menu, *tmp_button;
+ GtkWidget *toolbar_new_file_menu = user_data;
gchar *label;
g_return_if_fail(data);
@@ -454,13 +454,11 @@
gtk_container_add(GTK_CONTAINER(new_with_template_menu), tmp_menu);
g_signal_connect(tmp_menu, "activate", G_CALLBACK(on_new_with_file_template), NULL);
- if (ui_widgets.new_file_menu != NULL)
- {
- tmp_button = gtk_menu_item_new_with_label(label);
- gtk_widget_show(tmp_button);
- gtk_container_add(GTK_CONTAINER(ui_widgets.new_file_menu), tmp_button);
- g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_file_template), NULL);
- }
+ tmp_button = gtk_menu_item_new_with_label(label);
+ gtk_widget_show(tmp_button);
+ gtk_container_add(GTK_CONTAINER(toolbar_new_file_menu), tmp_button);
+ g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_file_template), NULL);
+
g_free(label);
}
@@ -485,7 +483,7 @@
}
-static gboolean add_custom_template_items(void)
+static gboolean add_custom_template_items(GtkWidget *toolbar_new_file_menu)
{
gchar *path = g_build_path(G_DIR_SEPARATOR_S, app->configdir, GEANY_TEMPLATES_SUBDIR,
"files", NULL);
@@ -497,7 +495,7 @@
return FALSE;
}
list = g_slist_sort(list, compare_filenames_by_filetype);
- g_slist_foreach(list, add_file_item, NULL);
+ g_slist_foreach(list, add_file_item, toolbar_new_file_menu);
g_slist_foreach(list, (GFunc) g_free, NULL);
g_slist_free(list);
g_free(path);
@@ -508,23 +506,28 @@
static void create_file_template_menus(void)
{
GtkWidget *sep1, *sep2 = NULL;
+ GtkWidget *toolbar_new_file_menu = NULL;
new_with_template_menu = ui_lookup_widget(main_widgets.window, "menu_new_with_template1_menu");
- create_new_menu_items();
+ toolbar_new_file_menu = gtk_menu_new();
+ /* we hold our own ref on the menu in case it is not used in the toolbar */
+ g_object_ref(toolbar_new_file_menu);
+ create_new_menu_items(toolbar_new_file_menu);
+
sep1 = gtk_separator_menu_item_new();
gtk_container_add(GTK_CONTAINER(new_with_template_menu), sep1);
- if (ui_widgets.new_file_menu != NULL)
+ sep2 = gtk_separator_menu_item_new();
+ gtk_container_add(GTK_CONTAINER(toolbar_new_file_menu), sep2);
+
+ if (add_custom_template_items(toolbar_new_file_menu))
{
- sep2 = gtk_separator_menu_item_new();
- gtk_container_add(GTK_CONTAINER(ui_widgets.new_file_menu), sep2);
- }
- if (add_custom_template_items())
- {
gtk_widget_show(sep1);
- if (sep2 != NULL)
- gtk_widget_show(sep2);
+ gtk_widget_show(sep2);
}
+
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(
+ toolbar_get_action_by_name("New")), toolbar_new_file_menu);
}
@@ -806,6 +809,8 @@
{
gint i;
GList *children, *item;
+ GtkWidget *toolbar_new_file_menu = geany_menu_button_action_get_menu(
+ GEANY_MENU_BUTTON_ACTION(toolbar_get_action_by_name("New")));
for (i = 0; i < GEANY_MAX_TEMPLATES; i++)
{
@@ -816,16 +821,14 @@
g_free(ft_templates[i]);
}
/* destroy "New with template" sub menu items (in case we want to reload the templates) */
- if (ui_widgets.new_file_menu != NULL)
+ children = gtk_container_get_children(GTK_CONTAINER(toolbar_new_file_menu));
+ foreach_list(item, children)
{
- children = gtk_container_get_children(GTK_CONTAINER(ui_widgets.new_file_menu));
- for (item = children; item != NULL; item = g_list_next(item))
- {
- gtk_widget_destroy(GTK_WIDGET(item->data));
- }
+ gtk_widget_destroy(GTK_WIDGET(item->data));
}
+ g_object_unref(toolbar_new_file_menu);
children = gtk_container_get_children(GTK_CONTAINER(new_with_template_menu));
- for (item = children; item != NULL; item = g_list_next(item))
+ foreach_list(item, children)
{
gtk_widget_destroy(GTK_WIDGET(item->data));
}
Modified: trunk/src/toolbar.c
===================================================================
--- trunk/src/toolbar.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/toolbar.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -35,6 +35,7 @@
#include "dialogs.h"
#include "document.h"
#include "build.h"
+#include "main.h"
#include "geanymenubuttonaction.h"
#include "geanyentryaction.h"
@@ -43,11 +44,12 @@
GeanyToolbarPrefs toolbar_prefs;
static GtkUIManager *uim;
static GtkActionGroup *group;
+static GSList *plugin_items = NULL;
-
/* Available toolbar actions
* Fields: name, stock_id, label, accelerator, tooltip, callback */
const GtkActionEntry ui_entries[] = {
+ /* custom actions defined in toolbar_init(): "New", "Open", "SearchEntry", "GotoEntry", "Build" */
{ "Save", GTK_STOCK_SAVE, NULL, NULL, N_("Save the current file"), G_CALLBACK(on_toolbutton_save_clicked) },
{ "SaveAll", GEANY_STOCK_SAVE_ALL, N_("Save All"), NULL, N_("Save all open files"), G_CALLBACK(on_save_all1_activate) },
{ "Reload", GTK_STOCK_REVERT_TO_SAVED, NULL, NULL, N_("Reload the current file from disk"), G_CALLBACK(on_toolbutton_reload_clicked) },
@@ -109,6 +111,10 @@
"</ui>";
+/* Note: The returned widget pointer is only valid until the toolbar is reloaded. So, either
+ * update the widget pointer in this case (i.e. request it again) or better use
+ * toolbar_get_action_by_name() instead. The action objects will remain the same even when the
+ * toolbar is reloaded. */
GtkWidget *toolbar_get_widget_by_name(const gchar *name)
{
GtkWidget *widget;
@@ -124,6 +130,8 @@
}
+/* Note: The returned widget pointer is only valid until the toolbar is reloaded. See
+ * toolbar_get_widget_by_name for details(). */
GtkWidget *toolbar_get_widget_child_by_name(const gchar *name)
{
GtkWidget *widget = toolbar_get_widget_by_name(name);
@@ -143,15 +151,171 @@
}
-static void on_document_save(G_GNUC_UNUSED GObject *object, GeanyDocument *doc,
+static void toolbar_item_destroy_cb(GtkWidget *widget, G_GNUC_UNUSED gpointer data)
+{
+ plugin_items = g_slist_remove(plugin_items, widget);
+}
+
+
+void toolbar_item_ref(GtkToolItem *item)
+{
+ g_return_if_fail(item != NULL);
+
+ plugin_items = g_slist_append(plugin_items, item);
+ g_signal_connect(item, "destroy", G_CALLBACK(toolbar_item_destroy_cb), NULL);
+}
+
+
+static GtkWidget *toolbar_reload(void)
+{
+ gint i;
+ GSList *l;
+ GtkWidget *entry;
+ GError *error = NULL;
+ const gchar *filename;
+ static guint merge_id = 0;
+ GtkWidget *toolbar_new_file_menu = NULL;
+ GtkWidget *toolbar_recent_files_menu = NULL;
+ GtkWidget *toolbar_build_menu = NULL;
+
+ /* Cleanup old toolbar */
+ if (merge_id > 0)
+ {
+ /* ref plugins toolbar items to keep them after we destroyed the toolbar */
+ foreach_slist(l, plugin_items)
+ {
+ g_object_ref(l->data);
+ gtk_container_remove(GTK_CONTAINER(main_widgets.toolbar), GTK_WIDGET(l->data));
+ }
+ /* ref and hold the submenus of the New, Open and Build toolbar items */
+ toolbar_new_file_menu = geany_menu_button_action_get_menu(
+ GEANY_MENU_BUTTON_ACTION(gtk_action_group_get_action(group, "New")));
+ g_object_ref(toolbar_new_file_menu);
+ toolbar_recent_files_menu = geany_menu_button_action_get_menu(
+ GEANY_MENU_BUTTON_ACTION(gtk_action_group_get_action(group, "Open")));
+ g_object_ref(toolbar_recent_files_menu);
+ toolbar_build_menu = geany_menu_button_action_get_menu(
+ GEANY_MENU_BUTTON_ACTION(gtk_action_group_get_action(group, "Build")));
+ g_object_ref(toolbar_build_menu);
+
+ /* Get rid of it! */
+ gtk_widget_destroy(main_widgets.toolbar);
+
+ gtk_ui_manager_remove_ui(uim, merge_id);
+ gtk_ui_manager_ensure_update(uim);
+ }
+
+ /* Load the toolbar UI XML file from disk (first from config dir, then try data dir) */
+ filename = utils_build_path(app->configdir, "ui_toolbar.xml", NULL);
+ merge_id = gtk_ui_manager_add_ui_from_file(uim, filename, &error);
+ if (merge_id == 0)
+ {
+ if (error->code != G_FILE_ERROR_NOENT)
+ geany_debug("Loading user toolbar UI definition failed (%s).", error->message);
+ g_error_free(error);
+ error = NULL;
+
+ filename = utils_build_path(app->datadir, "ui_toolbar.xml", NULL);
+ merge_id = gtk_ui_manager_add_ui_from_file(uim, filename, &error);
+ if (merge_id == 0)
+ {
+ geany_debug(
+ "UI creation failed, using internal fallback definition. Error message: %s",
+ error->message);
+ g_error_free(error);
+ /* finally load the internally defined markup as fallback */
+ merge_id = gtk_ui_manager_add_ui_from_string(uim, toolbar_markup, -1, NULL);
+ }
+ }
+
+ main_widgets.toolbar = gtk_ui_manager_get_widget(uim, "/ui/GeanyToolbar");
+ ui_init_toolbar_widgets();
+
+ /* add the toolbar again to the main window */
+ if (toolbar_prefs.append_to_menu)
+ {
+ GtkWidget *hbox_menubar = ui_lookup_widget(main_widgets.window, "hbox_menubar");
+ gtk_box_pack_start(GTK_BOX(hbox_menubar), main_widgets.toolbar, TRUE, TRUE, 0);
+ gtk_box_reorder_child(GTK_BOX(hbox_menubar), main_widgets.toolbar, 1);
+ }
+ else
+ {
+ GtkWidget *box = ui_lookup_widget(main_widgets.window, "vbox1");
+
+ gtk_box_pack_start(GTK_BOX(box), main_widgets.toolbar, FALSE, FALSE, 0);
+ gtk_box_reorder_child(GTK_BOX(box), main_widgets.toolbar, 1);
+ }
+ gtk_widget_show(main_widgets.toolbar);
+
+ /* re-add und unref the plugin toolbar items */
+ i = toolbar_get_insert_position();
+ foreach_slist(l, plugin_items)
+ {
+ gtk_toolbar_insert(GTK_TOOLBAR(main_widgets.toolbar), l->data, i);
+ g_object_unref(l->data);
+ i++;
+ }
+ /* re-add und unref the submenus of menu toolbar items */
+ if (toolbar_new_file_menu != NULL)
+ {
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(
+ gtk_action_group_get_action(group, "New")), toolbar_new_file_menu);
+ g_object_unref(toolbar_new_file_menu);
+ }
+ if (toolbar_recent_files_menu != NULL)
+ {
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(
+ gtk_action_group_get_action(group, "Open")), toolbar_recent_files_menu);
+ g_object_unref(toolbar_recent_files_menu);
+ }
+ if (toolbar_build_menu != NULL)
+ {
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(
+ gtk_action_group_get_action(group, "Build")), toolbar_build_menu);
+ g_object_unref(toolbar_build_menu);
+ }
+
+ /* update button states */
+ if (main_status.main_window_realized)
+ {
+ GeanyDocument *doc = document_get_current();
+
+ ui_document_buttons_update();
+ ui_save_buttons_toggle(doc->changed); /* update save all */
+ ui_update_popup_reundo_items(doc);
+
+ toolbar_apply_settings();
+ }
+
+ /* Signals */
+ g_signal_connect(main_widgets.toolbar, "button-press-event",
+ G_CALLBACK(toolbar_popup_menu), NULL);
+ g_signal_connect(main_widgets.toolbar, "key-press-event",
+ G_CALLBACK(on_escape_key_press_event), NULL);
+
+ /* We don't need to disconnect those signals as this is done automatically when the entry
+ * widgets are destroyed, happens when the toolbar itself is destroyed. */
+ entry = toolbar_get_widget_child_by_name("SearchEntry");
+ if (entry != NULL)
+ g_signal_connect(entry, "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
+ entry = toolbar_get_widget_child_by_name("GotoEntry");
+ if (entry != NULL)
+ g_signal_connect(entry, "motion-notify-event", G_CALLBACK(on_motion_event), NULL);
+
+
+ return main_widgets.toolbar;
+}
+
+
+static void document_save_cb(G_GNUC_UNUSED GObject *object, GeanyDocument *doc,
G_GNUC_UNUSED gpointer data)
{
g_return_if_fail(NZV(doc->real_path));
if (utils_str_equal(doc->real_path, utils_build_path(app->configdir, "ui_toolbar.xml", NULL)))
{
- ui_set_statusbar(FALSE, "%s",
- _("For all changes you make in this file to take effect, you need to restart Geany."));
+ main_widgets.toolbar = toolbar_reload();
+ ui_set_statusbar(FALSE, _("Toolbar reloaded."));
}
}
@@ -160,7 +324,7 @@
{
ui_add_config_file_menu_item(
utils_build_path(app->configdir, "ui_toolbar.xml", NULL), NULL, NULL);
- g_signal_connect(geany_object, "document-save", G_CALLBACK(on_document_save), NULL);
+ g_signal_connect(geany_object, "document-save", G_CALLBACK(document_save_cb), NULL);
}
@@ -172,8 +336,6 @@
GtkAction *action_build;
GtkAction *action_searchentry;
GtkAction *action_gotoentry;
- GError *error = NULL;
- const gchar *filename;
uim = gtk_ui_manager_new();
group = gtk_action_group_new("GeanyToolbar");
@@ -213,36 +375,8 @@
gtk_ui_manager_insert_action_group(uim, group, 0);
- /* Load the toolbar UI XML file from disk (first from config dir, then try data dir) */
- filename = utils_build_path(app->configdir, "ui_toolbar.xml", NULL);
- if (! gtk_ui_manager_add_ui_from_file(uim, filename, &error))
- {
- if (error->code != G_FILE_ERROR_NOENT)
- geany_debug("Loading user toolbar UI definition failed (%s).", error->message);
- g_error_free(error);
- error = NULL;
+ toolbar = toolbar_reload();
- filename = utils_build_path(app->datadir, "ui_toolbar.xml", NULL);
- if (! gtk_ui_manager_add_ui_from_file(uim, filename, &error))
- {
- geany_debug(
- "UI creation failed, using internal fallback definition. Error message: %s",
- error->message);
- g_error_free(error);
- /* finally load the internally defined markup as fallback */
- gtk_ui_manager_add_ui_from_string(uim, toolbar_markup, -1, NULL);
- }
- }
-
- /* Set some pointers */
- toolbar = gtk_ui_manager_get_widget(uim, "/ui/GeanyToolbar");
- ui_widgets.new_file_menu = geany_menu_button_action_get_menu(
- GEANY_MENU_BUTTON_ACTION(action_new));
- ui_widgets.recent_files_menu_toolbar = geany_menu_button_action_get_menu(
- GEANY_MENU_BUTTON_ACTION(action_open));
-
- g_signal_connect(toolbar, "key-press-event", G_CALLBACK(on_escape_key_press_event), NULL);
-
return toolbar;
}
@@ -352,7 +486,48 @@
void toolbar_finalize(void)
{
- /* unref'ing the GtkUIManager object will destroy all its widgets unless they were ref'ed */
+ g_object_unref(geany_menu_button_action_get_menu(
+ GEANY_MENU_BUTTON_ACTION(toolbar_get_action_by_name("Open"))));
+
+ /* unref'ing the GtkUIManager object will destroy all its widgets unless they were ref'ed */
g_object_unref(uim);
- g_object_unref(group);
+ g_object_unref(group);
+
+ g_slist_free(plugin_items);
}
+
+
+void toolbar_apply_settings(void)
+{
+ /* sets the icon style of the toolbar */
+ switch (toolbar_prefs.icon_style)
+ {
+ case GTK_TOOLBAR_BOTH:
+ {
+ /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "images_and_text1")), TRUE);*/
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "images_and_text2")), TRUE);
+ break;
+ }
+ case GTK_TOOLBAR_ICONS:
+ {
+ /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "images_only1")), TRUE);*/
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "images_only2")), TRUE);
+ break;
+ }
+ case GTK_TOOLBAR_TEXT:
+ {
+ /*gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(main_widgets.window, "text_only1")), TRUE);*/
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(ui_lookup_widget(ui_widgets.toolbar_menu, "text_only2")), TRUE);
+ break;
+ }
+ }
+ gtk_toolbar_set_style(GTK_TOOLBAR(main_widgets.toolbar), toolbar_prefs.icon_style);
+
+ /* sets the icon size of the toolbar, use user preferences (.gtkrc) if not set */
+ if (toolbar_prefs.icon_size == GTK_ICON_SIZE_SMALL_TOOLBAR ||
+ toolbar_prefs.icon_size == GTK_ICON_SIZE_LARGE_TOOLBAR ||
+ toolbar_prefs.icon_size == GTK_ICON_SIZE_MENU)
+ {
+ gtk_toolbar_set_icon_size(GTK_TOOLBAR(main_widgets.toolbar), toolbar_prefs.icon_size);
+ }
+}
Modified: trunk/src/toolbar.h
===================================================================
--- trunk/src/toolbar.h 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/toolbar.h 2009-06-20 16:51:32 UTC (rev 3874)
@@ -49,6 +49,10 @@
void toolbar_update_ui(void);
+void toolbar_apply_settings(void);
+
+void toolbar_item_ref(GtkToolItem *item);
+
GtkWidget *toolbar_init(void);
void toolbar_finalize(void);
Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/ui_utils.c 2009-06-20 16:51:32 UTC (rev 3874)
@@ -48,6 +48,7 @@
#include "plugins.h"
#include "symbols.h"
#include "toolbar.h"
+#include "geanymenubuttonaction.h"
GeanyInterfacePrefs interface_prefs;
@@ -58,7 +59,8 @@
static struct
{
- /* pointers to widgets only sensitive when there is at least one document */
+ /* pointers to widgets only sensitive when there is at least one document, the pointers can
+ * also be GtkAction objects, so check each pointer before using it */
GPtrArray *document_buttons;
GtkWidget *menu_insert_include_items[2];
GtkWidget *popup_goto_items[4];
@@ -610,7 +612,7 @@
g_ptr_array_add(widgets.document_buttons, ui_lookup_widget(main_widgets.window, widget_name))
#define add_doc_toolitem(widget_name) \
- g_ptr_array_add(widgets.document_buttons, toolbar_get_widget_by_name(widget_name))
+ g_ptr_array_add(widgets.document_buttons, toolbar_get_action_by_name(widget_name))
static void init_document_widgets(void)
{
@@ -686,7 +688,10 @@
for (i = 0; i < widgets.document_buttons->len; i++)
{
GtkWidget *widget = g_ptr_array_index(widgets.document_buttons, i);
- ui_widget_set_sensitive(widget, enable);
+ if (GTK_IS_ACTION(widget))
+ gtk_action_set_sensitive(GTK_ACTION(widget), enable);
+ else
+ ui_widget_set_sensitive(widget, enable);
}
}
@@ -956,7 +961,8 @@
{
grf.recent_queue = ui_prefs.recent_queue;
grf.menubar = ui_widgets.recent_files_menu_menubar;
- grf.toolbar = ui_widgets.recent_files_menu_toolbar;
+ grf.toolbar = geany_menu_button_action_get_menu(GEANY_MENU_BUTTON_ACTION(
+ toolbar_get_action_by_name("Open")));
grf.activate_cb = recent_file_activate_cb;
}
return &grf;
@@ -1798,10 +1804,39 @@
}
+void ui_init_toolbar_widgets(void)
+{
+ widgets.save_buttons[1] = toolbar_get_widget_by_name("Save");
+ widgets.save_buttons[3] = toolbar_get_widget_by_name("SaveAll");
+ widgets.redo_items[2] = toolbar_get_widget_by_name("Redo");
+ widgets.undo_items[2] = toolbar_get_widget_by_name("Undo");
+}
+
+
+static void init_recent_files(void)
+{
+ GtkWidget *toolbar_recent_files_menu;
+
+ /* add recent files to the File menu */
+ ui_widgets.recent_files_menuitem = ui_lookup_widget(main_widgets.window, "recent_files1");
+ ui_widgets.recent_files_menu_menubar = gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(ui_widgets.recent_files_menuitem),
+ ui_widgets.recent_files_menu_menubar);
+
+ /* add recent files to the toolbar Open button */
+ toolbar_recent_files_menu = gtk_menu_new();
+ g_object_ref(toolbar_recent_files_menu);
+ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(
+ toolbar_get_action_by_name("Open")), toolbar_recent_files_menu);
+}
+
+
void ui_init(void)
{
add_stock_items();
+ init_recent_files();
+
ui_widgets.statusbar = ui_lookup_widget(main_widgets.window, "statusbar");
ui_widgets.print_page_setup = ui_lookup_widget(main_widgets.window, "page_setup1");
@@ -1820,16 +1855,13 @@
widgets.menu_insert_include_items[0] = ui_lookup_widget(main_widgets.editor_menu, "insert_include1");
widgets.menu_insert_include_items[1] = ui_lookup_widget(main_widgets.window, "insert_include2");
widgets.save_buttons[0] = ui_lookup_widget(main_widgets.window, "menu_save1");
- widgets.save_buttons[1] = toolbar_get_widget_by_name("Save");
widgets.save_buttons[2] = ui_lookup_widget(main_widgets.window, "menu_save_all1");
- widgets.save_buttons[3] = toolbar_get_widget_by_name("SaveAll");
widgets.redo_items[0] = ui_lookup_widget(main_widgets.editor_menu, "redo1");
widgets.redo_items[1] = ui_lookup_widget(main_widgets.window, "menu_redo2");
- widgets.redo_items[2] = toolbar_get_widget_by_name("Redo");
widgets.undo_items[0] = ui_lookup_widget(main_widgets.editor_menu, "undo1");
widgets.undo_items[1] = ui_lookup_widget(main_widgets.window, "menu_undo2");
- widgets.undo_items[2] = toolbar_get_widget_by_name("Undo");
+ ui_init_toolbar_widgets();
init_document_widgets();
create_config_files_menu();
toolbar_add_config_file_menu_item();
@@ -1853,7 +1885,6 @@
autosep->ref_count++;
else
autosep->ref_count--;
-
auto_separator_update(autosep);
}
Modified: trunk/src/ui_utils.h
===================================================================
--- trunk/src/ui_utils.h 2009-06-18 14:20:07 UTC (rev 3873)
+++ trunk/src/ui_utils.h 2009-06-20 16:51:32 UTC (rev 3874)
@@ -103,10 +103,8 @@
{
/* menu widgets */
GtkWidget *toolbar_menu;
- GtkWidget *new_file_menu;
GtkWidget *recent_files_menuitem;
GtkWidget *recent_files_menu_menubar;
- GtkWidget *recent_files_menu_toolbar;
GtkWidget *print_page_setup;
GtkWidget *recent_projects_menuitem;
GtkWidget *recent_projects_menu_menubar;
@@ -205,6 +203,8 @@
void ui_init(void);
+void ui_init_toolbar_widgets(void);
+
void ui_add_config_file_menu_item(const gchar *real_path, const gchar *label,
GtkContainer *parent);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list