Big WIP on keyboard handling and Menu support

This commit is contained in:
Daniel Collin 2013-01-02 21:43:27 +01:00
parent 59f0e0a875
commit 30d9c79be0
11 changed files with 1496 additions and 30 deletions

View File

@ -194,6 +194,443 @@
</object>
</object>
</object>
<object class="NSMenuItem" id="1063090248">
<reference key="NSMenu" ref="649796088"/>
<string key="NSTitle">Edit</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="301937284">
<string key="NSTitle">Edit</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="535743562">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Undo</string>
<string key="NSKeyEquiv">z</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<int key="NSTag">5</int>
</object>
<object class="NSMenuItem" id="844002325">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Redo</string>
<string key="NSKeyEquiv">Z</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<int key="NSTag">6</int>
</object>
<object class="NSMenuItem" id="431501686">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Cancel Edit</string>
<string type="base64-UTF8" key="NSKeyEquiv">Gw</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<int key="NSTag">7</int>
</object>
<object class="NSMenuItem" id="813797837">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Clear</string>
<string type="base64-UTF8" key="NSKeyEquiv">CA</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="394896491">
<reference key="NSMenu" ref="301937284"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="273430780">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Cut</string>
<string key="NSKeyEquiv">x</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="495314318">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Copy</string>
<string key="NSKeyEquiv">c</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="587899064">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Paste</string>
<string key="NSKeyEquiv">v</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="676171511">
<reference key="NSMenu" ref="301937284"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="696832775">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Select Track</string>
<string key="NSKeyEquiv">t</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="179918578">
<reference key="NSMenu" ref="301937284"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="338632322">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +0.01</string>
<string key="NSKeyEquiv">q</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="106037542">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +0.1</string>
<string key="NSKeyEquiv">w</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="177396746">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +1.0</string>
<string key="NSKeyEquiv">e</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="568772262">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +10.0</string>
<string key="NSKeyEquiv">r</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="422046017">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +100.0</string>
<string key="NSKeyEquiv">t</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="971455521">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias +1000.0</string>
<string key="NSKeyEquiv">y</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="147794766">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -0.01</string>
<string key="NSKeyEquiv">a</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="804307652">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -0.1</string>
<string key="NSKeyEquiv">s</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="371525525">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -1.0</string>
<string key="NSKeyEquiv">d</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="676214925">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -10.0</string>
<string key="NSKeyEquiv">f</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="817992552">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -100.0</string>
<string key="NSKeyEquiv">g</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="627105425">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Bias -1000.0</string>
<string key="NSKeyEquiv">h</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="292529916">
<reference key="NSMenu" ref="301937284"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="324120524">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Interpolation mode</string>
<string key="NSKeyEquiv">i</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="23492998">
<reference key="NSMenu" ref="301937284"/>
<string key="NSTitle">Insert current interpolate value</string>
<string type="base64-UTF8" key="NSKeyEquiv">DQ</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
</object>
</object>
</object>
<object class="NSMenuItem" id="371740868">
<reference key="NSMenu" ref="649796088"/>
<string key="NSTitle">View</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="598576309">
<string key="NSTitle">View</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="98309598">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Start/Stop Playback</string>
<string type="base64-UTF8" key="NSKeyEquiv">IA</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="1027949812">
<reference key="NSMenu" ref="598576309"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="557205095">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump 8 rows up</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="1034979508">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump 8 rows down</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="495560802">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to previous bookmark</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="672956548">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to next bookmark</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="459180548">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to first track</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="928942966">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to last track</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="383281702">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to previous key</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">262144</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="570668246">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump to next key</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">262144</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="87656023">
<reference key="NSMenu" ref="598576309"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="102000755">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Fold track</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="113847529">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Unfold track</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="750583826">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Fold group</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">786432</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="778214681">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Unfold group</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">786432</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="1033561063">
<reference key="NSMenu" ref="598576309"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="303945429">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Toogle bookmark</string>
<string key="NSKeyEquiv">b</string>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="955331079">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Clear bookmarks</string>
<string key="NSKeyEquiv">b</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="28591382">
<reference key="NSMenu" ref="598576309"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
<object class="NSMenuItem" id="931839081">
<reference key="NSMenu" ref="598576309"/>
<string key="NSTitle">Jump row,start/endrow &amp; edit</string>
<string type="base64-UTF8" key="NSKeyEquiv">GQ</string>
<int key="NSKeyEquivModMask">131072</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="35465992"/>
<reference key="NSMixedImage" ref="502551668"/>
</object>
</object>
</object>
</object>
<object class="NSMenuItem" id="713487014">
<reference key="NSMenu" ref="649796088"/>
<string key="NSTitle">Window</string>
@ -314,7 +751,7 @@
<bool key="NSWindowIsRestorable">YES</bool>
</object>
<object class="NSCustomObject" id="976324537">
<string key="NSClassName">MinimalAppAppDelegate</string>
<string key="NSClassName">RocketAppDelegate</string>
</object>
<object class="NSCustomObject" id="755631768">
<string key="NSClassName">NSFontManager</string>
@ -411,6 +848,14 @@
</object>
<int key="connectionID">546</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">buttonClicked:</string>
<reference key="source" ref="976324537"/>
<reference key="destination" ref="535743562"/>
</object>
<int key="connectionID">547</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -450,6 +895,8 @@
<reference ref="694149608"/>
<reference ref="379814623"/>
<reference ref="448692316"/>
<reference ref="1063090248"/>
<reference ref="371740868"/>
</object>
<reference key="parent" ref="0"/>
</object>
@ -662,6 +1109,316 @@
<reference key="object" ref="264375453"/>
<reference key="parent" ref="573498689"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">568</int>
<reference key="object" ref="1063090248"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="301937284"/>
</object>
<reference key="parent" ref="649796088"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">569</int>
<reference key="object" ref="301937284"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="535743562"/>
<reference ref="371525525"/>
<reference ref="106037542"/>
<reference ref="177396746"/>
<reference ref="568772262"/>
<reference ref="422046017"/>
<reference ref="971455521"/>
<reference ref="147794766"/>
<reference ref="804307652"/>
<reference ref="179918578"/>
<reference ref="676214925"/>
<reference ref="817992552"/>
<reference ref="627105425"/>
<reference ref="324120524"/>
<reference ref="23492998"/>
<reference ref="292529916"/>
<reference ref="844002325"/>
<reference ref="431501686"/>
<reference ref="273430780"/>
<reference ref="495314318"/>
<reference ref="587899064"/>
<reference ref="394896491"/>
<reference ref="813797837"/>
<reference ref="676171511"/>
<reference ref="696832775"/>
<reference ref="338632322"/>
</object>
<reference key="parent" ref="1063090248"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">570</int>
<reference key="object" ref="535743562"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">571</int>
<reference key="object" ref="371525525"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">573</int>
<reference key="object" ref="696832775"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">574</int>
<reference key="object" ref="106037542"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">575</int>
<reference key="object" ref="177396746"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">576</int>
<reference key="object" ref="568772262"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">577</int>
<reference key="object" ref="422046017"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">578</int>
<reference key="object" ref="971455521"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">579</int>
<reference key="object" ref="147794766"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">580</int>
<reference key="object" ref="804307652"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">581</int>
<reference key="object" ref="179918578"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">582</int>
<reference key="object" ref="676214925"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">583</int>
<reference key="object" ref="817992552"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">584</int>
<reference key="object" ref="627105425"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">585</int>
<reference key="object" ref="324120524"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">586</int>
<reference key="object" ref="23492998"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">589</int>
<reference key="object" ref="292529916"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">590</int>
<reference key="object" ref="844002325"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">591</int>
<reference key="object" ref="431501686"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">592</int>
<reference key="object" ref="273430780"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">593</int>
<reference key="object" ref="495314318"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">594</int>
<reference key="object" ref="587899064"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">595</int>
<reference key="object" ref="394896491"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">596</int>
<reference key="object" ref="813797837"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">597</int>
<reference key="object" ref="676171511"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">598</int>
<reference key="object" ref="338632322"/>
<reference key="parent" ref="301937284"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">677</int>
<reference key="object" ref="371740868"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="598576309"/>
</object>
<reference key="parent" ref="649796088"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">678</int>
<reference key="object" ref="598576309"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="98309598"/>
<reference ref="557205095"/>
<reference ref="1033561063"/>
<reference ref="87656023"/>
<reference ref="928942966"/>
<reference ref="495560802"/>
<reference ref="459180548"/>
<reference ref="1034979508"/>
<reference ref="672956548"/>
<reference ref="1027949812"/>
<reference ref="383281702"/>
<reference ref="570668246"/>
<reference ref="102000755"/>
<reference ref="113847529"/>
<reference ref="750583826"/>
<reference ref="778214681"/>
<reference ref="931839081"/>
<reference ref="303945429"/>
<reference ref="28591382"/>
<reference ref="955331079"/>
</object>
<reference key="parent" ref="371740868"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">689</int>
<reference key="object" ref="303945429"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">687</int>
<reference key="object" ref="1033561063"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">695</int>
<reference key="object" ref="87656023"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">686</int>
<reference key="object" ref="928942966"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">704</int>
<reference key="object" ref="459180548"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">694</int>
<reference key="object" ref="495560802"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">709</int>
<reference key="object" ref="1027949812"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">700</int>
<reference key="object" ref="672956548"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">705</int>
<reference key="object" ref="1034979508"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">691</int>
<reference key="object" ref="557205095"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">690</int>
<reference key="object" ref="98309598"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">710</int>
<reference key="object" ref="383281702"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">711</int>
<reference key="object" ref="570668246"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">713</int>
<reference key="object" ref="102000755"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">714</int>
<reference key="object" ref="113847529"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">715</int>
<reference key="object" ref="750583826"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">716</int>
<reference key="object" ref="778214681"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">717</int>
<reference key="object" ref="931839081"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">718</int>
<reference key="object" ref="28591382"/>
<reference key="parent" ref="598576309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">719</int>
<reference key="object" ref="955331079"/>
<reference key="parent" ref="598576309"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -693,8 +1450,58 @@
<string>562.IBPluginDependency</string>
<string>563.IBPluginDependency</string>
<string>564.IBPluginDependency</string>
<string>568.IBPluginDependency</string>
<string>569.IBPluginDependency</string>
<string>57.IBPluginDependency</string>
<string>570.IBPluginDependency</string>
<string>571.IBPluginDependency</string>
<string>573.IBPluginDependency</string>
<string>574.IBPluginDependency</string>
<string>575.IBPluginDependency</string>
<string>576.IBPluginDependency</string>
<string>577.IBPluginDependency</string>
<string>578.IBPluginDependency</string>
<string>579.IBPluginDependency</string>
<string>58.IBPluginDependency</string>
<string>580.IBPluginDependency</string>
<string>581.IBPluginDependency</string>
<string>582.IBPluginDependency</string>
<string>583.IBPluginDependency</string>
<string>584.IBPluginDependency</string>
<string>585.IBPluginDependency</string>
<string>586.IBPluginDependency</string>
<string>589.IBPluginDependency</string>
<string>590.IBPluginDependency</string>
<string>591.IBPluginDependency</string>
<string>592.IBPluginDependency</string>
<string>593.IBPluginDependency</string>
<string>594.IBPluginDependency</string>
<string>595.IBPluginDependency</string>
<string>596.IBPluginDependency</string>
<string>597.IBPluginDependency</string>
<string>598.IBPluginDependency</string>
<string>677.IBPluginDependency</string>
<string>678.IBPluginDependency</string>
<string>686.IBPluginDependency</string>
<string>687.IBPluginDependency</string>
<string>689.IBPluginDependency</string>
<string>690.IBPluginDependency</string>
<string>691.IBPluginDependency</string>
<string>694.IBPluginDependency</string>
<string>695.IBPluginDependency</string>
<string>700.IBPluginDependency</string>
<string>704.IBPluginDependency</string>
<string>705.IBPluginDependency</string>
<string>709.IBPluginDependency</string>
<string>710.IBPluginDependency</string>
<string>711.IBPluginDependency</string>
<string>713.IBPluginDependency</string>
<string>714.IBPluginDependency</string>
<string>715.IBPluginDependency</string>
<string>716.IBPluginDependency</string>
<string>717.IBPluginDependency</string>
<string>718.IBPluginDependency</string>
<string>719.IBPluginDependency</string>
<string>72.IBPluginDependency</string>
<string>74.IBPluginDependency</string>
<string>75.IBPluginDependency</string>
@ -743,6 +1550,56 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@ -757,7 +1614,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">567</int>
<int key="maxID">721</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>

View File

@ -3,6 +3,7 @@
#include <Emgui.h>
#include <stdio.h>
#include <math.h>
#include "Menu.h"
#include "Dialog.h"
#include "Editor.h"
#include "LoadSave.h"
@ -1322,6 +1323,13 @@ void updateNeedsSaving()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool Editor_needsSave()
{
return s_undoLevel != Commands_undoCount();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onFinishedLoad(const text_t* path)
{
Editor_update();
@ -1343,6 +1351,72 @@ void Editor_loadRecentFile(int id)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const char* s_type[] =
{
"EDITOR_MENU_NEW",
"EDITOR_MENU_SUB_MENU",
"EDITOR_MENU_SEPARATOR",
"EDITOR_MENU_RECENT_FILE_0",
"EDITOR_MENU_RECENT_FILE_1",
"EDITOR_MENU_RECENT_FILE_2",
"EDITOR_MENU_RECENT_FILE_3",
"EDITOR_MENU_OPEN",
"EDITOR_MENU_SAVE",
"EDITOR_MENU_SAVE_AS",
"EDITOR_MENU_REMOTE_EXPORT",
"EDITOR_MENU_UNDO",
"EDITOR_MENU_REDO",
"EDITOR_MENU_CANCEL_EDIT",
"EDITOR_MENU_CLEAR",
"EDITOR_MENU_CUT",
"EDITOR_MENU_COPY",
"EDITOR_MENU_PASTE",
"EDITOR_MENU_SELECT_TRACK",
"EDITOR_MENU_BIAS_P_001",
"EDITOR_MENU_BIAS_P_01",
"EDITOR_MENU_BIAS_P_1",
"EDITOR_MENU_BIAS_P_10",
"EDITOR_MENU_BIAS_P_100",
"EDITOR_MENU_BIAS_P_1000",
"EDITOR_MENU_BIAS_N_001",
"EDITOR_MENU_BIAS_N_01",
"EDITOR_MENU_BIAS_N_1",
"EDITOR_MENU_BIAS_N_10",
"EDITOR_MENU_BIAS_N_100",
"EDITOR_MENU_BIAS_N_1000",
"EDITOR_MENU_INTERPOLATION",
"EDITOR_MENU_ENTER_CURRENT_V",
"EDITOR_MENU_PLAY",
"EDITOR_MENU_ROW_UP",
"EDITOR_MENU_ROW_DOWN",
"EDITOR_MENU_TRACK_LEFT",
"EDITOR_MENU_TRACK_RIGHT",
"EDITOR_MENU_ROWS_DOWN",
"EDITOR_MENU_ROWS_UP",
"EDITOR_MENU_PREV_BOOKMARK",
"EDITOR_MENU_NEXT_BOOKMARK",
"EDITOR_MENU_FIRST_TRACK",
"EDITOR_MENU_LAST_TRACK",
"EDITOR_MENU_PREV_KEY",
"EDITOR_MENU_NEXT_KEY",
"EDITOR_MENU_FOLD_TRACK",
"EDITOR_MENU_UNFOLD_TRACK",
"EDITOR_MENU_FOLD_GROUP",
"EDITOR_MENU_UNFOLD_GROUP",
"EDITOR_MENU_TOGGLE_BOOKMARK",
"EDITOR_MENU_CLEAR_BOOKMARKS",
"EDITOR_MENU_TAB",
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Editor_onMenuEvent(int id)
{
printf("%s\n", s_type[id - 0x1000]);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onOpen()
{
text_t currentFile[2048];
@ -1353,7 +1427,7 @@ static void onOpen()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static bool onSaveDialog()
static bool onSaveAs()
{
text_t path[2048];
int ret;
@ -1373,7 +1447,7 @@ static bool onSaveDialog()
static void onSave()
{
if (!s_loadedFilename)
onSaveDialog();
onSaveAs();
else
LoadSave_saveRocketXML(getMostRecentFile(), getTrackData());
@ -1391,19 +1465,87 @@ bool Editor_saveBeforeExit()
return true;
}
return onSaveDialog();
return onSaveAs();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Editor_menuEvent(int menuItem)
{
printf("%s\n", s_type[menuItem - 0x1000]);
switch (menuItem)
{
case EDITOR_MENU_OPEN: onOpen(); break;
case EDITOR_MENU_SAVE: onSave(); break;
case EDITOR_MENU_SAVE_AS : onSaveDialog(); break;
case EDITOR_MENU_SAVE_AS: onSaveAs(); break;
case EDITOR_MENU_REMOTE_EXPORT : RemoteConnection_sendSaveCommand(); break;
case EDITOR_MENU_RECENT_FILE_0:
case EDITOR_MENU_RECENT_FILE_1:
case EDITOR_MENU_RECENT_FILE_2:
case EDITOR_MENU_RECENT_FILE_3:
{
Editor_loadRecentFile(menuItem - EDITOR_MENU_RECENT_FILE_0);
break;
}
/*
EDITOR_MENU_OPEN,
EDITOR_MENU_SAVE,
EDITOR_MENU_SAVE_AS,
EDITOR_MENU_REMOTE_EXPORT,
// Edit
EDITOR_MENU_UNDO,
EDITOR_MENU_REDO,
EDITOR_MENU_CANCEL_EDIT,
EDITOR_MENU_CLEAR,
EDITOR_MENU_CUT,
EDITOR_MENU_COPY,
EDITOR_MENU_PASTE,
EDITOR_MENU_SELECT_TRACK,
EDITOR_MENU_BIAS_P_001,
EDITOR_MENU_BIAS_P_01,
EDITOR_MENU_BIAS_P_1,
EDITOR_MENU_BIAS_P_10,
EDITOR_MENU_BIAS_P_100,
EDITOR_MENU_BIAS_P_1000,
EDITOR_MENU_BIAS_N_001,
EDITOR_MENU_BIAS_N_01,
EDITOR_MENU_BIAS_N_1,
EDITOR_MENU_BIAS_N_10,
EDITOR_MENU_BIAS_N_100,
EDITOR_MENU_BIAS_N_1000,
EDITOR_MENU_INTERPOLATION,
EDITOR_MENU_ENTER_CURRENT_V,
// View
EDITOR_MENU_PLAY,
EDITOR_MENU_ROW_UP,
EDITOR_MENU_ROW_DOWN,
EDITOR_MENU_TRACK_LEFT,
EDITOR_MENU_TRACK_RIGHT,
EDITOR_MENU_ROWS_DOWN,
EDITOR_MENU_ROWS_UP,
EDITOR_MENU_PREV_BOOKMARK,
EDITOR_MENU_NEXT_BOOKMARK,
EDITOR_MENU_FIRST_TRACK,
EDITOR_MENU_LAST_TRACK,
EDITOR_MENU_PREV_KEY,
EDITOR_MENU_NEXT_KEY,
EDITOR_MENU_FOLD_TRACK,
EDITOR_MENU_UNFOLD_TRACK,
EDITOR_MENU_FOLD_GROUP,
EDITOR_MENU_UNFOLD_GROUP,
EDITOR_MENU_TOGGLE_BOOKMARK,
EDITOR_MENU_CLEAR_BOOKMARKS,
EDITOR_MENU_TAB,
*/
}
}

View File

@ -15,20 +15,12 @@ void Editor_scroll(float deltaX, float deltaY, int flags);
void Editor_updateTrackScroll();
void Editor_loadRecentFile(int file);
bool Editor_saveBeforeExit();
bool Editor_needsSave();
text_t** Editor_getRecentFiles();
enum
{
EDITOR_MENU_NEW,
EDITOR_MENU_OPEN,
EDITOR_MENU_SAVE,
EDITOR_MENU_SAVE_AS,
EDITOR_MENU_REMOTE_EXPORT,
};
enum
{
EDITOR_KEY_SHIFT = 1,
EDITOR_KEY_ALT = 2,
EDITOR_KEY_CTRL = 4,

88
ogl_editor/src/Menu.c Normal file
View File

@ -0,0 +1,88 @@
#include "Menu.h"
#include <Emgui.h>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// On win32 (where we use unicode for text-strings) this is defined already
#ifndef _WIN32
#define _T(v) v
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MenuDescriptor g_fileMenu[] =
{
{ _T("Open..."), EDITOR_MENU_OPEN, 'o', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Recent Files"), EDITOR_MENU_SUB_MENU, 0, 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Save"), EDITOR_MENU_SAVE, 's', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Save as..."), EDITOR_MENU_SAVE_AS, 's', EMGUI_KEY_COMMAND | EMGUI_KEY_SHIFT, EMGUI_KEY_CTRL | EMGUI_KEY_SHIFT },
{ _T("Remote export"), EDITOR_MENU_REMOTE_EXPORT, 'e', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ 0 },
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MenuDescriptor g_editMenu[] =
{
{ _T("Undo"), EDITOR_MENU_UNDO, 'z', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Redo"), EDITOR_MENU_REDO, 'z', EMGUI_KEY_COMMAND | EMGUI_KEY_SHIFT, EMGUI_KEY_CTRL | EMGUI_KEY_SHIFT },
{ _T("Cancel Edit"), EDITOR_MENU_CANCEL_EDIT, EMGUI_KEY_ESC, 0, 0 },
{ _T("Clear"), EDITOR_MENU_CLEAR, EMGUI_KEY_BACKSPACE, 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Cut"), EDITOR_MENU_CUT, 'x', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Copy"), EDITOR_MENU_COPY, 'c', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Paste"), EDITOR_MENU_PASTE, 'v', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Select Track"), EDITOR_MENU_SELECT_TRACK, 't', EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Bias +0.01"), EDITOR_MENU_BIAS_P_001, 'q', 0, 0 },
{ _T("Bias +0.1"), EDITOR_MENU_BIAS_P_01, 'w', 0, 0 },
{ _T("Bias +1.0"), EDITOR_MENU_BIAS_P_1, 'e', 0, 0 },
{ _T("Bias +10.0"), EDITOR_MENU_BIAS_P_10, 'r', 0, 0 },
{ _T("Bias +10.01"), EDITOR_MENU_BIAS_P_100, 't', 0, 0 },
{ _T("Bias +100.01"), EDITOR_MENU_BIAS_P_1000, 'y', 0, 0 },
{ _T("Bias -0.01"), EDITOR_MENU_BIAS_N_001, 'a', 0, 0 },
{ _T("Bias -0.1"), EDITOR_MENU_BIAS_N_01, 's', 0, 0 },
{ _T("Bias -1.0"), EDITOR_MENU_BIAS_N_1, 'd', 0, 0 },
{ _T("Bias -10.0"), EDITOR_MENU_BIAS_N_10, 'f', 0, 0 },
{ _T("Bias -10.01"), EDITOR_MENU_BIAS_N_100, 'g', 0, 0 },
{ _T("Bias -100.01"), EDITOR_MENU_BIAS_N_1000, 'h', 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Interpolation"), EDITOR_MENU_INTERPOLATION, 'i', 0, 0 },
{ _T("Insert current value"), EDITOR_MENU_ENTER_CURRENT_V,EMGUI_KEY_ENTER,0, 0 },
{ 0 },
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MenuDescriptor g_viewMenu[] =
{
{ _T("Start/Stop Playback"), EDITOR_MENU_PLAY, EMGUI_KEY_SPACE, 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Jump one row up"), EDITOR_MENU_ROW_UP, EMGUI_KEY_ARROW_UP, 0, 0 },
{ _T("Jump one row down"), EDITOR_MENU_ROW_DOWN, EMGUI_KEY_ARROW_DOWN, 0, 0 },
{ _T("Jump one track left"), EDITOR_MENU_TRACK_LEFT, EMGUI_KEY_ARROW_LEFT, 0, 0 },
{ _T("Jump one track right"), EDITOR_MENU_TRACK_RIGHT, EMGUI_KEY_ARROW_RIGHT, 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Jump 8 rows up"), EDITOR_MENU_ROWS_UP, EMGUI_KEY_ARROW_UP, EMGUI_KEY_ALT, 0 },
{ _T("Jump 8 rows down"), EDITOR_MENU_ROWS_DOWN, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_ALT, 0 },
{ _T("Jump to previous bookmark"), EDITOR_MENU_PREV_BOOKMARK, EMGUI_KEY_ARROW_UP, EMGUI_KEY_COMMAND, 0 },
{ _T("Jump to next bookmark"), EDITOR_MENU_NEXT_BOOKMARK, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_COMMAND, 0 },
{ _T("Jump to first track"), EDITOR_MENU_FIRST_TRACK, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_COMMAND, 0 },
{ _T("Jump to last track"), EDITOR_MENU_LAST_TRACK, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_COMMAND, 0 },
{ _T("Jump to previous key"), EDITOR_MENU_PREV_KEY, EMGUI_KEY_ARROW_UP, EMGUI_KEY_CTRL, 0 },
{ _T("Jump to next key"), EDITOR_MENU_NEXT_KEY, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_CTRL, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Fold track"), EDITOR_MENU_FOLD_TRACK, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_ALT, 0 },
{ _T("Unfold track"), EDITOR_MENU_UNFOLD_TRACK, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_ALT, 0 },
{ _T("Fold group"), EDITOR_MENU_FOLD_GROUP, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_ALT | EMGUI_KEY_CTRL, 0 },
{ _T("Unfold group"), EDITOR_MENU_UNFOLD_GROUP, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_ALT | EMGUI_KEY_CTRL, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Toogle bookmark"), EDITOR_MENU_TOGGLE_BOOKMARK, 'b', 0, 0 },
{ _T("Clear bookmarks"), EDITOR_MENU_CLEAR_BOOKMARKS, 'b', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Unfold track"), EDITOR_MENU_UNFOLD_TRACK, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_ALT, 0 },
{ _T("Jump row,start/end & edit"), EDITOR_MENU_TAB, EMGUI_KEY_TAB, 0, 0 },
{ 0 },
};

95
ogl_editor/src/Menu.h Normal file
View File

@ -0,0 +1,95 @@
#pragma once
#ifndef _WIN32
#define _T(v) v
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum
{
// File
EDITOR_MENU_NEW = 0x1000,
EDITOR_MENU_SUB_MENU,
EDITOR_MENU_SEPARATOR,
EDITOR_MENU_RECENT_FILE_0,
EDITOR_MENU_RECENT_FILE_1,
EDITOR_MENU_RECENT_FILE_2,
EDITOR_MENU_RECENT_FILE_3,
EDITOR_MENU_OPEN,
EDITOR_MENU_SAVE,
EDITOR_MENU_SAVE_AS,
EDITOR_MENU_REMOTE_EXPORT,
// Edit
EDITOR_MENU_UNDO,
EDITOR_MENU_REDO,
EDITOR_MENU_CANCEL_EDIT,
EDITOR_MENU_CLEAR,
EDITOR_MENU_CUT,
EDITOR_MENU_COPY,
EDITOR_MENU_PASTE,
EDITOR_MENU_SELECT_TRACK,
EDITOR_MENU_BIAS_P_001,
EDITOR_MENU_BIAS_P_01,
EDITOR_MENU_BIAS_P_1,
EDITOR_MENU_BIAS_P_10,
EDITOR_MENU_BIAS_P_100,
EDITOR_MENU_BIAS_P_1000,
EDITOR_MENU_BIAS_N_001,
EDITOR_MENU_BIAS_N_01,
EDITOR_MENU_BIAS_N_1,
EDITOR_MENU_BIAS_N_10,
EDITOR_MENU_BIAS_N_100,
EDITOR_MENU_BIAS_N_1000,
EDITOR_MENU_INTERPOLATION,
EDITOR_MENU_ENTER_CURRENT_V,
// View
EDITOR_MENU_PLAY,
EDITOR_MENU_ROW_UP,
EDITOR_MENU_ROW_DOWN,
EDITOR_MENU_TRACK_LEFT,
EDITOR_MENU_TRACK_RIGHT,
EDITOR_MENU_ROWS_DOWN,
EDITOR_MENU_ROWS_UP,
EDITOR_MENU_PREV_BOOKMARK,
EDITOR_MENU_NEXT_BOOKMARK,
EDITOR_MENU_FIRST_TRACK,
EDITOR_MENU_LAST_TRACK,
EDITOR_MENU_PREV_KEY,
EDITOR_MENU_NEXT_KEY,
EDITOR_MENU_FOLD_TRACK,
EDITOR_MENU_UNFOLD_TRACK,
EDITOR_MENU_FOLD_GROUP,
EDITOR_MENU_UNFOLD_GROUP,
EDITOR_MENU_TOGGLE_BOOKMARK,
EDITOR_MENU_CLEAR_BOOKMARKS,
EDITOR_MENU_TAB,
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct MenuDescriptor
{
#if defined(_WIN32)
const wchar_t* name;
#else
const char* name;
#endif
int id;
int key;
int macMod;
int winMid;
} MenuDescriptor;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
extern MenuDescriptor g_fileMenu[];
extern MenuDescriptor g_editMenu[];
extern MenuDescriptor g_viewMenu[];

View File

@ -1,12 +1,85 @@
#import "RocketView.h"
#include "../Editor.h"
#include "../rlog.h"
#include "../Menu.h"
#include <Emgui.h>
#include <GFXBackend.h>
#include <CoreFoundation/CoreFoundation.h>
#include <Carbon/Carbon.h>
NSOpenGLContext* g_context = 0;
NSWindow* g_window = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Scan codes on Mac taken from http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes
#define KEY_A 0
#define KEY_S 1
#define KEY_D 2
#define KEY_F 3
#define KEY_H 4
#define KEY_G 5
#define KEY_Z 6
#define KEY_X 7
#define KEY_C 8
#define KEY_V 9
#define KEY_B 11
#define KEY_Q 12
#define KEY_W 13
#define KEY_E 14
#define KEY_R 15
#define KEY_Y 16
#define KEY_T 17
#define KEY_1 18
#define KEY_2 19
#define KEY_3 20
#define KEY_4 21
#define KEY_6 22
#define KEY_5 23
#define KEY_EQUALS 24
#define KEY_9 25
#define KEY_7 26
#define KEY_MINUS 27
#define KEY_8 28
#define KEY_0 29
#define KEY_RIGHTBRACKET 30
#define KEY_O 31
#define KEY_U 32
#define KEY_LEFTBRACKET 33
#define KEY_I 34
#define KEY_P 35
#define KEY_RETURN 36
#define KEY_L 37
#define KEY_J 38
#define KEY_APOSTROPHE 39
#define KEY_K 40
#define KEY_SEMICOLON 41
#define KEY_FRONTSLASH 42
#define KEY_COMMA 43
#define KEY_BACKSLASH 44
#define KEY_N 45
#define KEY_M 46
#define KEY_PERIOD 47
#define KEY_TAB 48
#define KEY_SPACE 49
#define KEY_BACKAPOSTROPHE 50
#define KEY_DELETE 51
#define KEY_ESCAPE 53
#define KEY_COMMAND 55
#define KEY_SHIFT 56
#define KEY_CAPSLOCK 57
#define KEY_OPTION 58
#define KEY_CONTROL 59
#define KEY_UP 126
#define KEY_DOWN 125
#define KEY_LEFT 123
#define KEY_RIGHT 124
@implementation RocketView
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -98,6 +171,7 @@ static int getModifierFlags(int flags)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
- (void)keyDown:(NSEvent *)theEvent
{
NSString* key = [theEvent charactersIgnoringModifiers];
@ -128,6 +202,7 @@ static int getModifierFlags(int flags)
Editor_update();
}
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -215,16 +290,218 @@ static int getModifierFlags(int flags)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (void)onRecentFile:(id)sender
CFStringRef createStringForKey(CGKeyCode keyCode)
{
NSString* string = [sender representedObject];
Editor_loadRecentFile([string intValue]);
TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
CFDataRef layoutData =
TISGetInputSourceProperty(currentKeyboard,
kTISPropertyUnicodeKeyLayoutData);
if (!layoutData)
return 0;
const UCKeyboardLayout *keyboardLayout =
(const UCKeyboardLayout *)CFDataGetBytePtr(layoutData);
UInt32 keysDown = 0;
UniChar chars[4];
UniCharCount realLength;
UCKeyTranslate(keyboardLayout,
keyCode,
kUCKeyActionDisplay,
0,
LMGetKbdType(),
kUCKeyTranslateNoDeadKeysBit,
&keysDown,
sizeof(chars) / sizeof(chars[0]),
&realLength,
chars);
CFRelease(currentKeyboard);
return CFStringCreateWithCharacters(kCFAllocatorDefault, chars, 1);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- (void)onMenuPress:(id)sender
{
int id = (int)((NSButton*)sender).tag;
Editor_menuEvent(id);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static int s_characterToKeyCode[] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x27, // '''
0, 0, 0, 0,
0x2b, // ','
0x1b, // '-'
0x2f, // '.'
0x2c, // '/'
0x1d, // '0'
0x12, // '1'
0x13, // '2'
0x14, // '3'
0x15, // '4'
0x17, // '5'
0x16, // '6'
0x1a, // '7'
0x1c, // '8'
0x19, // '9'
0,
0x29, // ';'
0,
0x18, // '='
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x21, // '['
0x2a, // '\'
0x1e, // ']'
0,
0,
0x32, // '`'
0,
0x0b, // 'b'
0x08, // 'c'
0x02, // 'd'
0x0e, // 'e'
0x03, // 'f'
0x05, // 'g'
0x04, // 'h'
0x22, // 'i'
0x26, // 'j'
0x28, // 'k'
0x25, // 'l'
0x2e, // 'm'
0x2d, // 'n'
0x1f, // 'o'
0x23, // 'p'
0x0c, // 'q'
0x0f, // 'r'
0x01, // 's'
0x11, // 't'
0x20, // 'u'
0x09, // 'v'
0x0d, // 'w'
0x07, // 'x'
0x10, // 'y'
0x06, // 'z'
0, 0, 0, 0, 0,
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
NSString* convertKeyCodeToString(int key)
{
if (key < 128)
{
// first try to translate it and if that doesn't work use it as is
NSString* charName = (NSString*)createStringForKey(s_characterToKeyCode[key]);
if (charName)
return charName;
return [NSString stringWithFormat:@"%c", (char)key];
}
else
{
switch (key)
{
case EMGUI_KEY_ARROW_UP: return [NSString stringWithFormat:@"%C", (uint16_t)0x2191];
case EMGUI_KEY_ARROW_DOWN: return [NSString stringWithFormat:@"%C", (uint16_t)0x2193];
case EMGUI_KEY_ARROW_LEFT: return [NSString stringWithFormat:@"%C", (uint16_t)0x2190];
case EMGUI_KEY_ARROW_RIGHT: return [NSString stringWithFormat:@"%C", (uint16_t)0x2192];
case EMGUI_KEY_ESC : return [NSString stringWithFormat:@"%C", (uint16_t)0x238b];
case EMGUI_KEY_ENTER : return [NSString stringWithFormat:@"%C", (uint16_t)NSCarriageReturnCharacter];
case EMGUI_KEY_SPACE : return @" ";
case EMGUI_KEY_BACKSPACE : return [NSString stringWithFormat:@"%C",(uint16_t)0x232b];
case EMGUI_KEY_TAB : return [NSString stringWithFormat:@"%C",(uint16_t)0x21e4];
}
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void buildSubMenu(NSMenu* menu, MenuDescriptor menuDesc[])
{
MenuDescriptor* desc = &menuDesc[0];
[menu removeAllItems];
while (desc->name)
{
NSString* name = [NSString stringWithUTF8String: desc->name];
if (desc->id == EDITOR_MENU_SEPARATOR)
{
[menu addItem:[NSMenuItem separatorItem]];
}
else if (desc->id == EDITOR_MENU_SUB_MENU)
{
NSMenuItem* newItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:name action:NULL keyEquivalent:@""];
NSMenu* newMenu = [[NSMenu allocWithZone:[NSMenu menuZone]] initWithTitle:name];
[newItem setSubmenu:newMenu];
[newMenu release];
[menu addItem:newItem];
[newItem release];
}
else
{
int mask = 0;
NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:name action:@selector(onMenuPress:) keyEquivalent:@""];
[newItem setTag:desc->id];
if (desc->macMod & EMGUI_KEY_COMMAND)
mask |= NSCommandKeyMask;
if (desc->macMod & EMGUI_KEY_SHIFT)
mask |= NSShiftKeyMask;
if (desc->macMod & EMGUI_KEY_CTRL)
mask |= NSControlKeyMask;
if (desc->macMod & EMGUI_KEY_ALT)
mask |= NSAlternateKeyMask;
NSString* key = convertKeyCodeToString(desc->key);
if (key)
{
[newItem setKeyEquivalentModifierMask: mask];
[newItem setKeyEquivalent:key];
}
else
{
fprintf(stderr, "Unable to map keyboard shortcut for %s\n", desc->name);
}
[menu addItem:newItem];
[newItem release];
}
desc++;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void buildMenu()
{
NSMenu* fileMenu = [[[NSApp mainMenu] itemWithTitle:@"File"] submenu];
NSMenu* editMenu = [[[NSApp mainMenu] itemWithTitle:@"Edit"] submenu];
NSMenu* viewMenu = [[[NSApp mainMenu] itemWithTitle:@"View"] submenu];
buildSubMenu(fileMenu, g_fileMenu);
buildSubMenu(editMenu, g_editMenu);
buildSubMenu(viewMenu, g_viewMenu);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Window_populateRecentList(const char** files)
{
buildMenu();
NSMenu* fileMenu = [[[NSApp mainMenu] itemWithTitle:@"File"] submenu];
NSMenu* recentItems = [[fileMenu itemWithTitle:@"Recent Files"] submenu];
@ -239,7 +516,8 @@ void Window_populateRecentList(const char** files)
NSString* name = [NSString stringWithUTF8String: filename];
NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:name action:@selector(onRecentFile:) keyEquivalent:@""];
NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:name action:@selector(onMenuPress:) keyEquivalent:@""];
[newItem setTag:EDITOR_MENU_RECENT_FILE_0 + i];
[newItem setRepresentedObject:[NSString stringWithFormat:@"%d",i]];
[newItem setKeyEquivalentModifierMask: NSCommandKeyMask];
[newItem setKeyEquivalent:[NSString stringWithFormat:@"%d",i + 1]];

View File

@ -1,7 +1,7 @@
#import <Cocoa/Cocoa.h>
@interface MinimalAppAppDelegate : NSObject <NSApplicationDelegate> {
@interface RocketAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSButton *button;
}

View File

@ -5,7 +5,7 @@
void Window_populateRecentList(char** files);
@implementation MinimalAppAppDelegate
@implementation RocketAppDelegate
@synthesize window;
@synthesize button;
@ -14,6 +14,9 @@ void Window_populateRecentList(char** files);
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
if (!Editor_needsSave())
return NSTerminateNow;
int ret = NSRunAlertPanel(@"Save before exit?", @"Do you want save the work?", @"Yes", @"Cancel", @"No");
if (ret == NSAlertDefaultReturn)
@ -38,16 +41,20 @@ void Window_populateRecentList(char** files);
NSUserDefaults* prefs = [NSUserDefaults standardUserDefaults];
for (int i = 0; i < 4; ++i)
recent_list[i][0] = 0;
if (prefs)
{
NSArray* stringArray = [prefs objectForKey:@"recentFiles"];
int recentIndex = 0;
for (int i = 0; i < 4; ++i)
{
NSString* name = [stringArray objectAtIndex:i];
const char* filename = [name cStringUsingEncoding:NSUTF8StringEncoding];
if (filename)
strcpy(recent_list[i], filename);
if (filename && filename[0] != 0)
strcpy(recent_list[recentIndex++], filename);
}
}

View File

@ -175,6 +175,9 @@ static int onKeyDown(WPARAM wParam, LPARAM lParam)
{
int key = -1;
int foo = (int)(lParam >> 16);
(void)foo;
switch (wParam)
{
case VK_LEFT : key = EMGUI_ARROW_LEFT; break;
@ -185,7 +188,11 @@ static int onKeyDown(WPARAM wParam, LPARAM lParam)
default:
{
int p, t = (int)wParam;
(void)t;
wParam = MapVirtualKey((UINT)wParam, 2) & 0x0000ffff;
p = wParam;
(void)p;
wParam = (WPARAM) CharUpperA((LPSTR)wParam);
if((wParam >= 32 && wParam <= 126) ||
@ -267,7 +274,7 @@ LRESULT CALLBACK WndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam
}
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
//case WM_SYSKEYDOWN:
{
int key = onKeyDown(wParam, lParam);
@ -288,7 +295,7 @@ LRESULT CALLBACK WndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam
{
case ID_FILE_OPEN:
{
Editor_menuEvent(EDITOR_MENU_OPEN);
//Editor_menuEvent(EDITOR_MENU_OPEN);
Editor_update();
break;
}

View File

@ -6,7 +6,7 @@ local macosx = {
"-Wno-deprecated-declarations", -- TickCount issue no Mountain Lion (needs to be fixed)
"-I.", "-DMACOSX", "-Wall",
{ "-O0", "-g"; Config = "*-*-debug" },
{ "-O4"; Config = "*-*-release" },
{ "-O3"; Config = "*-*-release" },
},
},

View File

@ -108,7 +108,7 @@ Program {
Libs = { { "wsock32.lib", "opengl32.lib", "glu32.lib", "kernel32.lib", "user32.lib", "gdi32.lib", "Comdlg32.lib" ; Config = "win32-*-*" } },
Frameworks = { "Cocoa", "OpenGL" },
Frameworks = { "Cocoa", "OpenGL", "Carbon" },
}