1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-02 03:20:06 +00:00

Introjucer: fixed jucer snapping grid. Added extra group sort option.

This commit is contained in:
jules 2013-04-17 10:06:42 +01:00
parent 0908261245
commit b6e24c4b39
3 changed files with 65 additions and 38 deletions

View file

@ -33,6 +33,7 @@
#include "../Code Editor/jucer_SourceCodeEditor.h"
void createGUIEditorMenu (PopupMenu&);
void handleGUIEditorMenuCommand (int);
void registerGUIEditorCommands();
//==============================================================================
@ -326,6 +327,10 @@ public:
{
settings->appearance.selectPresetScheme (menuItemID - colourSchemeBaseID);
}
else
{
handleGUIEditorMenuCommand (menuItemID);
}
}
//==============================================================================

View file

@ -1099,6 +1099,9 @@ Image JucerDocumentEditor::createComponentLayerSnapshot() const
return Image();
}
const int gridSnapMenuItemBase = 0x8723620;
const int snapSizes[] = { 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32 };
void createGUIEditorMenu (PopupMenu& menu)
{
menu.addCommandItem (commandManager, JucerCommandIDs::editCompLayout);
@ -1140,12 +1143,12 @@ void createGUIEditorMenu (PopupMenu& menu)
JucerDocumentEditor* holder = JucerDocumentEditor::getActiveDocumentHolder();
{
const int snapSizes[] = { 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32 };
const int currentSnapSize = holder != nullptr ? holder->getDocument()->getSnappingGridSize() : -1;
PopupMenu m;
for (int i = 0; i < numElementsInArray (snapSizes); ++i)
m.addItem (300 + i, String (snapSizes[i]) + " pixels", true, snapSizes[i] == currentSnapSize);
m.addItem (gridSnapMenuItemBase + i, String (snapSizes[i]) + " pixels",
true, snapSizes[i] == currentSnapSize);
menu.addSubMenu ("Grid size", m, currentSnapSize >= 0);
}
@ -1168,6 +1171,23 @@ void createGUIEditorMenu (PopupMenu& menu)
}
}
void handleGUIEditorMenuCommand (int menuItemID)
{
if (JucerDocumentEditor* ed = JucerDocumentEditor::getActiveDocumentHolder())
{
int gridIndex = menuItemID - gridSnapMenuItemBase;
if (isPositiveAndBelow (gridIndex, numElementsInArray (snapSizes)))
{
JucerDocument& doc = *ed->getDocument();
doc.setSnappingGrid (snapSizes [gridIndex],
doc.isSnapActive (false),
doc.isSnapShown());
}
}
}
void registerGUIEditorCommands()
{
JucerDocumentEditor dh (nullptr);

View file

@ -32,8 +32,8 @@
#include "jucer_ProjectContentComponent.h"
//==============================================================================
GroupTreeViewItem::GroupTreeViewItem (const Project::Item& item_)
: ProjectTreeViewBase (item_)
GroupTreeViewItem::GroupTreeViewItem (const Project::Item& i)
: ProjectTreeViewBase (i)
{
}
@ -94,33 +94,6 @@ void GroupTreeViewItem::showDocument()
pcc->setEditorComponent (new GroupInformationComponent (item), nullptr);
}
void GroupTreeViewItem::showPopupMenu()
{
PopupMenu m;
addCreateFileMenuItems (m);
m.addSeparator();
if (isOpen())
m.addItem (4, "Collapse all Sub-groups");
else
m.addItem (5, "Expand all Sub-groups");
m.addSeparator();
m.addItem (6, "Enable compiling of all enclosed files");
m.addItem (7, "Disable compiling of all enclosed files");
m.addSeparator();
m.addItem (3, "Sort Contents Alphabetically");
m.addSeparator();
m.addItem (1, "Rename...");
if (! isRoot())
m.addItem (2, "Delete");
launchPopupMenu (m);
}
static void openOrCloseAllSubGroups (TreeViewItem& item, bool shouldOpen)
{
item.setOpen (shouldOpen);
@ -139,17 +112,46 @@ static void setFilesToCompile (Project::Item item, const bool shouldCompile)
setFilesToCompile (item.getChild (i), shouldCompile);
}
void GroupTreeViewItem::showPopupMenu()
{
PopupMenu m;
addCreateFileMenuItems (m);
m.addSeparator();
if (isOpen())
m.addItem (1, "Collapse all Sub-groups");
else
m.addItem (2, "Expand all Sub-groups");
m.addSeparator();
m.addItem (3, "Enable compiling of all enclosed files");
m.addItem (4, "Disable compiling of all enclosed files");
m.addSeparator();
m.addItem (5, "Sort Items Alphabetically");
m.addItem (6, "Sort Items Alphabetically (Groups first)");
m.addSeparator();
m.addItem (7, "Rename...");
if (! isRoot())
m.addItem (8, "Delete");
launchPopupMenu (m);
}
void GroupTreeViewItem::handlePopupMenuResult (int resultCode)
{
switch (resultCode)
{
case 1: triggerAsyncRename (item); break;
case 2: deleteAllSelectedItems(); break;
case 3: item.sortAlphabetically (false); break;
case 4: openOrCloseAllSubGroups (*this, false); break;
case 5: openOrCloseAllSubGroups (*this, true); break;
case 6: setFilesToCompile (item, true); break;
case 7: setFilesToCompile (item, false); break;
case 1: openOrCloseAllSubGroups (*this, false); break;
case 2: openOrCloseAllSubGroups (*this, true); break;
case 3: setFilesToCompile (item, true); break;
case 4: setFilesToCompile (item, false); break;
case 5: item.sortAlphabetically (false); break;
case 6: item.sortAlphabetically (true); break;
case 7: triggerAsyncRename (item); break;
case 8: deleteAllSelectedItems(); break;
default: processCreateFileMenuItem (resultCode); break;
}
}