+ GtkWidget *vbox;
+ GtkWidget *menu_bar;
+ GtkWidget *buttons_bar;
+ GtkWidget *scrollwin;
+ GtkWidget *hpaned;
+ GtkWidget *vpaned;
+
+ mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(GTK_WINDOW(mainwin), PACKAGE);
+ gtk_window_set_default_size(GTK_WINDOW(mainwin),
+ cfg->win_width, cfg->win_height);
+ gtk_container_set_border_width(GTK_CONTAINER(mainwin), 0);
+
+ /* Window DESTROY event. */
+ g_signal_connect(mainwin, "destroy",
+ G_CALLBACK(WindowDestroyEvent), NULL);
+
+ g_signal_connect(G_OBJECT(mainwin), "configure-event",
+ G_CALLBACK(mainwin_configure_event), NULL);
+
+ /*
+ * vbox contains the menu bar and body_vbox (for all remaining
+ * items).
+ */
+ vbox = gtk_vbox_new(FALSE, 1);
+
+ /* Creating the menu bar. */
+ menu_bar = AddMenu();
+ /* Adding menu bar to vbox */
+ gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 1);
+
+ /* Creating the buttons bar. */
+ buttons_bar = AddButtons();
+ /* Adding buttons bar to vbox */
+ gtk_box_pack_start(GTK_BOX(vbox), buttons_bar, FALSE, FALSE, 1);
+
+ /*
+ * vpaned will contain:
+ * Top: registers and disassembly windows.
+ * Bottom: memory window
+ */
+ vpaned = gtk_vpaned_new();
+ gtk_paned_set_position(GTK_PANED(vpaned), cfg->vpane_pos);
+ g_signal_connect(G_OBJECT(vpaned), "notify::position",
+ G_CALLBACK(vpaned_notify_event), vpaned);
+
+ /* hpaned will contain registers and disassembly windows. */
+ hpaned = gtk_hpaned_new();
+ gtk_paned_set_position(GTK_PANED(hpaned), cfg->hpane_pos);
+ g_signal_connect(G_OBJECT(hpaned), "notify::position",
+ G_CALLBACK(hpaned_notify_event), hpaned);
+
+ /* 8051 registers frame. */
+ scrollwin = regwin_init();
+ gtk_paned_pack1(GTK_PANED(hpaned), scrollwin, FALSE, FALSE);
+
+ /* Program disassembly frame. */
+ scrollwin = pgmwin_init();
+ gtk_paned_pack2(GTK_PANED(hpaned), scrollwin, TRUE, FALSE);
+
+ gtk_paned_pack1(GTK_PANED(vpaned), hpaned, FALSE, FALSE);
+
+ /* Memory dump frame. */
+ scrollwin = memwin_init();
+ gtk_paned_pack2(GTK_PANED(vpaned), scrollwin, TRUE, FALSE);
+
+ /* Adding vpaned window to vbox */
+ gtk_box_pack_start(GTK_BOX(vbox), vpaned, true, true, 1);
+
+ /* Adding the vbox to the main window. */
+ gtk_container_add(GTK_CONTAINER(mainwin), vbox);
+
+ gtk_widget_show_all(mainwin);