+pgmwin_init(void)
+{
+ GtkWidget *frame;
+ GtkWidget *scrollwin;
+ GtkListStore *store;
+ GtkTreeSelection *selection;
+
+ frame = gtk_frame_new("Program");
+
+ scrollwin = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwin),
+ GTK_SHADOW_ETCHED_OUT);
+
+ /* Automatically add scrollbars when necessary. */
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+
+ gtk_container_add(GTK_CONTAINER(frame), scrollwin);
+
+ /* Creating a model */
+ store = pgmwin_init_store();
+
+ /* Creating the view component */
+ pgmlist = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(pgmlist), TRUE);
+ gtk_container_add(GTK_CONTAINER(scrollwin), pgmlist);
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pgmlist));
+
+ /* Only one row can be selected at a time. */
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
+
+ g_signal_connect(selection, "changed",
+ G_CALLBACK(pgmwin_sel_changed_event), NULL);
+
+ pgmwin_init_columns();
+
+ /*
+ * The tree view has acquired its own reference to the model, so we can
+ * drop ours. That way the model will be freed automatically when the
+ * tree view is destroyed.
+ */
+ g_object_unref(store);
+
+ return frame;
+}
+
+/* Show disassembled program. */
+void
+pgmwin_Disasm(void)