diff options
Diffstat (limited to 'mixgtk')
-rw-r--r-- | mixgtk/mixgtk_wm.c | 84 | ||||
-rw-r--r-- | mixgtk/mixgtk_wm.h | 5 |
2 files changed, 43 insertions, 46 deletions
diff --git a/mixgtk/mixgtk_wm.c b/mixgtk/mixgtk_wm.c index ec7c247..4ee3193 100644 --- a/mixgtk/mixgtk_wm.c +++ b/mixgtk/mixgtk_wm.c @@ -1,7 +1,7 @@ /* -*-c-*- -------------- mixgtk_wm.c : * Implementation of the functions declared in mixgtk_wm.h * ------------------------------------------------------------------ - * $Id: mixgtk_wm.c,v 1.9 2004/06/30 22:46:15 jao Exp $ + * $Id: mixgtk_wm.c,v 1.10 2004/07/02 00:13:15 jao Exp $ * ------------------------------------------------------------------ * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. * @@ -43,7 +43,6 @@ typedef struct window_info_t_ const gchar *menu_name; const gchar *config_key; gboolean detached; - const gchar *toolbar_name; void (*detach) (void); void (*attach) (void); } window_info_t_; @@ -73,6 +72,7 @@ static void init_visibility_ (void); static void init_tb_ (void); static void init_about_ (void); static void init_autosave_ (void); +static void show_toolbars_ (gboolean show); static void add_page_ (GtkWidget *w, mixgtk_window_id_t id); static void mixvm_attach_ (void); static void mixvm_detach_ (void); @@ -85,11 +85,11 @@ static void on_nb_switch_ (GtkNotebook *notebook, GtkWidget *page, static window_info_t_ infos_[] = { {MIXGTK_MIXVM_DIALOG, NULL, NULL, "detach_vm", "MIX.detach", - FALSE, "mixvm_toolbar", mixvm_detach_, mixvm_attach_}, + FALSE, mixvm_detach_, mixvm_attach_}, {MIXGTK_MIXAL_DIALOG, NULL, NULL, "detach_source", "MIXAL.detach", - FALSE, "mixal_toolbar", mixal_detach_, mixal_attach_}, + FALSE, mixal_detach_, mixal_attach_}, {MIXGTK_DEVICES_DIALOG, NULL, NULL, "detach_dev", "Devices.detach", - FALSE, "devices_toolbar", dev_detach_, dev_attach_} + FALSE, dev_detach_, dev_attach_} }; static size_t INF_NO_ = sizeof (infos_) / sizeof (infos_[0]); @@ -160,36 +160,6 @@ mixgtk_wm_attach_window (mixgtk_window_id_t w) } } -void -mixgtk_wm_show_toolbars (gboolean show) -{ - static const gchar *MAIN_TB_NAME = "main_toolbar"; - int k; - - GtkWidget *toolbar = - mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, MAIN_TB_NAME); - - if (toolbar != NULL) - { - if (show) gtk_widget_show (toolbar); - else gtk_widget_hide (toolbar); - } - - for (k = 0; k < INF_NO_; ++k) - { - if (infos_[k].toolbar_name != NULL) - { - GtkWidget *tb = mixgtk_widget_factory_get_child_by_name - (infos_[k].dialog, infos_[k].toolbar_name); - if (tb) - { - if (show) gtk_widget_show (tb); else gtk_widget_hide (tb); - } - } - } - - mixgtk_config_set_show_toolbars (show); -} /* callbacks */ @@ -208,6 +178,14 @@ on_detach_clicked (GtkWidget *ignored) } void +on_attach_all_clicked () +{ + gint k; + for (k = INF_NO_; k > 0; --k) + if (infos_[k - 1].detached) mixgtk_wm_attach_window (k - 1); +} + +void on_attach_toggled (GtkCheckMenuItem *item) { gint k; @@ -234,7 +212,7 @@ void on_show_toolbars_toggled (GtkCheckMenuItem *item) { if (item->active != mixgtk_config_show_toolbars ()) - mixgtk_wm_show_toolbars (item->active); + show_toolbars_ (item->active); } void @@ -278,11 +256,6 @@ init_notebook_ (void) GTK_NOTEBOOK (mixgtk_widget_factory_get (MIXGTK_MAIN, MIXGTK_WIDGET_NOTEBOOK)); g_assert (notebook_ != NULL); - - gtk_notebook_set_tab_pos (notebook_, GTK_POS_TOP); - gtk_notebook_popup_disable (notebook_); - gtk_notebook_remove_page (notebook_, 0); - gtk_widget_show (GTK_WIDGET (notebook_)); } @@ -451,13 +424,38 @@ init_tb_ (void) g_assert (tb_menu_ != NULL); gtk_check_menu_item_set_active (tb_menu_, mixgtk_config_show_toolbars ()); - mixgtk_wm_show_toolbars (mixgtk_config_show_toolbars ()); + show_toolbars_ (mixgtk_config_show_toolbars ()); g_signal_connect (G_OBJECT (tb_menu_), "toggled", G_CALLBACK (on_show_toolbars_toggled), NULL); } static void +show_toolbars_ (gboolean show) +{ + static const gchar *HANDLE_NAME = "tb_handle"; + + int k; + + GtkWidget *handle = + mixgtk_widget_factory_get_child_by_name (MIXGTK_MAIN, HANDLE_NAME); + + if (show) + gtk_widget_show (handle); + else + gtk_widget_hide (handle); + + for (k = 0; k < INF_NO_; ++k) + { + GtkWidget *hd = + mixgtk_widget_factory_get_child_by_name (infos_[k].dialog, HANDLE_NAME); + if (show) gtk_widget_show (hd); else gtk_widget_hide (hd); + } + + mixgtk_config_set_show_toolbars (show); +} + +static void init_autosave_ (void) { #define AUTOSAVE_ITEM_ "save_on_exit" @@ -562,3 +560,5 @@ on_nb_switch_ (GtkNotebook *notebook, GtkWidget *page, && (page != infos_[MIXGTK_MIXAL_WINDOW].widget)) mixgtk_mixal_pop_status (); } + + diff --git a/mixgtk/mixgtk_wm.h b/mixgtk/mixgtk_wm.h index c186b33..b6faf6e 100644 --- a/mixgtk/mixgtk_wm.h +++ b/mixgtk/mixgtk_wm.h @@ -1,7 +1,7 @@ /* -*-c-*- ---------------- mixgtk_wm.h : * Functions for window management * ------------------------------------------------------------------ - * $Id: mixgtk_wm.h,v 1.3 2004/06/30 14:07:51 jao Exp $ + * $Id: mixgtk_wm.h,v 1.4 2004/07/02 00:13:16 jao Exp $ * ------------------------------------------------------------------ * Copyright (C) 2001, 2004 Free Software Foundation, Inc. * @@ -42,8 +42,5 @@ mixgtk_wm_attach_window (mixgtk_window_id_t w); extern void mixgtk_wm_detach_window (mixgtk_window_id_t w); -extern void -mixgtk_wm_show_toolbars (gboolean show); - #endif /* MIXGTK_WM_H */ |