Add support for saving UI settings to config file
[emu8051.git] / src / emugtk.c
index bf22a9e..f84ab0b 100644 (file)
@@ -44,6 +44,8 @@
 #include "pgmwin.h"
 #include "memwin.h"
 
+#define BUTTONS_BORDER 2
+
 static int running;
 static int running_function_tag;
 static GtkWidget *mainwin;
@@ -116,7 +118,7 @@ button_add_pix(GtkWidget *box, char **xpm)
                gdk_pixbuf_new_from_xpm_data((const char **) xpm));
        gtk_container_add(GTK_CONTAINER(button), icon);
 
-       gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, BUTTONS_BORDER);
 
        return button;
 }
@@ -198,27 +200,27 @@ AddButtons(void)
 
        /* Creating the RESET button. */
        button = button_add_pix(button_hbox, reset_xpm);
-       gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                          GTK_SIGNAL_FUNC(emugtk_ResetEvent),
-                          NULL);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(emugtk_ResetEvent),
+                        NULL);
 
        /* Creating the RUN button. */
        button = button_add_pix(button_hbox, run_xpm);
-       gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                          GTK_SIGNAL_FUNC(emugtk_RunEvent),
-                          NULL);
+       g_signal_connect(button, "clicked",
+                        G_CALLBACK(emugtk_RunEvent),
+                        NULL);
 
        /* Creating STOP button. */
        button = button_add_pix(button_hbox, stop_xpm);
-       gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                          GTK_SIGNAL_FUNC(emugtk_StopEvent),
-                          NULL);
+       g_signal_connect(GTK_OBJECT(button), "clicked",
+                        G_CALLBACK(emugtk_StopEvent),
+                        NULL);
 
        /* Creating STEP button. */
        button = button_add_pix(button_hbox, step_xpm);
-       gtk_signal_connect(GTK_OBJECT(button), "clicked",
-                          GTK_SIGNAL_FUNC(emugtk_StepEvent),
-                          NULL);
+       g_signal_connect(GTK_OBJECT(button), "clicked",
+                        G_CALLBACK(emugtk_StepEvent),
+                        NULL);
 
        return button_hbox;
 }
@@ -251,24 +253,17 @@ emugtk_window_init(void)
        GtkWidget *main_vbox;
        GtkWidget *menu_bar;
        GtkWidget *buttons_bar;
-       GtkWidget *emufixed;
-       GtkWidget *fixed_frame;
+       GtkWidget *scrollwin;
+       GtkWidget *hpaned;
+       GtkWidget *vpaned;
 
        mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(mainwin), PACKAGE);
-       gtk_widget_set_usize(GTK_WIDGET(mainwin),
-                            MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT);
        gtk_container_set_border_width(GTK_CONTAINER(mainwin), 0);
 
        /* Window DESTROY event. */
-       gtk_signal_connect(GTK_OBJECT(mainwin), "destroy",
-                          GTK_SIGNAL_FUNC(WindowDestroyEvent), NULL);
-
-       /*
-        * Setting main window geometry based on command line options
-        * (if specified).
-       */
-       /*MainWindowSetGeometry();*/
+       g_signal_connect(mainwin, "destroy",
+                        G_CALLBACK(WindowDestroyEvent), NULL);
 
        /*
         * main_vbox contains the menu bar and body_vbox (for all remaining
@@ -286,25 +281,32 @@ emugtk_window_init(void)
        /* Adding buttons bar to main_vbox */
        gtk_box_pack_start(GTK_BOX(main_vbox), buttons_bar, FALSE, FALSE, 1);
 
-       /* Emulator fixed window. */
-       emufixed = gtk_fixed_new();
-       gtk_widget_set_usize(GTK_WIDGET(emufixed), MAIN_WIN_WIDTH,
-                            REG_WIN_HEIGHT + MEM_WIN_HEIGHT + 10);
+       /*
+        * vpaned will contain:
+        *   Top:    registers and disassembly windows.
+        *   Bottom: memory window
+        */
+       vpaned = gtk_vpaned_new();
+
+       /* hpaned will contain registers and disassembly windows. */
+       hpaned = gtk_hpaned_new();
 
        /* 8051 registers frame. */
-       fixed_frame = regwin_init(REG_WIN_WIDTH, REG_WIN_HEIGHT);
-       gtk_fixed_put(GTK_FIXED(emufixed), fixed_frame, 0, 0);
+       scrollwin = regwin_init();
+       gtk_paned_pack1(GTK_PANED(hpaned), scrollwin, FALSE, FALSE);
 
        /* Program disassembly frame. */
-       fixed_frame = pgmwin_init(PGM_WIN_WIDTH, PGM_WIN_HEIGHT);
-       gtk_fixed_put(GTK_FIXED(emufixed), fixed_frame, REG_WIN_WIDTH + 10, 0);
+       scrollwin = pgmwin_init();
+       gtk_paned_pack2(GTK_PANED(hpaned), scrollwin, TRUE, FALSE);
+
+       gtk_paned_pack1(GTK_PANED(vpaned), hpaned, FALSE, FALSE);
 
        /* Memory dump frame. */
-       fixed_frame = memwin_init(MEM_WIN_WIDTH, MEM_WIN_HEIGHT);
-       gtk_fixed_put(GTK_FIXED(emufixed), fixed_frame, 0, REG_WIN_HEIGHT);
+       scrollwin = memwin_init();
+       gtk_paned_pack2(GTK_PANED(vpaned), scrollwin, TRUE, FALSE);
 
-       /* Adding fixed window to main_vbox */
-       gtk_box_pack_start(GTK_BOX(main_vbox), emufixed, FALSE, FALSE, 1);
+       /* Adding vpaned window to main_vbox */
+       gtk_box_pack_start(GTK_BOX(main_vbox), vpaned, true, true, 1);
 
        /* Adding the main_vbox to the main window. */
        gtk_container_add(GTK_CONTAINER(mainwin), main_vbox);
@@ -330,7 +332,7 @@ AddMenuSeparator(GtkWidget *menu)
        GtkWidget *item;
 
        item = gtk_menu_item_new();
-       gtk_menu_append(GTK_MENU(menu), item);
+       gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
 }
 
 void