Browse Source

Tidied up some introjucer menu modality.

tags/2021-05-28
jules 13 years ago
parent
commit
f24d65e70d
5 changed files with 60 additions and 20 deletions
  1. +10
    -5
      extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp
  2. +27
    -6
      extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp
  3. +3
    -0
      extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h
  4. +18
    -9
      extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp
  5. +2
    -0
      extras/Introjucer/Source/Project/jucer_TreeViewTypes.h

+ 10
- 5
extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp View File

@@ -547,18 +547,23 @@ public:
project.deleteExporter (name.getTrailingIntValue()); project.deleteExporter (name.getTrailingIntValue());
} }
static void newExporterMenuItemChosen (int resultCode, ProjectSettingsComponent* settingsComp)
{
if (resultCode > 0 && settingsComp != nullptr)
settingsComp->project.addNewExporter (ProjectExporter::getExporterNames() [resultCode - 1]);
}
void createNewExporter (TextButton& button) void createNewExporter (TextButton& button)
{ {
StringArray exporters (ProjectExporter::getExporterNames());
PopupMenu menu; PopupMenu menu;
const StringArray exporters (ProjectExporter::getExporterNames());
for (int i = 0; i < exporters.size(); ++i) for (int i = 0; i < exporters.size(); ++i)
menu.addItem (i + 1, "Create a new " + exporters[i] + " target"); menu.addItem (i + 1, "Create a new " + exporters[i] + " target");
const int r = menu.showAt (&button);
if (r > 0)
project.addNewExporter (exporters [r - 1]);
menu.showMenuAsync (PopupMenu::Options().withTargetComponent (&button),
ModalCallbackFunction::forComponent (newExporterMenuItemChosen, this));
} }
void createNewConfig() void createNewConfig()


+ 27
- 6
extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp View File

@@ -436,18 +436,39 @@ void ProjectTreeViewBase::refreshSubItems()
addSubItems(); addSubItems();
} }
void ProjectTreeViewBase::showMultiSelectionPopupMenu()
static void treeViewMultiSelectItemChosen (int resultCode, ProjectTreeViewBase* item)
{ {
PopupMenu m;
m.addItem (6, "Delete");
switch (m.show())
switch (resultCode)
{ {
case 6: deleteAllSelectedItems(); break;
case 1: item->deleteAllSelectedItems(); break;
default: break; default: break;
} }
} }
void ProjectTreeViewBase::showMultiSelectionPopupMenu()
{
PopupMenu m;
m.addItem (1, "Delete");
m.showMenuAsync (PopupMenu::Options(),
ModalCallbackFunction::create (treeViewMultiSelectItemChosen, this));
}
static void treeViewMenuItemChosen (int resultCode, ProjectTreeViewBase* item)
{
item->handlePopupMenuResult (resultCode);
}
void ProjectTreeViewBase::launchPopupMenu (PopupMenu& m)
{
m.showMenuAsync (PopupMenu::Options(),
ModalCallbackFunction::create (treeViewMenuItemChosen, this));
}
void ProjectTreeViewBase::handlePopupMenuResult (int)
{
}
void ProjectTreeViewBase::itemDoubleClicked (const MouseEvent& e) void ProjectTreeViewBase::itemDoubleClicked (const MouseEvent& e)
{ {
invokeShowDocument(); invokeShowDocument();


+ 3
- 0
extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h View File

@@ -65,6 +65,9 @@ public:
virtual void addFiles (const StringArray& files, int insertIndex); virtual void addFiles (const StringArray& files, int insertIndex);
virtual void moveSelectedItemsTo (OwnedArray <Project::Item>& selectedNodes, int insertIndex); virtual void moveSelectedItemsTo (OwnedArray <Project::Item>& selectedNodes, int insertIndex);
virtual void showMultiSelectionPopupMenu(); virtual void showMultiSelectionPopupMenu();
void launchPopupMenu (PopupMenu&); // runs asynchronously, and produces a callback to handlePopupMenuResult().
virtual void handlePopupMenuResult (int resultCode);
void invokeShowDocument(); void invokeShowDocument();
virtual ProjectTreeViewBase* findTreeViewItem (const Project::Item& itemToFind); virtual ProjectTreeViewBase* findTreeViewItem (const Project::Item& itemToFind);


+ 18
- 9
extras/Introjucer/Source/Project/jucer_TreeViewTypes.cpp View File

@@ -120,13 +120,17 @@ void GroupTreeViewItem::showPopupMenu()
if (! isRoot()) if (! isRoot())
m.addItem (2, "Delete"); m.addItem (2, "Delete");
const int res = m.show();
switch (res)
launchPopupMenu (m);
}
void GroupTreeViewItem::handlePopupMenuResult (int resultCode)
{
switch (resultCode)
{ {
case 1: triggerAsyncRename (item); break; case 1: triggerAsyncRename (item); break;
case 2: deleteAllSelectedItems(); break; case 2: deleteAllSelectedItems(); break;
case 3: item.sortAlphabetically (false); break; case 3: item.sortAlphabetically (false); break;
default: processCreateFileMenuItem (res); break;
default: processCreateFileMenuItem (resultCode); break;
} }
} }
@@ -228,7 +232,7 @@ void SourceFileTreeViewItem::setName (const String& newName)
ProjectTreeViewBase* SourceFileTreeViewItem::createSubItem (const Project::Item& child) ProjectTreeViewBase* SourceFileTreeViewItem::createSubItem (const Project::Item& child)
{ {
jassertfalse jassertfalse
return 0;
return nullptr;
} }
void SourceFileTreeViewItem::showDocument() void SourceFileTreeViewItem::showDocument()
@@ -242,10 +246,9 @@ void SourceFileTreeViewItem::showDocument()
void SourceFileTreeViewItem::showPopupMenu() void SourceFileTreeViewItem::showPopupMenu()
{ {
GroupTreeViewItem* parentGroup = dynamic_cast <GroupTreeViewItem*> (getParentProjectItem());
PopupMenu m; PopupMenu m;
GroupTreeViewItem* parentGroup = dynamic_cast <GroupTreeViewItem*> (getParentProjectItem());
if (parentGroup != nullptr) if (parentGroup != nullptr)
{ {
parentGroup->addCreateFileMenuItems (m); parentGroup->addCreateFileMenuItems (m);
@@ -264,8 +267,14 @@ void SourceFileTreeViewItem::showPopupMenu()
m.addSeparator(); m.addSeparator();
m.addItem (3, "Delete"); m.addItem (3, "Delete");
const int res = m.show();
switch (res)
launchPopupMenu (m);
}
void SourceFileTreeViewItem::handlePopupMenuResult (int resultCode)
{
GroupTreeViewItem* parentGroup = dynamic_cast <GroupTreeViewItem*> (getParentProjectItem());
switch (resultCode)
{ {
case 1: getFile().startAsProcess(); break; case 1: getFile().startAsProcess(); break;
case 2: revealInFinder(); break; case 2: revealInFinder(); break;
@@ -274,7 +283,7 @@ void SourceFileTreeViewItem::showPopupMenu()
default: default:
if (parentGroup != nullptr) if (parentGroup != nullptr)
parentGroup->processCreateFileMenuItem (res);
parentGroup->processCreateFileMenuItem (resultCode);
break; break;
} }


+ 2
- 0
extras/Introjucer/Source/Project/jucer_TreeViewTypes.h View File

@@ -42,6 +42,7 @@ public:
void createLeftEdgeComponents (OwnedArray<Component>& components) {} void createLeftEdgeComponents (OwnedArray<Component>& components) {}
void showDocument(); void showDocument();
void showPopupMenu(); void showPopupMenu();
void handlePopupMenuResult (int resultCode);
String getDisplayName() const; String getDisplayName() const;
void setName (const String& newName); void setName (const String& newName);
}; };
@@ -62,6 +63,7 @@ public:
void createLeftEdgeComponents (OwnedArray<Component>& components) {} void createLeftEdgeComponents (OwnedArray<Component>& components) {}
void showDocument(); void showDocument();
void showPopupMenu(); void showPopupMenu();
void handlePopupMenuResult (int resultCode);
void addFiles (const StringArray& files, int insertIndex); void addFiles (const StringArray& files, int insertIndex);
void addNewGroup(); void addNewGroup();


Loading…
Cancel
Save