-gboolean commands_key_press(GtkWidget* widget, GdkEventKey* event, GtkListStore* store)
-{
- if(g_current_build == 0)
- {
- return FALSE;
- }
- Build& build = *g_current_build;
-
- if(event->keyval == GDK_Delete)
- {
- GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
- GtkTreeIter iter;
- GtkTreeModel* model;
- if(gtk_tree_selection_get_selected(selection, &model, &iter))
- {
- GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
- Build::iterator i = Build_find(build, gtk_tree_path_get_indices(path)[0]);
- gtk_tree_path_free(path);
-
- if(i != build.end())
- {
- g_build_changed = true;
- build.erase(i);
-
- gtk_list_store_remove(store, &iter);
- }
- }
- }
- return FALSE;
-}
-
-
-GtkWindow* BuildMenuDialog_construct(ModalDialog& modal, ProjectList& projectList)
-{
- GtkWindow* window = create_dialog_window(MainFrame_getWindow(), "Build Menu", G_CALLBACK(dialog_delete_callback), &modal, -1, 400);
-
- GtkWidget* buildView = 0;
-
- {
- GtkTable* table1 = create_dialog_table(2, 2, 4, 4, 4);
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(table1));
- {
- GtkVBox* vbox = create_dialog_vbox(4);
- gtk_table_attach(table1, GTK_WIDGET(vbox), 1, 2, 0, 1,
- (GtkAttachOptions) (GTK_FILL),
- (GtkAttachOptions) (GTK_FILL), 0, 0);
- {
- GtkButton* button = create_dialog_button("OK", G_CALLBACK(dialog_button_ok), &modal);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
- }
- {
- GtkButton* button = create_dialog_button("Cancel", G_CALLBACK(dialog_button_cancel), &modal);
- gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(button), FALSE, FALSE, 0);
- }
- }
- {
- GtkFrame* frame = create_dialog_frame("Build menu");
- gtk_table_attach(table1, GTK_WIDGET(frame), 0, 1, 0, 1,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
- {
- GtkScrolledWindow* scr = create_scrolled_window(GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4);
- gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(scr));
-
- {
- GtkListStore* store = gtk_list_store_new(1, G_TYPE_STRING);
-
- GtkWidget* view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);
-
- GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
- object_set_boolean_property(G_OBJECT(renderer), "editable", TRUE);
- g_signal_connect(renderer, "edited", G_CALLBACK(project_cell_edited), &projectList);
-
- GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes("", renderer, "text", 0, 0);
- gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
-
- GtkTreeSelection* selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
- gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
-
- gtk_widget_show(view);
-
- buildView = view;
- projectList.m_store = store;
- gtk_container_add(GTK_CONTAINER (scr), view);
-
- g_signal_connect(G_OBJECT(view), "key_press_event", G_CALLBACK(project_key_press), &projectList);
-
- g_object_unref(G_OBJECT(store));
- }
- }
- }
- {
- GtkFrame* frame = create_dialog_frame("Commandline");
- gtk_table_attach(table1, GTK_WIDGET(frame), 0, 1, 1, 2,
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
- {
- GtkScrolledWindow* scr = create_scrolled_window(GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4);
- gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(scr));
-
- {
- GtkListStore* store = gtk_list_store_new(1, G_TYPE_STRING);
-
- GtkWidget* view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);
-
- GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
- object_set_boolean_property(G_OBJECT(renderer), "editable", TRUE);
- g_signal_connect(renderer, "edited", G_CALLBACK(commands_cell_edited), store);
-
- GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes("", renderer, "text", 0, 0);
- gtk_tree_view_append_column(GTK_TREE_VIEW(view), column);
-
- GtkTreeSelection* selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
- gtk_tree_selection_set_mode(selection, GTK_SELECTION_BROWSE);
-
- gtk_widget_show(view);
-
- gtk_container_add(GTK_CONTAINER (scr), view);
-
- g_object_unref(G_OBJECT(store));
-
- g_signal_connect(G_OBJECT(view), "key_press_event", G_CALLBACK(commands_key_press), store);
-
- g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(buildView))), "changed", G_CALLBACK(project_selection_changed), store);
- }
- }
- }
- }
-
- BSPCommandList_Construct(projectList.m_store, g_build_project);
-
- return window;
+
+ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectList ){
+ ui::Window window = MainFrame_getWindow().create_dialog_window("Build Menu", G_CALLBACK(dialog_delete_callback ), &modal, -1, 400 );
+
+ ui::Widget buildView;
+
+ {
+ GtkTable* table1 = create_dialog_table( 2, 2, 4, 4, 4 );
+ gtk_container_add( GTK_CONTAINER( window ), GTK_WIDGET( table1 ) );
+ {
+ GtkVBox* vbox = create_dialog_vbox( 4 );
+ gtk_table_attach( table1, GTK_WIDGET( vbox ), 1, 2, 0, 1,
+ (GtkAttachOptions) ( GTK_FILL ),
+ (GtkAttachOptions) ( GTK_FILL ), 0, 0 );
+ {
+ GtkButton* button = create_dialog_button( "OK", G_CALLBACK( dialog_button_ok ), &modal );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ }
+ {
+ GtkButton* button = create_dialog_button( "Cancel", G_CALLBACK( dialog_button_cancel ), &modal );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ }
+ }
+ {
+ GtkFrame* frame = create_dialog_frame( "Build menu" );
+ gtk_table_attach( table1, GTK_WIDGET( frame ), 0, 1, 0, 1,
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+ {
+ GtkScrolledWindow* scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 );
+ gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( scr ) );
+
+ {
+ auto store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
+
+ ui::Widget view = ui::TreeView( ui::TreeModel(GTK_TREE_MODEL( store ) ));
+ gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
+
+ auto renderer = ui::CellRendererText();
+ object_set_boolean_property( G_OBJECT( renderer ), "editable", TRUE );
+ g_signal_connect( G_OBJECT(renderer), "edited", G_CALLBACK( project_cell_edited ), &projectList );
+
+ GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 0}} );
+ gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
+
+ GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
+ gtk_tree_selection_set_mode( selection, GTK_SELECTION_BROWSE );
+
+ gtk_widget_show( view );
+
+ buildView = view;
+ projectList.m_store = store;
+ gtk_container_add( GTK_CONTAINER( scr ), view );
+
+ g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( project_key_press ), &projectList );
+
+ g_object_unref( G_OBJECT( store ) );
+ }
+ }
+ }
+ {
+ GtkFrame* frame = create_dialog_frame( "Commandline" );
+ gtk_table_attach( table1, GTK_WIDGET( frame ), 0, 1, 1, 2,
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 );
+ {
+ GtkScrolledWindow* scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 );
+ gtk_container_add( GTK_CONTAINER( frame ), GTK_WIDGET( scr ) );
+
+ {
+ ui::ListStore store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
+
+ ui::Widget view = ui::TreeView(ui::TreeModel( GTK_TREE_MODEL( store ) ));
+ gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( view ), FALSE );
+
+ auto renderer = ui::CellRendererText();
+ object_set_boolean_property( G_OBJECT( renderer ), "editable", TRUE );
+ g_signal_connect( G_OBJECT(renderer), "edited", G_CALLBACK( commands_cell_edited ), store );
+
+ GtkTreeViewColumn* column = ui::TreeViewColumn( "", renderer, {{"text", 0}} );
+ gtk_tree_view_append_column( GTK_TREE_VIEW( view ), column );
+
+ GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( view ) );
+ gtk_tree_selection_set_mode( selection, GTK_SELECTION_BROWSE );
+
+ gtk_widget_show( view );
+
+ gtk_container_add( GTK_CONTAINER( scr ), view );
+
+ g_object_unref( G_OBJECT( store ) );
+
+ g_signal_connect( G_OBJECT( view ), "key_press_event", G_CALLBACK( commands_key_press ), store );
+
+ g_signal_connect( G_OBJECT( gtk_tree_view_get_selection( GTK_TREE_VIEW( buildView ) ) ), "changed", G_CALLBACK( project_selection_changed ), store );
+ }
+ }
+ }
+ }
+
+ BSPCommandList_Construct( projectList.m_store, g_build_project );
+
+ return window;