summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_widgets.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_widgets.c')
-rw-r--r--mixgtk/mixgtk_widgets.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/mixgtk/mixgtk_widgets.c b/mixgtk/mixgtk_widgets.c
index d665cc6..243c6b3 100644
--- a/mixgtk/mixgtk_widgets.c
+++ b/mixgtk/mixgtk_widgets.c
@@ -31,6 +31,9 @@
/* dialog names */
static const gchar * dnames_[] = {
"main_window",
+ "mixvm_window",
+ "mixal_window",
+ "devices_window",
"word_dialog",
"about_dialog",
"goto_dialog",
@@ -42,6 +45,8 @@ static const gchar * dnames_[] = {
"symbols_dialog"
};
+const gchar *SPLIT_MAIN_NAME_ = "split_main_window";
+
#define DLG_NO_ (sizeof (dnames_) / sizeof(dnames_[0]))
/* widget names */
@@ -80,6 +85,8 @@ static const gchar *names_[] = {
#define GPL_TEXT_ "gpl_text"
#define AUTOSAVE_ITEM_ "save_on_exit"
+static gboolean split_;
+
/* the glade specs */
static GladeXML *xml_[DLG_NO_] = {NULL};
/* the about dialog */
@@ -122,10 +129,26 @@ init_about_ (void)
/* create a new factory from an xml glade file */
gboolean
-mixgtk_widget_factory_init (const char *glade_file)
+mixgtk_widget_factory_init (gboolean split)
{
+ const gchar *glade_file = GLADE_FILE;
+ const gchar *local_glade_file = LOCAL_GLADE_FILE;
+ FILE *f;
+
glade_init ();
+ split_ = split;
+
+ f = fopen (glade_file, "r");
+ if (!f) {
+ f = fopen (local_glade_file, "r");
+ if (!f) return FALSE;
+ glade_file = local_glade_file;
+ }
+ fclose (f);
file_ = g_strdup (glade_file);
+
+ if (split_) dnames_[MIXGTK_MAIN] = SPLIT_MAIN_NAME_;
+
init_xml_ (MIXGTK_MAIN);
init_autosave_ ();
return TRUE;
@@ -133,16 +156,18 @@ mixgtk_widget_factory_init (const char *glade_file)
/* get a widget */
GtkWidget *
-mixgtk_widget_factory_get (mixgtk_widget_id_t widget)
+mixgtk_widget_factory_get (mixgtk_dialog_id_t dlg, mixgtk_widget_id_t widget)
{
g_return_val_if_fail (widget < WIDGET_NO_, NULL);
- return glade_xml_get_widget (xml_[MIXGTK_MAIN], names_[widget]);
+ if (!split_ && dlg < MIXGTK_WORD_DIALOG) dlg = MIXGTK_MAIN;
+ return mixgtk_widget_factory_get_child_by_name (dlg, names_[widget]);
}
GtkWidget *
mixgtk_widget_factory_get_dialog (mixgtk_dialog_id_t dlg)
{
+ if (!split_ && dlg < MIXGTK_WORD_DIALOG) dlg = MIXGTK_MAIN;
if (!xml_[dlg]) init_xml_ (dlg);
return glade_xml_get_widget (xml_[dlg], dnames_[dlg]);
}
@@ -153,6 +178,7 @@ mixgtk_widget_factory_get_child_by_name (mixgtk_dialog_id_t dlg,
{
g_return_val_if_fail (dlg < DLG_NO_, NULL);
g_return_val_if_fail (name != NULL, NULL);
+ if (!split_ && dlg < MIXGTK_WORD_DIALOG) dlg = MIXGTK_MAIN;
if (!xml_[dlg]) init_xml_ (dlg);
return glade_xml_get_widget (xml_[dlg], name);
}