}
-class BuildPairEqual
-{
-const char* m_name;
-public:
-BuildPairEqual( const char* name ) : m_name( name ){
-}
-bool operator()( const BuildPair& self ) const {
- return string_equal( self.first.c_str(), m_name );
-}
-};
-
typedef std::list<BuildPair> Project;
Project::iterator Project_find( Project& project, const char* name ){
- return std::find_if( project.begin(), project.end(), BuildPairEqual( name ) );
+ return std::find_if(project.begin(), project.end(), [&](const BuildPair &self) {
+ return string_equal(self.first.c_str(), name);
+ });
}
Project::iterator Project_find( Project& project, std::size_t index ){
public:
Project& m_project;
ui::ListStore m_store{ui::null};
+GtkWidget* m_buildView;
bool m_changed;
ProjectList( Project& project ) : m_project( project ), m_changed( false ){
}
};
-gboolean project_cell_edited( GtkCellRendererText* cell, gchar* path_string, gchar* new_text, ProjectList* projectList ){
+gboolean project_cell_edited(ui::CellRendererText cell, gchar* path_string, gchar* new_text, ProjectList* projectList ){
Project& project = projectList->m_project;
auto path = ui::TreePath( path_string );
gtk_list_store_set( projectList->m_store, &iter, 0, new_text, -1 );
projectList->m_store.append();
+ //make command field activatable
+ g_signal_emit_by_name( G_OBJECT( gtk_tree_view_get_selection( GTK_TREE_VIEW( projectList->m_buildView ) ) ), "changed" );
}
gtk_tree_path_free( path );
Project& project = projectList->m_project;
if ( event->keyval == GDK_KEY_Delete ) {
- auto selection = ui::TreeSelection(gtk_tree_view_get_selection(widget));
+ auto selection = ui::TreeSelection::from(gtk_tree_view_get_selection(widget));
GtkTreeIter iter;
GtkTreeModel* model;
if ( gtk_tree_selection_get_selected( selection, &model, &iter ) ) {
return FALSE;
}
-gboolean commands_cell_edited( GtkCellRendererText* cell, gchar* path_string, gchar* new_text, ui::ListStore store ){
+gboolean commands_cell_edited(ui::CellRendererText cell, gchar* path_string, gchar* new_text, ui::ListStore store ){
if ( g_current_build == 0 ) {
return FALSE;
}
vbox.pack_start( button, FALSE, FALSE, 0 );
}
}
- auto buildViewStore = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
- auto buildView = ui::TreeView( ui::TreeModel( buildViewStore ));
+ auto buildViewStore = ui::ListStore::from(gtk_list_store_new( 1, G_TYPE_STRING ));
+ auto buildView = ui::TreeView( ui::TreeModel::from( buildViewStore._handle ));
{
auto frame = create_dialog_frame( "Build menu" );
table1.attach(frame, {0, 1, 0, 1});
view.show();
+ projectList.m_buildView = buildView;
projectList.m_store = store;
scr.add(view);
frame.add(scr);
{
- auto store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
+ auto store = ui::ListStore::from(gtk_list_store_new( 1, G_TYPE_STRING ));
- auto view = ui::TreeView(ui::TreeModel( store ));
+ auto view = ui::TreeView(ui::TreeModel::from( store._handle ));
gtk_tree_view_set_headers_visible(view, FALSE );
auto renderer = ui::CellRendererText(ui::New);
view.connect( "key_press_event", G_CALLBACK( commands_key_press ), store );
- auto sel = ui::TreeSelection(gtk_tree_view_get_selection(buildView ));
+ auto sel = ui::TreeSelection::from(gtk_tree_view_get_selection(buildView ));
sel.connect( "changed", G_CALLBACK( project_selection_changed ), store );
}
}
namespace
{
CopiedString g_buildMenu;
+CopiedString g_lastExecutedBuild;
}
void LoadBuildMenu();
: m_name( name ), m_item( item ){
}
void run(){
+ g_lastExecutedBuild = m_name;
RunBSP( m_name );
}
-typedef MemberCaller<BuildMenuItem, &BuildMenuItem::run> RunCaller;
+typedef MemberCaller<BuildMenuItem, void(), &BuildMenuItem::run> RunCaller;
};
typedef std::list<BuildMenuItem> BuildMenuItems;
#include "stringio.h"
void BuildMenu_Construct(){
- GlobalPreferenceSystem().registerPreference( "BuildMenu", CopiedStringImportStringCaller( g_buildMenu ), CopiedStringExportStringCaller( g_buildMenu ) );
+ GlobalPreferenceSystem().registerPreference( "BuildMenu", make_property_string( g_buildMenu ) );
LoadBuildMenu();
}
void BuildMenu_Destroy(){
SaveBuildMenu();
}
+
+
+void Build_runRecentExecutedBuild(){
+ if( g_lastExecutedBuild.empty() ){
+ g_BuildMenuItems.begin()->run();
+ }
+ else{
+ RunBSP( g_lastExecutedBuild.c_str() );
+ }
+}