support for separators in build menu
This commit is contained in:
parent
d0df309a98
commit
a4ac339ea7
|
|
@ -337,6 +337,19 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::pair<CopiedString, Build> BuildPair;
|
typedef std::pair<CopiedString, Build> BuildPair;
|
||||||
|
#define SEPARATOR_STRING "-"
|
||||||
|
static bool is_separator(const BuildPair &p)
|
||||||
|
{
|
||||||
|
if(!string_equal(p.first.c_str(), SEPARATOR_STRING))
|
||||||
|
return false;
|
||||||
|
for(Build::const_iterator j = p.second.begin(); j != p.second.end(); ++j)
|
||||||
|
{
|
||||||
|
if(!string_equal((*j).c_str(), ""))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class BuildPairEqual
|
class BuildPairEqual
|
||||||
{
|
{
|
||||||
|
|
@ -415,6 +428,11 @@ public:
|
||||||
m_build = new BuildXMLConstructor(m_project.back().second);
|
m_build = new BuildXMLConstructor(m_project.back().second);
|
||||||
return *m_build;
|
return *m_build;
|
||||||
}
|
}
|
||||||
|
else if(string_equal(element.name(), "separator"))
|
||||||
|
{
|
||||||
|
m_project.push_back(Project::value_type(SEPARATOR_STRING, Build()));
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ERROR_MESSAGE("parse error: invalid element");
|
ERROR_MESSAGE("parse error: invalid element");
|
||||||
|
|
@ -664,13 +682,23 @@ public:
|
||||||
}
|
}
|
||||||
for(Project::iterator i = m_project.begin(); i != m_project.end(); ++i)
|
for(Project::iterator i = m_project.begin(); i != m_project.end(); ++i)
|
||||||
{
|
{
|
||||||
StaticElement buildElement("build");
|
if(is_separator(*i))
|
||||||
buildElement.insertAttribute("name", (*i).first.c_str());
|
{
|
||||||
importer.pushElement(buildElement);
|
StaticElement buildElement("separator");
|
||||||
BuildXMLExporter buildExporter((*i).second);
|
importer.pushElement(buildElement);
|
||||||
buildExporter.exportXML(importer);
|
importer.popElement(buildElement.name());
|
||||||
importer.popElement(buildElement.name());
|
importer << "\n";
|
||||||
importer << "\n";
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StaticElement buildElement("build");
|
||||||
|
buildElement.insertAttribute("name", (*i).first.c_str());
|
||||||
|
importer.pushElement(buildElement);
|
||||||
|
BuildXMLExporter buildExporter((*i).second);
|
||||||
|
buildExporter.exportXML(importer);
|
||||||
|
importer.popElement(buildElement.name());
|
||||||
|
importer << "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
importer.popElement(projectElement.name());
|
importer.popElement(projectElement.name());
|
||||||
}
|
}
|
||||||
|
|
@ -756,15 +784,11 @@ gboolean project_cell_edited(GtkCellRendererText* cell, gchar* path_string, gcha
|
||||||
if(string_empty(new_text))
|
if(string_empty(new_text))
|
||||||
{
|
{
|
||||||
project.erase(i);
|
project.erase(i);
|
||||||
Build_refreshMenu(g_bsp_menu);
|
|
||||||
|
|
||||||
gtk_list_store_remove(projectList->m_store, &iter);
|
gtk_list_store_remove(projectList->m_store, &iter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*i).first = new_text;
|
(*i).first = new_text;
|
||||||
Build_refreshMenu(g_bsp_menu);
|
|
||||||
|
|
||||||
gtk_list_store_set(projectList->m_store, &iter, 0, new_text, -1);
|
gtk_list_store_set(projectList->m_store, &iter, 0, new_text, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -772,7 +796,6 @@ gboolean project_cell_edited(GtkCellRendererText* cell, gchar* path_string, gcha
|
||||||
{
|
{
|
||||||
projectList->m_changed = true;
|
projectList->m_changed = true;
|
||||||
project.push_back(Project::value_type(new_text, Build()));
|
project.push_back(Project::value_type(new_text, Build()));
|
||||||
Build_refreshMenu(g_bsp_menu);
|
|
||||||
|
|
||||||
gtk_list_store_set(projectList->m_store, &iter, 0, new_text, -1);
|
gtk_list_store_set(projectList->m_store, &iter, 0, new_text, -1);
|
||||||
GtkTreeIter lastIter;
|
GtkTreeIter lastIter;
|
||||||
|
|
@ -781,6 +804,8 @@ gboolean project_cell_edited(GtkCellRendererText* cell, gchar* path_string, gcha
|
||||||
|
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
|
|
||||||
|
Build_refreshMenu(g_bsp_menu);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -892,6 +917,8 @@ gboolean commands_cell_edited(GtkCellRendererText* cell, gchar* path_string, gch
|
||||||
|
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
|
|
||||||
|
Build_refreshMenu(g_bsp_menu);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1097,7 +1124,14 @@ void Build_constructMenu(GtkMenu* menu)
|
||||||
for(Project::iterator i = g_build_project.begin(); i != g_build_project.end(); ++i)
|
for(Project::iterator i = g_build_project.begin(); i != g_build_project.end(); ++i)
|
||||||
{
|
{
|
||||||
g_BuildMenuItems.push_back(BuildMenuItem((*i).first.c_str(), 0));
|
g_BuildMenuItems.push_back(BuildMenuItem((*i).first.c_str(), 0));
|
||||||
g_BuildMenuItems.back().m_item = create_menu_item_with_mnemonic(menu, (*i).first.c_str(), BuildMenuItem::RunCaller(g_BuildMenuItems.back()));
|
if(is_separator(*i))
|
||||||
|
{
|
||||||
|
g_BuildMenuItems.back().m_item = menu_separator(menu);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_BuildMenuItems.back().m_item = create_menu_item_with_mnemonic(menu, (*i).first.c_str(), BuildMenuItem::RunCaller(g_BuildMenuItems.back()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user