summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk.c')
-rw-r--r--mixgtk/mixgtk.c68
1 files changed, 37 insertions, 31 deletions
diff --git a/mixgtk/mixgtk.c b/mixgtk/mixgtk.c
index 6089dd2..2f60cb2 100644
--- a/mixgtk/mixgtk.c
+++ b/mixgtk/mixgtk.c
@@ -38,33 +38,11 @@
static const gchar *SPLIT_ARG_ = "-s";
static const gchar *SPLIT_LONG_ARG_ = "--s";
-/* initialise the app */
gboolean
-mixgtk_init (int argc, char *argv[])
+mixgtk_restart (gboolean split)
{
mix_vm_t *vm;
- gboolean split = FALSE;
- gint k;
-
- mix_init_lib ();
-
- if (!mixgtk_config_load ())
- {
- g_error ("Unable to read configuration\n");
- return FALSE;
- }
- for (k = 0; k < argc; ++k)
- if (!strcmp (argv[k], SPLIT_ARG_) || !strcmp (argv[k], SPLIT_LONG_ARG_))
- {
- split = TRUE;
- break;
- }
- if (!split && mixgtk_config_is_split ()) split = TRUE;
- mixgtk_config_set_split (split);
-
- gtk_init (&argc, &argv);
-
if (!mixgtk_widget_factory_init (split))
{
g_error ("Unable to initialise application: missing glade file");
@@ -77,9 +55,6 @@ mixgtk_init (int argc, char *argv[])
return FALSE;
}
- if (split)
- gtk_widget_show (mixgtk_widget_factory_get_dialog (MIXGTK_MAIN));
-
vm = mixgtk_cmd_dispatcher_get_vm ();
if (!mixgtk_mixvm_init (vm, MIXGTK_MIXVM_DIALOG))
@@ -108,19 +83,50 @@ mixgtk_init (int argc, char *argv[])
g_error ("Unable to initialise application (visibility)\n");
return FALSE;
}
-
+
+ mixgtk_input_init ();
+ mixgtk_colorsel_init ();
mixgtk_fontsel_load_defaults (split);
-
+
+ gtk_widget_show (mixgtk_widget_factory_get_dialog (MIXGTK_MAIN));
+ mixgtk_mixvm_update_vm_widgets ();
+
return TRUE;
}
+/* initialise the app */
+gboolean
+mixgtk_init (int argc, char *argv[])
+{
+ gboolean split = FALSE;
+ gint k;
+
+ mix_init_lib ();
+
+ if (!mixgtk_config_load ())
+ {
+ g_error ("Unable to read configuration\n");
+ return FALSE;
+ }
+
+ for (k = 0; k < argc; ++k)
+ if (!strcmp (argv[k], SPLIT_ARG_) || !strcmp (argv[k], SPLIT_LONG_ARG_))
+ {
+ split = TRUE;
+ break;
+ }
+ if (!split && mixgtk_config_is_split ()) split = TRUE;
+ mixgtk_config_set_split (split);
+
+ gtk_init (&argc, &argv);
+
+ return mixgtk_restart (split);
+}
+
/* main loop */
void
mixgtk_main (void)
{
- gtk_widget_show (mixgtk_widget_factory_get_dialog (MIXGTK_MAIN));
- mixgtk_mixvm_update_vm_widgets ();
-
gtk_main ();
}