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());
}
static void newExporterMenuItemChosen (int resultCode, ProjectSettingsComponent* settingsComp)
{
if (resultCode > 0 && settingsComp != nullptr)
settingsComp->project.addNewExporter (ProjectExporter::getExporterNames() [resultCode - 1]);
}
void createNewExporter (TextButton& button)
{
StringArray exporters (ProjectExporter::getExporterNames());
PopupMenu menu;
const StringArray exporters (ProjectExporter::getExporterNames());
for (int i = 0; i < exporters.size(); ++i)
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()


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

@@ -436,18 +436,39 @@ void ProjectTreeViewBase::refreshSubItems()
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;
}
}
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)
{
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 moveSelectedItemsTo (OwnedArray <Project::Item>& selectedNodes, int insertIndex);
virtual void showMultiSelectionPopupMenu();
void launchPopupMenu (PopupMenu&); // runs asynchronously, and produces a callback to handlePopupMenuResult().
virtual void handlePopupMenuResult (int resultCode);
void invokeShowDocument();
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())
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 2: deleteAllSelectedItems(); 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)
{
jassertfalse
return 0;
return nullptr;
}
void SourceFileTreeViewItem::showDocument()
@@ -242,10 +246,9 @@ void SourceFileTreeViewItem::showDocument()
void SourceFileTreeViewItem::showPopupMenu()
{
GroupTreeViewItem* parentGroup = dynamic_cast <GroupTreeViewItem*> (getParentProjectItem());
PopupMenu m;
GroupTreeViewItem* parentGroup = dynamic_cast <GroupTreeViewItem*> (getParentProjectItem());
if (parentGroup != nullptr)
{
parentGroup->addCreateFileMenuItems (m);
@@ -264,8 +267,14 @@ void SourceFileTreeViewItem::showPopupMenu()
m.addSeparator();
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 2: revealInFinder(); break;
@@ -274,7 +283,7 @@ void SourceFileTreeViewItem::showPopupMenu()
default:
if (parentGroup != nullptr)
parentGroup->processCreateFileMenuItem (res);
parentGroup->processCreateFileMenuItem (resultCode);
break;
}


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

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


Loading…
Cancel
Save