From 0e432d00a2ef323edf48960fbce2c087ee2023c6 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Wed, 30 Jun 2004 14:07:51 +0000 Subject: detachable windows in gtk+2 --- mixgtk/mixgtk_mixal.c | 87 ++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 43 deletions(-) (limited to 'mixgtk/mixgtk_mixal.c') diff --git a/mixgtk/mixgtk_mixal.c b/mixgtk/mixgtk_mixal.c index 17f726f..1ee9475 100644 --- a/mixgtk/mixgtk_mixal.c +++ b/mixgtk/mixgtk_mixal.c @@ -1,7 +1,7 @@ /* -*-c-*- -------------- mixgtk_mixal.c : * Implementation of the functions declared in mixgtk_mixal.h * ------------------------------------------------------------------ - * $Id: mixgtk_mixal.c,v 1.18 2004/06/24 01:40:47 jao Exp $ + * $Id: mixgtk_mixal.c,v 1.19 2004/06/30 14:07:53 jao Exp $ * ------------------------------------------------------------------ * Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. * @@ -30,17 +30,13 @@ #include "mixgtk_fontsel.h" #include "mixgtk_mixal.h" - -#define MIXAL_TAB_POS_ 2 - static mix_vm_t *vm_ = NULL; static GtkTreeView *clist_ = NULL; static GtkListStore *clist_store_ = NULL; static gulong lineno_; -static const gchar *LOCAL_STATUS_BAR_ = "mixal_statusbar"; -static GtkStatusbar *status_; -static gint status_context_; +static GtkStatusbar *status_ = NULL; +static gint status_context_ = 0; static GPtrArray *tips_text_ = NULL; static GtkWidget *symbols_dlg_ = NULL; @@ -149,18 +145,15 @@ fill_symbols_ (const mix_symbol_table_t *table) insert_symbol_, NULL); } -static gboolean -init_clist_ (mixgtk_dialog_id_t top) +static void +init_clist_ (void) { GtkStockItem item; GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkCellRenderer *bprenderer = gtk_cell_renderer_pixbuf_new (); - clist_ = GTK_TREE_VIEW - (mixgtk_widget_factory_get (top, MIXGTK_WIDGET_MIXAL)); - - g_assert (clist_); + clist_ = GTK_TREE_VIEW (gtk_tree_view_new ()); clist_store_ = gtk_list_store_new (CLIST_COL_NO, G_TYPE_STRING, @@ -173,6 +166,7 @@ init_clist_ (mixgtk_dialog_id_t top) gtk_tree_view_set_model (clist_, GTK_TREE_MODEL (clist_store_)); g_object_unref (G_OBJECT (clist_store_)); + gtk_tree_view_set_rules_hint (clist_, TRUE); gtk_tree_view_append_column (clist_, @@ -206,44 +200,51 @@ init_clist_ (mixgtk_dialog_id_t top) pc_stock_id_ = item.stock_id; } - return TRUE; -} + symbols_dlg_ = NULL; + symbols_view_ = NULL; + g_signal_connect (G_OBJECT (clist_), "event", + G_CALLBACK (mixal_event_), NULL); -/* initialise the mixal widgets */ -gboolean -mixgtk_mixal_init (mix_vm_t *vm, mixgtk_dialog_id_t top) -{ - static gboolean restart = FALSE; - g_return_val_if_fail (vm != NULL, FALSE); - vm_ = vm; + mixgtk_fontsel_set_font (MIX_FONT_MIXAL, GTK_WIDGET (clist_)); - if (!init_clist_ (top)) return FALSE; + g_object_ref (clist_); - if (!mixgtk_config_is_split ()) - status_ = GTK_STATUSBAR - (mixgtk_widget_factory_get (MIXGTK_MAIN, MIXGTK_WIDGET_STATUSBAR)); - else - status_ = GTK_STATUSBAR - (mixgtk_widget_factory_get_child_by_name (top, LOCAL_STATUS_BAR_)); + gtk_widget_show (GTK_WIDGET (clist_)); - g_return_val_if_fail (status_ != NULL, FALSE); - status_context_ = gtk_statusbar_get_context_id (status_, "MIXAL status"); +} - symbols_dlg_ = NULL; - symbols_view_ = NULL; - g_signal_connect (G_OBJECT (clist_), "event", - G_CALLBACK (mixal_event_), NULL); +/* initialise the mixal widgets */ +GtkWidget * +mixgtk_mixal_init (mix_vm_t *vm) +{ + if (vm != NULL) vm_ = vm; - mixgtk_fontsel_set_font (MIX_FONT_MIXAL, GTK_WIDGET (clist_)); + if (vm_ == NULL) return FALSE; + + if (clist_ == NULL) init_clist_ (); - if (restart) mixgtk_mixal_load_file (); - else restart = TRUE; + status_ = NULL; + return GTK_WIDGET (clist_); +} + +void +mixgtk_mixal_reparent (GtkStatusbar *status) +{ + g_assert (status != NULL); + mixgtk_mixal_pop_status (); + status_ = status; + status_context_ = gtk_statusbar_get_context_id (status_, "MIXAL status"); +} - return TRUE; +void +mixgtk_mixal_pop_status (void) +{ + if (status_ != NULL) + gtk_statusbar_pop (status_, status_context_); } /* load the corresponding mixal file */ @@ -549,15 +550,15 @@ on_symbols_activate () void on_notebook_switch_page (GtkNotebook *notebook) { - gint p = gtk_notebook_get_current_page (notebook); - if (p != MIXAL_TAB_POS_) gtk_statusbar_pop (status_, status_context_); - if (p == MIXAL_TAB_POS_) mixgtk_mixal_update (); +/* gint p = gtk_notebook_get_current_page (notebook); */ +/* if (p != MIXAL_TAB_POS_) gtk_statusbar_pop (status_, status_context_); */ +/* if (p == MIXAL_TAB_POS_) mixgtk_mixal_update (); */ } void on_mixal_leave_notify_event () { - gtk_statusbar_pop (status_, status_context_); + if (status_ != NULL) gtk_statusbar_pop (status_, status_context_); } void -- cgit v1.2.3