Forráskód Böngészése

Added tab related shortcuts to OS X menu

Ivan Safrin 12 éve
szülő
commit
b17ab54c9e

+ 130 - 285
IDE/Build/Mac OS X/English.lproj/MainMenu.xib

@@ -1,23 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
 	<data>
-		<int key="IBDocument.SystemTarget">1080</int>
-		<string key="IBDocument.SystemVersion">12D78</string>
-		<string key="IBDocument.InterfaceBuilderVersion">3084</string>
-		<string key="IBDocument.AppKitVersion">1187.37</string>
-		<string key="IBDocument.HIToolboxVersion">626.00</string>
+		<int key="IBDocument.SystemTarget">1070</int>
+		<string key="IBDocument.SystemVersion">11E53</string>
+		<string key="IBDocument.InterfaceBuilderVersion">2182</string>
+		<string key="IBDocument.AppKitVersion">1138.47</string>
+		<string key="IBDocument.HIToolboxVersion">569.00</string>
 		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
 			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
-			<string key="NS.object.0">3084</string>
+			<string key="NS.object.0">2182</string>
 		</object>
 		<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
 			<bool key="EncodedWithXMLCoder">YES</bool>
-			<string>NSCustomObject</string>
-			<string>NSMenu</string>
-			<string>NSMenuItem</string>
 			<string>NSOpenGLView</string>
-			<string>NSView</string>
 			<string>NSWindowTemplate</string>
+			<string>NSView</string>
+			<string>NSMenu</string>
+			<string>NSMenuItem</string>
+			<string>NSCustomObject</string>
 		</object>
 		<object class="NSArray" key="IBDocument.PluginDependencies">
 			<bool key="EncodedWithXMLCoder">YES</bool>
@@ -533,6 +533,51 @@
 							<string key="NSTitle">View</string>
 							<object class="NSMutableArray" key="NSMenuItems">
 								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="983294127">
+									<reference key="NSMenu" ref="623021514"/>
+									<string key="NSTitle">Create New Tab</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="1062553166">
+									<reference key="NSMenu" ref="623021514"/>
+									<string key="NSTitle">Select Next Tab</string>
+									<string key="NSKeyEquiv">]</string>
+									<int key="NSKeyEquivModMask">1179648</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="973003605">
+									<reference key="NSMenu" ref="623021514"/>
+									<string key="NSTitle">Select Previous Tab</string>
+									<string key="NSKeyEquiv">[</string>
+									<int key="NSKeyEquivModMask">1179648</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="256198950">
+									<reference key="NSMenu" ref="623021514"/>
+									<string key="NSTitle">CloseTab</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="325320927">
+									<reference key="NSMenu" ref="623021514"/>
+									<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="269422455">
 									<reference key="NSMenu" ref="623021514"/>
 									<string key="NSTitle">Toggle Console</string>
@@ -699,7 +744,6 @@
 							<int key="NSvFlags">1298</int>
 							<string key="NSFrameSize">{800, 600}</string>
 							<reference key="NSSuperview" ref="439893737"/>
-							<reference key="NSWindow"/>
 							<reference key="NSNextKeyView"/>
 							<object class="NSOpenGLPixelFormat" key="NSPixelFormat">
 								<object class="NSMutableData" key="NSPixelAttributes">
@@ -710,10 +754,9 @@
 					</object>
 					<string key="NSFrameSize">{800, 600}</string>
 					<reference key="NSSuperview"/>
-					<reference key="NSWindow"/>
 					<reference key="NSNextKeyView" ref="633009941"/>
 				</object>
-				<string key="NSScreenRect">{{0, 0}, {1440, 900}}</string>
+				<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
 				<string key="NSMinSize">{400, 222}</string>
 				<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
 				<int key="NSWindowCollectionBehavior">128</int>
@@ -1187,6 +1230,38 @@
 					</object>
 					<int key="connectionID">615</int>
 				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">createNewTab:</string>
+						<reference key="source" ref="976324537"/>
+						<reference key="destination" ref="983294127"/>
+					</object>
+					<int key="connectionID">621</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showNextTab:</string>
+						<reference key="source" ref="976324537"/>
+						<reference key="destination" ref="1062553166"/>
+					</object>
+					<int key="connectionID">622</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showPreviousTab:</string>
+						<reference key="source" ref="976324537"/>
+						<reference key="destination" ref="973003605"/>
+					</object>
+					<int key="connectionID">623</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">closeTab:</string>
+						<reference key="source" ref="976324537"/>
+						<reference key="destination" ref="256198950"/>
+					</object>
+					<int key="connectionID">624</int>
+				</object>
 			</object>
 			<object class="IBMutableOrderedSet" key="objectRecords">
 				<object class="NSArray" key="orderedObjects">
@@ -1771,6 +1846,11 @@
 						<object class="NSMutableArray" key="children">
 							<bool key="EncodedWithXMLCoder">YES</bool>
 							<reference ref="269422455"/>
+							<reference ref="983294127"/>
+							<reference ref="325320927"/>
+							<reference ref="1062553166"/>
+							<reference ref="256198950"/>
+							<reference ref="973003605"/>
 						</object>
 						<reference key="parent" ref="429735361"/>
 					</object>
@@ -1779,6 +1859,31 @@
 						<reference key="object" ref="269422455"/>
 						<reference key="parent" ref="623021514"/>
 					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">616</int>
+						<reference key="object" ref="983294127"/>
+						<reference key="parent" ref="623021514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">617</int>
+						<reference key="object" ref="325320927"/>
+						<reference key="parent" ref="623021514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">618</int>
+						<reference key="object" ref="256198950"/>
+						<reference key="parent" ref="623021514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">619</int>
+						<reference key="object" ref="1062553166"/>
+						<reference key="parent" ref="623021514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">620</int>
+						<reference key="object" ref="973003605"/>
+						<reference key="parent" ref="623021514"/>
+					</object>
 				</object>
 			</object>
 			<object class="NSMutableDictionary" key="flattenedProperties">
@@ -1867,6 +1972,11 @@
 					<string>595.IBPluginDependency</string>
 					<string>596.IBPluginDependency</string>
 					<string>597.IBPluginDependency</string>
+					<string>616.IBPluginDependency</string>
+					<string>617.IBPluginDependency</string>
+					<string>618.IBPluginDependency</string>
+					<string>619.IBPluginDependency</string>
+					<string>620.IBPluginDependency</string>
 					<string>72.IBPluginDependency</string>
 					<string>73.IBPluginDependency</string>
 					<string>75.IBPluginDependency</string>
@@ -1968,6 +2078,11 @@
 					<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">
@@ -1982,279 +2097,9 @@
 				<reference key="dict.values" ref="0"/>
 			</object>
 			<nil key="sourceID"/>
-			<int key="maxID">615</int>
-		</object>
-		<object class="IBClassDescriber" key="IBDocument.Classes">
-			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<object class="IBPartialClassDescription">
-					<string key="className">NSDocument</string>
-					<object class="NSMutableDictionary" key="actions">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>printDocument:</string>
-							<string>revertDocumentToSaved:</string>
-							<string>runPageLayout:</string>
-							<string>saveDocument:</string>
-							<string>saveDocumentAs:</string>
-							<string>saveDocumentTo:</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="actionInfosByName">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>printDocument:</string>
-							<string>revertDocumentToSaved:</string>
-							<string>runPageLayout:</string>
-							<string>saveDocument:</string>
-							<string>saveDocumentAs:</string>
-							<string>saveDocumentTo:</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<object class="IBActionInfo">
-								<string key="name">printDocument:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">revertDocumentToSaved:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">runPageLayout:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">saveDocument:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">saveDocumentAs:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">saveDocumentTo:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-						</object>
-					</object>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/NSDocument.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">PolycodeAppDelegate</string>
-					<string key="superclassName">NSObject</string>
-					<object class="NSMutableDictionary" key="actions">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>browseExamples:</string>
-							<string>closeFile:</string>
-							<string>closeProject:</string>
-							<string>exportProject:</string>
-							<string>findText:</string>
-							<string>newFile:</string>
-							<string>newGroup:</string>
-							<string>newProject:</string>
-							<string>openDocs:</string>
-							<string>openProject:</string>
-							<string>refreshProject:</string>
-							<string>removeFile:</string>
-							<string>renameFile:</string>
-							<string>runProject:</string>
-							<string>saveFile:</string>
-							<string>showAbout:</string>
-							<string>showSettings:</string>
-							<string>toggleConsole:</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-							<string>id</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="actionInfosByName">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>browseExamples:</string>
-							<string>closeFile:</string>
-							<string>closeProject:</string>
-							<string>exportProject:</string>
-							<string>findText:</string>
-							<string>newFile:</string>
-							<string>newGroup:</string>
-							<string>newProject:</string>
-							<string>openDocs:</string>
-							<string>openProject:</string>
-							<string>refreshProject:</string>
-							<string>removeFile:</string>
-							<string>renameFile:</string>
-							<string>runProject:</string>
-							<string>saveFile:</string>
-							<string>showAbout:</string>
-							<string>showSettings:</string>
-							<string>toggleConsole:</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<object class="IBActionInfo">
-								<string key="name">browseExamples:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">closeFile:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">closeProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">exportProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">findText:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">newFile:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">newGroup:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">newProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">openDocs:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">openProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">refreshProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">removeFile:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">renameFile:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">runProject:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">saveFile:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">showAbout:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">showSettings:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-							<object class="IBActionInfo">
-								<string key="name">toggleConsole:</string>
-								<string key="candidateClassName">id</string>
-							</object>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="outlets">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>polycodeView</string>
-							<string>projectMenu</string>
-							<string>window</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>PolycodeView</string>
-							<string>NSMenu</string>
-							<string>NSWindow</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>polycodeView</string>
-							<string>projectMenu</string>
-							<string>window</string>
-						</object>
-						<object class="NSArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<object class="IBToOneOutletInfo">
-								<string key="name">polycodeView</string>
-								<string key="candidateClassName">PolycodeView</string>
-							</object>
-							<object class="IBToOneOutletInfo">
-								<string key="name">projectMenu</string>
-								<string key="candidateClassName">NSMenu</string>
-							</object>
-							<object class="IBToOneOutletInfo">
-								<string key="name">window</string>
-								<string key="candidateClassName">NSWindow</string>
-							</object>
-						</object>
-					</object>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/PolycodeAppDelegate.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">PolycodeView</string>
-					<string key="superclassName">NSOpenGLView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/PolycodeView.h</string>
-					</object>
-				</object>
-			</object>
+			<int key="maxID">624</int>
 		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes"/>
 		<int key="IBDocument.localizationMode">0</int>
 		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
 		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">

+ 5 - 0
IDE/Build/Mac OS X/PolycodeAppDelegate.h

@@ -67,4 +67,9 @@ public:
 -(IBAction) openDocs: (id) sender;
 -(IBAction) showAbout: (id) sender;
 -(IBAction) showSettings: (id) sender;
+
+-(IBAction) createNewTab: (id) sender;
+-(IBAction) showNextTab: (id) sender;
+-(IBAction) showPreviousTab: (id) sender;
+-(IBAction) closeTab: (id) sender;
 @end

+ 17 - 0
IDE/Build/Mac OS X/PolycodeAppDelegate.m

@@ -182,4 +182,21 @@ void PolycodeAppEventHandler::handleEvent(Event *evt) {
 	app->showSettings();
 }
 
+-(IBAction) createNewTab: (id) sender {
+	app->createNewTab();
+}
+
+-(IBAction) showNextTab: (id) sender {
+	app->showNextTab();
+}
+
+-(IBAction) showPreviousTab: (id) sender {
+	app->showPreviousTab();
+}
+
+-(IBAction) closeTab: (id) sender {
+	app->closeTab();
+}
+
+
 @end

+ 3 - 0
IDE/Contents/Include/PolycodeFrame.h

@@ -236,6 +236,7 @@ class PolycodeTabButton : public UIElement {
 
 		void setActive(bool val);
 		void handleEvent(Event *event);
+		void updateLabel();
 
 		PolycodeProjectTab *getTab();		
 	protected:
@@ -263,6 +264,8 @@ class PolycodeProjectFrame : public UIElement {
 		
 		void showTab(PolycodeProjectTab *tab);
 		void closeTab(PolycodeProjectTab *tab);
+		void showNextTab();
+		void showPreviousTab();
 		
 		void Update();
 								

+ 5 - 0
IDE/Contents/Include/PolycodeIDEApp.h

@@ -90,6 +90,11 @@ public:
 	void toggleConsole();
 	void showSettings();
 	
+	void createNewTab();
+	void closeTab();
+	void showNextTab();
+	void showPreviousTab();
+	
 	void removeEditor(PolycodeEditor *editor);
 	
 	// system callbacks

+ 35 - 5
IDE/Contents/Source/PolycodeFrame.cpp

@@ -1019,6 +1019,11 @@ PolycodeTabButton::PolycodeTabButton(PolycodeProjectTab *tab) : UIElement() {
 	closeButton->addEventListener(this, UIEvent::CLICK_EVENT);
 }
 
+void PolycodeTabButton::updateLabel() {
+	tabLabel->setText(tab->getTabName().toUpperCase());
+	tabLabel->setPosition(getWidth()-tabLabel->getWidth()-10.0, ((getHeight()-tabLabel->getHeight())/2.0) - 3.0);
+}
+
 void PolycodeTabButton::handleEvent(Event *event) {
 
 	if(event->getDispatcher() == renamePopup) {
@@ -1089,6 +1094,34 @@ PolycodeProjectFrame::PolycodeProjectFrame(PolycodeProject *project, PolycodeEdi
 	addNewTab("Default");
 }
 
+void PolycodeProjectFrame::showNextTab() {
+	for(int i=0; i < tabs.size(); i++) {
+		if(tabs[i] == activeTab) {
+			if(i < tabs.size()-1) {
+				showTab(tabs[i+1]);
+				return;				
+			} else {
+				showTab(tabs[0]);	
+				return;				
+			}
+		}
+	}
+}
+
+void PolycodeProjectFrame::showPreviousTab() {
+	for(int i=0; i < tabs.size(); i++) {
+		if(tabs[i] == activeTab) {
+			if(i > 0) {
+				showTab(tabs[i-1]);
+				return;				
+			} else {
+				showTab(tabs[tabs.size()-1]);
+				return;
+			}
+		}
+	}
+}
+
 PolycodeProjectTab *PolycodeProjectFrame::getTabAtIndex(unsigned int index) {
 	return tabs[index];
 }
@@ -1175,6 +1208,7 @@ void PolycodeProjectFrame::restructTabs() {
 	for(i=0; i < tabButtons.size(); i++) {
 		tabButtons[i]->setPosition(i * 155.0, 0.0);
 		tabButtons[i]->setActive(tabButtons[i]->getTab()->isActive());		
+		tabButtons[i]->updateLabel();
 	}
 	newTabButton->setPosition((i * 155), 0.0);
 }
@@ -1712,11 +1746,7 @@ void PolycodeFrame::switchToProjectFrame(PolycodeProjectFrame *projectFrame) {
 	} 
 	activeProjectFrame = projectFrame;
 	consoleSizer->addTopChild(activeProjectFrame);
-	if(activeProjectFrame->lastActiveEditorHolder) {
-		activeProjectFrame->lastActiveEditorHolder->setActive(true);
-	} else {
-		activeProjectFrame->getActiveTab()->getEditorHolder()->setActive(true);
-	}
+	activeProjectFrame->getActiveTab()->getEditorHolder()->setActive(true);
 	activeProjectFrame->addEventListener(this, UIEvent::CLOSE_EVENT);
 	activeProjectFrame->addEventListener(this, Event::CHANGE_EVENT);
 	Resize(getWidth(), getHeight());

+ 17 - 0
IDE/Contents/Source/PolycodeIDEApp.cpp

@@ -216,6 +216,22 @@ void PolycodeIDEApp::showSettings() {
 	frame->showModal(frame->settingsWindow);
 }
 
+void PolycodeIDEApp::createNewTab() {
+	frame->getActiveProjectFrame()->addNewTab();
+}
+
+void PolycodeIDEApp::closeTab() {
+	frame->getActiveProjectFrame()->closeTab(frame->getActiveProjectFrame()->getActiveTab());
+}
+
+void PolycodeIDEApp::showNextTab() {
+	frame->getActiveProjectFrame()->showNextTab();
+}
+
+void PolycodeIDEApp::showPreviousTab() {
+	frame->getActiveProjectFrame()->showPreviousTab();
+}
+
 void PolycodeIDEApp::toggleConsole() {
 	frame->toggleConsole();
 }
@@ -1181,6 +1197,7 @@ void PolycodeIDEApp::applyFinalConfig() {
 								
 								if(i == 0) {
 									projectFrame->getTabAtIndex(0)->setTabName(tabName->stringVal);
+									projectFrame->restructTabs();
 								} else {
 									projectFrame->addNewTab(tabName->stringVal);
 								}