summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_mixal.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_mixal.c')
-rw-r--r--mixgtk/mixgtk_mixal.c87
1 files changed, 44 insertions, 43 deletions
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