diff options
author | Joakim Sindholt <opensource@zhasha.com> | 2010-04-09 01:03:35 +0200 |
---|---|---|
committer | Joakim Sindholt <opensource@zhasha.com> | 2010-04-09 01:03:35 +0200 |
commit | f506bc267fdedc4880f5d1283084a9e5c9243788 (patch) | |
tree | 5ce4cfd614bc44de9428beb7ef44cf97879716e1 | |
parent | 8beb76ae12d6952f9351c08933f0709e5cda64e3 (diff) |
main: add about dialog
-rw-r--r-- | src/csimport.c | 36 | ||||
-rw-r--r-- | src/main.c | 115 | ||||
-rw-r--r-- | src/main.vala | 55 |
3 files changed, 156 insertions, 50 deletions
diff --git a/src/csimport.c b/src/csimport.c index 0a259b1..ae2f422 100644 --- a/src/csimport.c +++ b/src/csimport.c @@ -114,19 +114,19 @@ enum { GUI_CS_IMPORT_DUMMY_PROPERTY }; GType gui_main_window_get_type (void); -static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self); -static void __lambda18__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); +static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self); +static void __lambda19__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); static void gui_cs_import_open_cs (GUICSImport* self, const char* filename); -static void _lambda19_ (GtkButton* source, GUICSImport* self); -static void __lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _lambda20_ (GtkButton* source, GUICSImport* self); +static void __lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self); static void gui_cs_import_update_ok_button (GUICSImport* self); static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _sender, gpointer self); GType emulation_cs_get_type (void); void gui_main_window_add_cs (GUIMainWindow* self, const char* name, EmulationCS* cs); EmulationCS* emulation_cs_new (guint32* dwords, guint len); EmulationCS* emulation_cs_construct (GType object_type, guint32* dwords, guint len); -static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self); -static void __lambda20__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); +static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self); +static void __lambda21__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); GUICSImport* gui_cs_import_new (void); GUICSImport* gui_cs_import_construct (GType object_type); GType emulation_packet_get_type (void); @@ -150,7 +150,7 @@ static gpointer _g_object_ref0 (gpointer self) { } -static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) { +static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) { GtkTreePath* path; gint* indices; char* _tmp0_; @@ -168,12 +168,12 @@ static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeMode } -static void __lambda18__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { - _lambda18_ (cell_layout, cell, tree_model, iter, self); +static void __lambda19__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { + _lambda19_ (cell_layout, cell, tree_model, iter, self); } -static void _lambda19_ (GtkButton* source, GUICSImport* self) { +static void _lambda20_ (GtkButton* source, GUICSImport* self) { GtkFileChooserDialog* fc; g_return_if_fail (source != NULL); fc = g_object_ref_sink ((GtkFileChooserDialog*) gtk_file_chooser_dialog_new ("Open File", (GtkWindow*) self, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL, NULL)); @@ -187,8 +187,8 @@ static void _lambda19_ (GtkButton* source, GUICSImport* self) { } -static void __lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self) { - _lambda19_ (_sender, self); +static void __lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self) { + _lambda20_ (_sender, self); } @@ -197,7 +197,7 @@ static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _ } -static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self) { +static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self) { g_return_if_fail (source != NULL); if (id == GTK_RESPONSE_OK) { EmulationCS* _tmp0_; @@ -208,8 +208,8 @@ static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self) { } -static void __lambda20__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { - _lambda20_ (_sender, response_id, self); +static void __lambda21__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { + _lambda21_ (_sender, response_id, self); } @@ -268,13 +268,13 @@ GUICSImport* gui_cs_import_construct (GType object_type) { gtk_window_set_title ((GtkWindow*) self, "Import CS"); col = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (builder, "value_column"), GTK_IS_TREE_VIEW_COLUMN (_tmp0_) ? ((GtkTreeViewColumn*) _tmp0_) : NULL)); cell = _g_object_ref0 ((_tmp1_ = gtk_builder_get_object (builder, "value_cell"), GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL)); - gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda18__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref); + gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda19__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref); self->priv->meta_store = (_tmp3_ = _g_object_ref0 ((_tmp2_ = gtk_builder_get_object (builder, "meta_store"), GTK_IS_LIST_STORE (_tmp2_) ? ((GtkListStore*) _tmp2_) : NULL)), _g_object_unref0 (self->priv->meta_store), _tmp3_); gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_CANCEL, (gint) GTK_RESPONSE_CANCEL); self->priv->ok_button = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_OK, (gint) GTK_RESPONSE_OK), GTK_IS_BUTTON (_tmp4_) ? ((GtkButton*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->ok_button), _tmp5_); gtk_widget_set_sensitive ((GtkWidget*) self->priv->ok_button, FALSE); load_button = _g_object_ref0 ((_tmp6_ = gtk_builder_get_object (builder, "load_button"), GTK_IS_BUTTON (_tmp6_) ? ((GtkButton*) _tmp6_) : NULL)); - g_signal_connect_object (load_button, "clicked", (GCallback) __lambda19__gtk_button_clicked, self, 0); + g_signal_connect_object (load_button, "clicked", (GCallback) __lambda20__gtk_button_clicked, self, 0); self->priv->validcs = FALSE; self->priv->dwords = (_tmp7_ = g_array_new (FALSE, FALSE, (guint) sizeof (guint32)), _g_array_free0 (self->priv->dwords), _tmp7_); self->priv->name_entry = (_tmp9_ = _g_object_ref0 ((_tmp8_ = gtk_builder_get_object (builder, "name_entry"), GTK_IS_ENTRY (_tmp8_) ? ((GtkEntry*) _tmp8_) : NULL)), _g_object_unref0 (self->priv->name_entry), _tmp9_); @@ -286,7 +286,7 @@ GUICSImport* gui_cs_import_construct (GType object_type) { self->priv->status_label = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "status_label"), GTK_IS_LABEL (_tmp11_) ? ((GtkLabel*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->status_label), _tmp12_); gtk_widget_modify_fg ((GtkWidget*) self->priv->status_label, GTK_STATE_NORMAL, &color); gtk_box_pack_start ((GtkBox*) ((GtkDialog*) self)->vbox, (GtkWidget*) (_tmp13_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_VBOX (_tmp13_) ? ((GtkVBox*) _tmp13_) : NULL), TRUE, TRUE, (guint) 0); - g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda20__gtk_dialog_response, self, 0); + g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda21__gtk_dialog_response, self, 0); gtk_window_set_default_size ((GtkWindow*) self, 300, 400); _g_object_unref0 (builder); _g_object_unref0 (col); @@ -125,6 +125,8 @@ struct _EmulationSpecEntry { static char* gui_main_window_xml_ui; static char* gui_main_window_xml_ui = NULL; +static char* gui_main_window_about_xml_ui; +static char* gui_main_window_about_xml_ui = NULL; static gpointer gui_main_window_parent_class = NULL; extern GUIMainWindow* gui_main; GUIMainWindow* gui_main = NULL; @@ -169,12 +171,14 @@ static void _lambda13_ (GtkAction* source, GUIMainWindow* self); static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self); static void _lambda14_ (GtkAction* source, GUIMainWindow* self); static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self); -static void _lambda15_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self); -static void __lambda15__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); -static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self); -static gboolean __lambda16__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); -static void _lambda17_ (GtkTreeView* source, GUIMainWindow* self); -static void __lambda17__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self); +static void _lambda15_ (GtkAction* source, GUIMainWindow* self); +static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self); +static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self); +static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); +static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self); +static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); +static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self); +static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self); static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self); static GObject * gui_main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); static void gui_main_window_finalize (GObject* obj); @@ -366,19 +370,63 @@ static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self) } -static void _lambda15_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) { +static void _lambda15_ (GtkAction* source, GUIMainWindow* self) { + GError * _inner_error_; + GtkBuilder* about; + g_return_if_fail (source != NULL); + _inner_error_ = NULL; + about = gtk_builder_new (); + { + GObject* _tmp0_; + GtkAboutDialog* dlg; + gtk_builder_add_from_string (about, gui_main_window_about_xml_ui, (gsize) string_get_length (gui_main_window_about_xml_ui), &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch4_g_error; + } + dlg = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (about, "about_dialog"), GTK_IS_ABOUT_DIALOG (_tmp0_) ? ((GtkAboutDialog*) _tmp0_) : NULL)); + gtk_dialog_run ((GtkDialog*) dlg); + gtk_object_destroy ((GtkObject*) dlg); + _g_object_unref0 (dlg); + } + goto __finally4; + __catch4_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally4: + if (_inner_error_ != NULL) { + _g_object_unref0 (about); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_object_unref0 (about); +} + + +static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self) { + _lambda15_ (_sender, self); +} + + +static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) { g_return_if_fail (path != NULL); g_return_if_fail (column != NULL); gui_main_window_open_csview (self); } -static void __lambda15__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { - _lambda15_ (path, column, self); +static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { + _lambda16_ (path, column, self); } -static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self) { +static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self) { gboolean result; EmulationCS* cs; gboolean _tmp0_ = FALSE; @@ -401,19 +449,19 @@ static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self) { } -static gboolean __lambda16__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { - return _lambda16_ (event, self); +static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { + return _lambda17_ (event, self); } -static void _lambda17_ (GtkTreeView* source, GUIMainWindow* self) { +static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self) { g_return_if_fail (source != NULL); gui_main_window_edit_set_sensitive (self, gtk_tree_selection_get_selected (gtk_tree_view_get_selection (self->priv->cs_list), NULL, NULL)); } -static void __lambda17__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) { - _lambda17_ (_sender, self); +static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) { + _lambda18_ (_sender, self); } @@ -445,13 +493,14 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop GObject* _tmp6_; GObject* _tmp8_; GtkAction* action_importcs; - GtkListStore* _tmp10_; GObject* _tmp9_; - GtkTreeView* _tmp12_; - GObject* _tmp11_; - GtkMenu* _tmp14_; - GObject* _tmp13_; - GObject* _tmp15_; + GtkListStore* _tmp11_; + GObject* _tmp10_; + GtkTreeView* _tmp13_; + GObject* _tmp12_; + GtkMenu* _tmp15_; + GObject* _tmp14_; + GObject* _tmp16_; builder = gtk_builder_new (); { gtk_builder_add_from_string (builder, gui_main_window_xml_ui, (gsize) string_get_length (gui_main_window_xml_ui), &_inner_error_); @@ -490,23 +539,24 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop g_signal_connect_object (action_importcs, "activate", (GCallback) __lambda12__gtk_action_activate, self, 0); g_signal_connect_object (self->priv->action_exportcs, "activate", (GCallback) __lambda13__gtk_action_activate, self, 0); g_signal_connect_object (self->priv->action_removecs, "activate", (GCallback) __lambda14__gtk_action_activate, self, 0); - self->priv->cs_store = (_tmp10_ = _g_object_ref0 ((_tmp9_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp9_) ? ((GtkListStore*) _tmp9_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp10_); - self->priv->cs_list = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp11_) ? ((GtkTreeView*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp12_); - self->priv->edit_menu = (_tmp14_ = _g_object_ref0 ((_tmp13_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp13_) ? ((GtkMenu*) _tmp13_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp14_); - g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda15__gtk_tree_view_row_activated, self, 0); - g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda16__gtk_widget_button_press_event, self, 0); - g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda17__gtk_tree_view_cursor_changed, self, 0); + g_signal_connect_object ((_tmp9_ = gtk_builder_get_object (builder, "About"), GTK_IS_ACTION (_tmp9_) ? ((GtkAction*) _tmp9_) : NULL), "activate", (GCallback) __lambda15__gtk_action_activate, self, 0); + self->priv->cs_store = (_tmp11_ = _g_object_ref0 ((_tmp10_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp10_) ? ((GtkListStore*) _tmp10_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp11_); + self->priv->cs_list = (_tmp13_ = _g_object_ref0 ((_tmp12_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp12_) ? ((GtkTreeView*) _tmp12_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp13_); + self->priv->edit_menu = (_tmp15_ = _g_object_ref0 ((_tmp14_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp14_) ? ((GtkMenu*) _tmp14_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp15_); + g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda16__gtk_tree_view_row_activated, self, 0); + g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda17__gtk_widget_button_press_event, self, 0); + g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda18__gtk_tree_view_cursor_changed, self, 0); gui_main_window_edit_set_sensitive (self, FALSE); - gtk_container_add ((GtkContainer*) self, (_tmp15_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp15_) ? ((GtkWidget*) _tmp15_) : NULL)); + gtk_container_add ((GtkContainer*) self, (_tmp16_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp16_) ? ((GtkWidget*) _tmp16_) : NULL)); g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL); { gtk_window_set_icon_from_file ((GtkWindow*) self, "/usr/share/pixmaps/rsim.png", &_inner_error_); if (_inner_error_ != NULL) { - goto __catch4_g_error; + goto __catch5_g_error; } } - goto __finally4; - __catch4_g_error: + goto __finally5; + __catch5_g_error: { GError * e; e = _inner_error_; @@ -515,7 +565,7 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop _g_error_free0 (e); } } - __finally4: + __finally5: if (_inner_error_ != NULL) { _g_object_unref0 (builder); _g_object_unref0 (col); @@ -539,6 +589,7 @@ static void gui_main_window_class_init (GUIMainWindowClass * klass) { G_OBJECT_CLASS (klass)->constructor = gui_main_window_constructor; G_OBJECT_CLASS (klass)->finalize = gui_main_window_finalize; gui_main_window_xml_ui = g_strdup ("\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkUIManager\" id=\"uimanager1\">\n <child>\n <object class=\"GtkActionGroup\" id=\"actiongroup1\">\n <child>\n <object class=\"GtkAction\" id=\"New\">\n <property name=\"name\">New</property>\n <property name=\"stock_id\">gtk-new</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Open\">\n <property name=\"name\">Open</property>\n <property name=\"stock_id\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Save\">\n <property name=\"name\">Save</property>\n <property name=\"stock_id\">gtk-save</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"SaveAs\">\n <property name=\"name\">SaveAs</property>\n <property name=\"stock_id\">gtk-save-as</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Quit\">\n <property name=\"name\">Quit</property>\n <property name=\"stock_id\">gtk-quit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ViewCS\">\n <property name=\"name\">ViewCS</property>\n <property name=\"label\">_View CS</property>\n <property name=\"tooltip\">View the selected command stream.</property>\n <property name=\"icon_name\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"RemoveCS\">\n <property name=\"name\">RemoveCS</property>\n <property name=\"label\">_Remove CS</property>\n <property name=\"tooltip\">Remove the selected command stream from the current project.</property>\n <property name=\"icon_name\">gtk-delete</property>\n </object>\n <accelerator key=\"Delete\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ImportCS\">\n <property name=\"name\">ImportCS</property>\n <property name=\"label\">_Import CS</property>\n <property name=\"tooltip\">Import a new command stream to the current project.</property>\n <property name=\"icon_name\">gtk-add</property>\n </object>\n <accelerator key=\"i\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ExportCS\">\n <property name=\"name\">ExportCS</property>\n <property name=\"label\">_Export CS</property>\n <property name=\"tooltip\">Export the selected command stream to a file.</property>\n <property name=\"icon_name\">gtk-convert</property>\n </object>\n <accelerator key=\"e\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"About\">\n <property name=\"name\">About</property>\n <property name=\"stock_id\">gtk-about</property>\n </object>\n <accelerator key=\"F1\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"FileMenu\">\n <property name=\"name\">FileMenu</property>\n <property name=\"label\" translatable=\"yes\">_File</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"EditMenu\">\n <property name=\"name\">EditMenu</property>\n <property name=\"label\" translatable=\"yes\">_Edit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"HelpMenu\">\n <property name=\"name\">HelpMenu</property>\n <property name=\"label\" translatable=\"yes\">_Help</property>\n </object>\n </child>\n </object>\n </child>\n <ui>\n <menubar name=\"menubar1\">\n <menu action=\"FileMenu\" name=\"FileMenu\">\n <menuitem action=\"New\" name=\"New\"/>\n <menuitem action=\"Open\" name=\"Open\"/>\n <menuitem action=\"Save\" name=\"Save\"/>\n <menuitem action=\"SaveAs\" name=\"SaveAs\"/>\n <separator/>\n <menuitem action=\"Quit\" name=\"Quit\"/>\n </menu>\n <menu action=\"EditMenu\" name=\"EditMenu\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ImportCS\" name=\"ImportCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </menu>\n <menu action=\"HelpMenu\" name=\"HelpMenu\">\n <menuitem action=\"About\" name=\"About\"/>\n </menu>\n </menubar>\n <toolbar name=\"toolbar1\">\n <toolitem action=\"New\" name=\"New\"/>\n <toolitem action=\"Open\" name=\"Open\"/>\n <toolitem action=\"Save\" name=\"Save\"/>\n <separator/>\n <toolitem action=\"ImportCS\" name=\"ImportCS\"/>\n <toolitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <toolitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </toolbar>\n <popup name=\"popup1\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </popup>\n </ui>\n </object>\n <object class=\"GtkVBox\" id=\"mainbox\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkMenuBar\" id=\"menubar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-menubar\">\n <property name=\"AtkObject::accessible-name\">The menubar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n </packing>\n </child>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkToolbar\" id=\"toolbar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-toolbar\">\n <property name=\"AtkObject::accessible-name\">The toolbar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkScrolledWindow\" id=\"scrolledwindow1\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"hscrollbar_policy\">automatic</property>\n <property name=\"vscrollbar_policy\">automatic</property>\n <child>\n <object class=\"GtkTreeView\" id=\"cs_list\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"reorderable\">True</property>\n <property name=\"model\">cs_store</property>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"pkts_column\">\n <property name=\"title\">Packets</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"pkts_cell\"/>\n </child>\n </object>\n </child>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"treeviewcolumn1\">\n <property name=\"title\">Name</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"cellrenderertext1\"/>\n <attributes>\n <attribute name=\"text\">0</attribute>\n </attributes>\n </child>\n </object>\n </child>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"position\">2</property>\n </packing>\n </child>\n </object>\n <object class=\"GtkListStore\" id=\"cs_store\">\n <columns>\n <!-- column-name Name -->\n <column type=\"gchararray\"/>\n <!-- column-name CS -->\n <column type=\"GObject\"/>\n </columns>\n </object>\n <object constructor=\"uimanager1\" class=\"GtkMenu\" id=\"popup1\">\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-popup\">\n <property name=\"AtkObject::accessible-name\">The popup menu</property>\n </object>\n </child>\n </object>\n </interface>\n "); + gui_main_window_about_xml_ui = g_strdup ("\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkAboutDialog\" id=\"about_dialog\">\n <property name=\"border_width\">5</property>\n <property name=\"type_hint\">normal</property>\n <property name=\"skip_taskbar_hint\">True</property>\n <property name=\"has_separator\">False</property>\n <property name=\"program_name\">Radeon Simulator</property>\n <property name=\"copyright\" translatable=\"yes\">Copyright © 2010 Joakim Sindholt</property>\n <property name=\"comments\" translatable=\"yes\">A simulator for Radeon GPUs</property>\n <property name=\"website\">http://cgit.freedesktop.org/~jsindholt/rsim</property>\n <property name=\"license\" translatable=\"yes\">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.</property>\n <property name=\"authors\">Joakim Sindholt <opensource@zhasha.com></property>\n <property name=\"logo\">/usr/share/pixmaps/rsim.png</property>\n <property name=\"wrap_license\">True</property>\n <child internal-child=\"vbox\">\n <object class=\"GtkVBox\" id=\"dialog-vbox1\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <property name=\"spacing\">2</property>\n <child internal-child=\"action_area\">\n <object class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <property name=\"visible\">True</property>\n <property name=\"layout_style\">end</property>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"pack_type\">end</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n </object>\n </child>\n </object>\n </interface>\n "); } diff --git a/src/main.vala b/src/main.vala index 3389f45..35bf7af 100644 --- a/src/main.vala +++ b/src/main.vala @@ -253,6 +253,50 @@ namespace GUI </interface> """; + private static string about_xml_ui = """ + <?xml version="1.0"?> + <interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkAboutDialog" id="about_dialog"> + <property name="border_width">5</property> + <property name="type_hint">normal</property> + <property name="skip_taskbar_hint">True</property> + <property name="has_separator">False</property> + <property name="program_name">Radeon Simulator</property> + <property name="copyright" translatable="yes">Copyright © 2010 Joakim Sindholt</property> + <property name="comments" translatable="yes">A simulator for Radeon GPUs</property> + <property name="website">http://cgit.freedesktop.org/~jsindholt/rsim</property> + <property name="license" translatable="yes">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.</property> + <property name="authors">Joakim Sindholt <opensource@zhasha.com></property> + <property name="logo">/usr/share/pixmaps/rsim.png</property> + <property name="wrap_license">True</property> + <child internal-child="vbox"> + <object class="GtkVBox" id="dialog-vbox1"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkHButtonBox" id="dialog-action_area1"> + <property name="visible">True</property> + <property name="layout_style">end</property> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + </object> + </interface> + """; + private ListStore cs_store; private TreeView cs_list; private Menu edit_menu; @@ -293,6 +337,17 @@ namespace GUI action_exportcs.activate.connect((source) => { open_csexport(); }); action_removecs.activate.connect((source) => { remove_cs(); }); + /* about dialog is kind of a special case. */ + (builder.get_object("About") as Action).activate.connect((source) => { + var about = new Builder(); + try { + about.add_from_string(about_xml_ui, about_xml_ui.length); + var dlg = about.get_object("about_dialog") as AboutDialog; + dlg.run(); + dlg.destroy(); + } catch (Error e) { } + }); + /* menus */ cs_store = builder.get_object("cs_store") as ListStore; cs_list = builder.get_object("cs_list") as TreeView; |