Ver código fonte

Added resizing support for IDE editor props. Added resize support for UIComboBox. Added resize support for UIHSlider, fixed resizing for UITextInput. Added padding to UITextInput's scissor box so descenders don't get cut off. Made textfields slightly darker.

Ivan Safrin 12 anos atrás
pai
commit
337a5059f8

+ 17 - 2
IDE/Contents/Include/PolycodeProps.h

@@ -30,6 +30,7 @@
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 
+#define PROP_PADDING	40
 
 
 class PolycodeEditorPropActionData;
 class PolycodeEditorPropActionData;
 
 
@@ -40,6 +41,8 @@ class PropProp : public UIElement {
 
 
 		virtual void setPropData(PolycodeEditorPropActionData* data) {}
 		virtual void setPropData(PolycodeEditorPropActionData* data) {}
 		
 		
+		virtual void setPropWidth(Number width) {}
+		
 		String propType;
 		String propType;
 		ScreenLabel *label;
 		ScreenLabel *label;
 		ScreenEntity *propContents;				
 		ScreenEntity *propContents;				
@@ -57,12 +60,17 @@ class Vector2Prop : public PropProp {
 		Vector2 get();
 		Vector2 get();
 		
 		
 		void setPropData(PolycodeEditorPropActionData* data);
 		void setPropData(PolycodeEditorPropActionData* data);
+		
+		void setPropWidth(Number width);		
 				
 				
 		UITextInput *positionX;
 		UITextInput *positionX;
 		UITextInput *positionY;	
 		UITextInput *positionY;	
 		
 		
 		Vector2 lastData;
 		Vector2 lastData;
-		Vector2 currentData;		
+		Vector2 currentData;	
+		
+		ScreenLabel *labelX;
+		ScreenLabel *labelY;		
 };
 };
 
 
 class SliderProp : public PropProp {
 class SliderProp : public PropProp {
@@ -73,6 +81,7 @@ class SliderProp : public PropProp {
 		void set(Number number);
 		void set(Number number);
 		Number get();
 		Number get();
 		
 		
+		void setPropWidth(Number width);		
 		void setPropData(PolycodeEditorPropActionData* data);		
 		void setPropData(PolycodeEditorPropActionData* data);		
 				
 				
 		UIHSlider *slider;
 		UIHSlider *slider;
@@ -91,6 +100,8 @@ class NumberProp : public PropProp {
 		void set(Number number);
 		void set(Number number);
 		Number get();
 		Number get();
 		
 		
+		void setPropWidth(Number width);
+		
 		void setPropData(PolycodeEditorPropActionData* data);
 		void setPropData(PolycodeEditorPropActionData* data);
 				
 				
 		UITextInput *numberEntry;
 		UITextInput *numberEntry;
@@ -122,6 +133,8 @@ class StringProp : public PropProp {
 		void set(String str);
 		void set(String str);
 		String get();
 		String get();
 
 
+		void setPropWidth(Number width);
+
 		void setPropData(PolycodeEditorPropActionData* data);
 		void setPropData(PolycodeEditorPropActionData* data);
 				
 				
 		UITextInput *stringEntry;
 		UITextInput *stringEntry;
@@ -154,7 +167,9 @@ class ComboProp : public PropProp {
 		void handleEvent(Event *event);
 		void handleEvent(Event *event);
 		
 		
 		void setPropData(PolycodeEditorPropActionData* data);
 		void setPropData(PolycodeEditorPropActionData* data);
-			
+
+		void setPropWidth(Number width);
+
 		void set(unsigned int index);
 		void set(unsigned int index);
 		unsigned int get();
 		unsigned int get();
 				
 				

BIN
IDE/Contents/Resources/UIThemes/default/textfield.png


+ 37 - 11
IDE/Contents/Source/PolycodeProps.cpp

@@ -164,7 +164,7 @@ void PropList::updateSize() {
 void PropList::Resize(Number width, Number height) {
 void PropList::Resize(Number width, Number height) {
 	setWidth(width);
 	setWidth(width);
 	setHeight(height);
 	setHeight(height);
-	
+		
 	scrollContainer->Resize(width, height-30);
 	scrollContainer->Resize(width, height-30);
 	
 	
 	bg->setShapeSize(width, height);
 	bg->setShapeSize(width, height);
@@ -288,6 +288,7 @@ void PropSheet::Resize(Number width, Number height) {
 	
 	
 	for(int i=0; i < props.size(); i++) {
 	for(int i=0; i < props.size(); i++) {
 		props[i]->setPosition(0, yOffset);
 		props[i]->setPosition(0, yOffset);
+		props[i]->setPropWidth(width);
 		yOffset += props[i]->getHeight();
 		yOffset += props[i]->getHeight();
 	}
 	}
 }
 }
@@ -329,15 +330,15 @@ PropProp::~PropProp() {
 
 
 Vector2Prop::Vector2Prop(String caption) : PropProp(caption, "Vector2") {
 Vector2Prop::Vector2Prop(String caption) : PropProp(caption, "Vector2") {
 
 
-	ScreenLabel *label = new ScreenLabel("X:", 11);
-	label->color.a = 0.4;
-	propContents->addChild(label);
-	label->setPosition(-20, 6);	
+	labelX = new ScreenLabel("X:", 11);
+	labelX->color.a = 0.4;
+	propContents->addChild(labelX);
+	labelX->setPosition(-20, 6);	
 
 
-	label = new ScreenLabel("Y:", 11);
-	label->color.a = 0.4;
-	propContents->addChild(label);
-	label->setPosition(60, 6);	
+	labelY = new ScreenLabel("Y:", 11);
+	labelY->color.a = 0.4;
+	propContents->addChild(labelY);
+	labelY->setPosition(60, 6);	
 	
 	
 	positionX = NULL;
 	positionX = NULL;
 	positionY = NULL;
 	positionY = NULL;
@@ -360,6 +361,18 @@ Vector2Prop::Vector2Prop(String caption) : PropProp(caption, "Vector2") {
 
 
 }
 }
 
 
+void Vector2Prop::setPropWidth(Number width) {
+	labelX->setPosition(0, 6);
+	labelY->setPosition(((width-propContents->position.x-PROP_PADDING)/2.0), 6);	
+	
+	positionX->position.x = labelX->position.x + 20;
+	positionX->Resize(floor(((width-propContents->position.x-PROP_PADDING)/2.0)-25), positionX->getHeight());
+
+	positionY->position.x = labelY->position.x + 20;
+	positionY->Resize(floor(((width-propContents->position.x-PROP_PADDING)/2.0)-25), positionY->getHeight());
+
+}
+
 void Vector2Prop::handleEvent(Event *event) {
 void Vector2Prop::handleEvent(Event *event) {
 	if(event->getDispatcher() == positionX || event->getDispatcher() == positionY) {
 	if(event->getDispatcher() == positionX || event->getDispatcher() == positionY) {
 		if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CHANGE_EVENT) {
 		if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CHANGE_EVENT) {
@@ -462,7 +475,10 @@ StringProp::StringProp(String caption) : PropProp(caption, "String") {
 	propContents->addChild(stringEntry);
 	propContents->addChild(stringEntry);
 	stringEntry->setPosition(0, 0);
 	stringEntry->setPosition(0, 0);
 	setHeight(30);
 	setHeight(30);
+}
 
 
+void StringProp::setPropWidth(Number width) {
+	stringEntry->Resize(width - propContents->position.x - PROP_PADDING, stringEntry->getHeight());
 }
 }
 
 
 void StringProp::handleEvent(Event *event) {
 void StringProp::handleEvent(Event *event) {
@@ -508,10 +524,13 @@ SliderProp::SliderProp(String caption, Number min, Number max) : PropProp(captio
 	valueLabel = new ScreenLabel("0.0", 10);
 	valueLabel = new ScreenLabel("0.0", 10);
 	propContents->addChild(valueLabel);
 	propContents->addChild(valueLabel);
 	valueLabel->setPosition(120, 5);
 	valueLabel->setPosition(120, 5);
-	valueLabel->color.a = 0.5;
-	
+	valueLabel->color.a = 0.6;
 	setHeight(30);
 	setHeight(30);
+}
 
 
+void SliderProp::setPropWidth(Number width) {
+	slider->Resize(width - propContents->position.x - PROP_PADDING - 40, slider->getHeight());
+	valueLabel->setPosition(width - propContents->position.x - PROP_PADDING - 40, 5);	
 }
 }
 
 
 void SliderProp::handleEvent(Event *event) {
 void SliderProp::handleEvent(Event *event) {
@@ -566,6 +585,10 @@ NumberProp::NumberProp(String caption) : PropProp(caption, "Number") {
 
 
 }
 }
 
 
+void NumberProp::setPropWidth(Number width) {
+	numberEntry->Resize(width - propContents->position.x - PROP_PADDING, numberEntry->getHeight());
+}
+
 void NumberProp::setPropData(PolycodeEditorPropActionData* data) {
 void NumberProp::setPropData(PolycodeEditorPropActionData* data) {
 	set(data->numVal);
 	set(data->numVal);
 	dispatchEvent(new Event(), Event::CHANGE_EVENT);	
 	dispatchEvent(new Event(), Event::CHANGE_EVENT);	
@@ -653,7 +676,10 @@ ComboProp::ComboProp(String caption) : PropProp(caption, "Combo") {
 	propContents->addChild(comboEntry);
 	propContents->addChild(comboEntry);
 	comboEntry->setPosition(-3, 0);
 	comboEntry->setPosition(-3, 0);
 	setHeight(30);
 	setHeight(30);
+}
 
 
+void ComboProp::setPropWidth(Number width) {
+	comboEntry->Resize(width - propContents->position.x - PROP_PADDING, comboEntry->getHeight());
 }
 }
 
 
 void ComboProp::setPropData(PolycodeEditorPropActionData* data) {
 void ComboProp::setPropData(PolycodeEditorPropActionData* data) {

+ 1 - 1
IDE/Contents/Source/PolycodeScreenEditor.cpp

@@ -2526,7 +2526,7 @@ void PolycodeScreenEditorMain::handleDroppedFile(OSFileEntry file, Number x, Num
 
 
 PolycodeScreenEditor::PolycodeScreenEditor() : PolycodeEditor(true){
 PolycodeScreenEditor::PolycodeScreenEditor() : PolycodeEditor(true){
 
 
-	mainSizer = new UIHSizer(100,100,300,false);
+	mainSizer = new UIHSizer(100,100,340,false);
 	addChild(mainSizer);	
 	addChild(mainSizer);	
 
 
 	editorMain = new PolycodeScreenEditorMain(this);
 	editorMain = new PolycodeScreenEditorMain(this);

+ 5 - 1
Modules/Contents/UI/Include/PolyUIComboBox.h

@@ -60,6 +60,8 @@ namespace Polycode {
 			void setSelectedIndex(unsigned int newIndex);
 			void setSelectedIndex(unsigned int newIndex);
 			void handleEvent(Event *event);
 			void handleEvent(Event *event);
 			
 			
+			void Resize(Number width, Number height);
+			
 			unsigned int getNumItems();
 			unsigned int getNumItems();
 			UIComboBoxItem *getItemAtIndex(unsigned int index);
 			UIComboBoxItem *getItemAtIndex(unsigned int index);
 							
 							
@@ -75,7 +77,9 @@ namespace Polycode {
 			ScreenLabel *selectedLabel;
 			ScreenLabel *selectedLabel;
 			Number comboHeight;
 			Number comboHeight;
 			Number comboWidth;
 			Number comboWidth;
-			
+			Number dropDownX;
+			Number dropDownY;
+						
 			int selectedOffset;
 			int selectedOffset;
 						
 						
 			Number nextItemHeight;
 			Number nextItemHeight;

+ 4 - 0
Modules/Contents/UI/Include/PolyUIHSlider.h

@@ -40,6 +40,8 @@ namespace Polycode {
 			void handleEvent(Event *event);
 			void handleEvent(Event *event);
 			void Update();
 			void Update();
 			
 			
+			void Resize(Number width, Number height);
+			
 			void setSliderValue(Number val);
 			void setSliderValue(Number val);
 			Number getSliderValue();			
 			Number getSliderValue();			
 			
 			
@@ -49,6 +51,8 @@ namespace Polycode {
 			
 			
 			bool dragging;
 			bool dragging;
 			
 			
+			Number bgHeight;
+			
 			Number labelXPos;
 			Number labelXPos;
 			Number labelYPos;
 			Number labelYPos;
 			UIBox *bgRect;
 			UIBox *bgRect;

+ 12 - 2
Modules/Contents/UI/Source/PolyUIComboBox.cpp

@@ -58,8 +58,8 @@ UIComboBox::UIComboBox(UIGlobalMenu *globalMenu, Number comboWidth) : UIElement(
 	Number paddingX = conf->getNumericValue("Polycode", "uiComboBoxTextOffsetX");	
 	Number paddingX = conf->getNumericValue("Polycode", "uiComboBoxTextOffsetX");	
 	Number paddingY = conf->getNumericValue("Polycode", "uiComboBoxTextOffsetY");	
 	Number paddingY = conf->getNumericValue("Polycode", "uiComboBoxTextOffsetY");	
 
 
-	Number dropDownX = conf->getNumericValue("Polycode", "uiComboBoxDropX");
-	Number dropDownY = conf->getNumericValue("Polycode", "uiComboBoxDropY");
+	dropDownX = conf->getNumericValue("Polycode", "uiComboBoxDropX");
+	dropDownY = conf->getNumericValue("Polycode", "uiComboBoxDropY");
 		
 		
 	dropDownImage = new ScreenImage(dropDownImageFile);
 	dropDownImage = new ScreenImage(dropDownImageFile);
 	dropDownImage->setPosition(comboWidth - dropDownImage->getWidth() - dropDownX,dropDownY);
 	dropDownImage->setPosition(comboWidth - dropDownImage->getWidth() - dropDownX,dropDownY);
@@ -100,6 +100,16 @@ UIComboBox::UIComboBox(UIGlobalMenu *globalMenu, Number comboWidth) : UIElement(
 	this->height = comboHeight;
 	this->height = comboHeight;
 }
 }
 
 
+void UIComboBox::Resize(Number width, Number height) {
+	this->comboWidth = width;
+	bgBox->resizeBox(width, comboHeight);
+	this->width = width;
+	this->height = height;	
+	matrixDirty = true;	
+	setHitbox(width,height);
+	dropDownImage->setPosition(comboWidth - dropDownImage->getWidth() - dropDownX,dropDownY);	
+}
+
 UIComboBox::~UIComboBox() {
 UIComboBox::~UIComboBox() {
 	for(int c = 0; c < items.size(); c++)
 	for(int c = 0; c < items.size(); c++)
 		delete items[c];
 		delete items[c];

+ 12 - 1
Modules/Contents/UI/Source/PolyUIHSlider.cpp

@@ -33,7 +33,7 @@ UIHSlider::UIHSlider(Number start, Number end, Number width) : UIElement() {
 	
 	
 	String bgImage = conf->getStringValue("Polycode", "uiHSliderBg");
 	String bgImage = conf->getStringValue("Polycode", "uiHSliderBg");
 	String gripImage = conf->getStringValue("Polycode", "uiHSliderGrip");	
 	String gripImage = conf->getStringValue("Polycode", "uiHSliderGrip");	
-	Number bgHeight = conf->getNumericValue("Polycode", "uiHSliderBgHeight");
+	bgHeight = conf->getNumericValue("Polycode", "uiHSliderBgHeight");
 
 
 	Number st = conf->getNumericValue("Polycode", "uiHSliderBgT");
 	Number st = conf->getNumericValue("Polycode", "uiHSliderBgT");
 	Number sr = conf->getNumericValue("Polycode", "uiHSliderBgR");
 	Number sr = conf->getNumericValue("Polycode", "uiHSliderBgR");
@@ -97,6 +97,17 @@ void UIHSlider::setSliderValue(Number val) {
 Number UIHSlider::getSliderValue() {
 Number UIHSlider::getSliderValue() {
 	return sliderValue;
 	return sliderValue;
 }
 }
+
+void UIHSlider::Resize(Number width, Number height) {
+	bgRect->resizeBox(width, bgHeight);
+	this->width = width;
+	this->height = height;	
+	matrixDirty = true;	
+	setHitbox(width,height);
+	sliderWidth = width;
+	gripRect->setDragLimits(Rectangle(0,floor(bgHeight/2.0),width,0));	
+	setSliderValue(sliderValue);
+}
 			
 			
 void UIHSlider::handleEvent(Event *event) {
 void UIHSlider::handleEvent(Event *event) {
 
 

+ 6 - 2
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -487,6 +487,10 @@ void UITextInput::Resize(Number width, Number height) {
 	matrixDirty = true;	
 	matrixDirty = true;	
 	setHitbox(width,height);
 	setHitbox(width,height);
 	
 	
+	textContainer->setWidth(this->getWidth() - textContainer->getPosition2D().x - padding);
+	textContainer->setHeight(this->getHeight() - textContainer->getPosition2D().y);
+	textContainer->setPosition(padding + decoratorOffset, padding);		
+	
 	if(multiLine) {
 	if(multiLine) {
 		inputRect->setHitbox(width - scrollContainer->getVScrollWidth(), height);
 		inputRect->setHitbox(width - scrollContainer->getVScrollWidth(), height);
 		
 		
@@ -580,7 +584,7 @@ void UITextInput::renumberLines() {
 	textContainer->setPosition(decoratorOffset + padding, padding);
 	textContainer->setPosition(decoratorOffset + padding, padding);
 	textContainer->setWidth(this->getWidth() - textContainer->getPosition2D().x - padding);
 	textContainer->setWidth(this->getWidth() - textContainer->getPosition2D().x - padding);
 	textContainer->setHeight(this->getHeight() - textContainer->getPosition2D().y - padding);
 	textContainer->setHeight(this->getHeight() - textContainer->getPosition2D().y - padding);
-	textContainer->scissorBox.setRect(textContainer->getPosition2D().x, textContainer->getPosition2D().y, textContainer->getWidth(), textContainer->getHeight());
+	textContainer->scissorBox.setRect(textContainer->getPosition2D().x, textContainer->getPosition2D().y, textContainer->getWidth(), textContainer->getHeight()+padding);
 }
 }
 
 
 void UITextInput::restructLines() {
 void UITextInput::restructLines() {
@@ -1457,7 +1461,7 @@ void UITextInput::Update() {
 	}
 	}
 	linesToDelete.clear();
 	linesToDelete.clear();
 
 
-	textContainer->scissorBox.setRect(textContainer->getScreenPosition().x, textContainer->getScreenPosition().y, textContainer->getWidth(), textContainer->getHeight());
+	textContainer->scissorBox.setRect(textContainer->getScreenPosition().x, textContainer->getScreenPosition().y, textContainer->getWidth(), textContainer->getHeight() + padding);
 }
 }
 
 
 UITextInput::~UITextInput() {
 UITextInput::~UITextInput() {