Explorar el Código

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 hace 12 años
padre
commit
337a5059f8

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

@@ -30,6 +30,7 @@
 
 using namespace Polycode;
 
+#define PROP_PADDING	40
 
 class PolycodeEditorPropActionData;
 
@@ -40,6 +41,8 @@ class PropProp : public UIElement {
 
 		virtual void setPropData(PolycodeEditorPropActionData* data) {}
 		
+		virtual void setPropWidth(Number width) {}
+		
 		String propType;
 		ScreenLabel *label;
 		ScreenEntity *propContents;				
@@ -57,12 +60,17 @@ class Vector2Prop : public PropProp {
 		Vector2 get();
 		
 		void setPropData(PolycodeEditorPropActionData* data);
+		
+		void setPropWidth(Number width);		
 				
 		UITextInput *positionX;
 		UITextInput *positionY;	
 		
 		Vector2 lastData;
-		Vector2 currentData;		
+		Vector2 currentData;	
+		
+		ScreenLabel *labelX;
+		ScreenLabel *labelY;		
 };
 
 class SliderProp : public PropProp {
@@ -73,6 +81,7 @@ class SliderProp : public PropProp {
 		void set(Number number);
 		Number get();
 		
+		void setPropWidth(Number width);		
 		void setPropData(PolycodeEditorPropActionData* data);		
 				
 		UIHSlider *slider;
@@ -91,6 +100,8 @@ class NumberProp : public PropProp {
 		void set(Number number);
 		Number get();
 		
+		void setPropWidth(Number width);
+		
 		void setPropData(PolycodeEditorPropActionData* data);
 				
 		UITextInput *numberEntry;
@@ -122,6 +133,8 @@ class StringProp : public PropProp {
 		void set(String str);
 		String get();
 
+		void setPropWidth(Number width);
+
 		void setPropData(PolycodeEditorPropActionData* data);
 				
 		UITextInput *stringEntry;
@@ -154,7 +167,9 @@ class ComboProp : public PropProp {
 		void handleEvent(Event *event);
 		
 		void setPropData(PolycodeEditorPropActionData* data);
-			
+
+		void setPropWidth(Number width);
+
 		void set(unsigned int index);
 		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) {
 	setWidth(width);
 	setHeight(height);
-	
+		
 	scrollContainer->Resize(width, height-30);
 	
 	bg->setShapeSize(width, height);
@@ -288,6 +288,7 @@ void PropSheet::Resize(Number width, Number height) {
 	
 	for(int i=0; i < props.size(); i++) {
 		props[i]->setPosition(0, yOffset);
+		props[i]->setPropWidth(width);
 		yOffset += props[i]->getHeight();
 	}
 }
@@ -329,15 +330,15 @@ PropProp::~PropProp() {
 
 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;
 	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) {
 	if(event->getDispatcher() == positionX || event->getDispatcher() == positionY) {
 		if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CHANGE_EVENT) {
@@ -462,7 +475,10 @@ StringProp::StringProp(String caption) : PropProp(caption, "String") {
 	propContents->addChild(stringEntry);
 	stringEntry->setPosition(0, 0);
 	setHeight(30);
+}
 
+void StringProp::setPropWidth(Number width) {
+	stringEntry->Resize(width - propContents->position.x - PROP_PADDING, stringEntry->getHeight());
 }
 
 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);
 	propContents->addChild(valueLabel);
 	valueLabel->setPosition(120, 5);
-	valueLabel->color.a = 0.5;
-	
+	valueLabel->color.a = 0.6;
 	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) {
@@ -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) {
 	set(data->numVal);
 	dispatchEvent(new Event(), Event::CHANGE_EVENT);	
@@ -653,7 +676,10 @@ ComboProp::ComboProp(String caption) : PropProp(caption, "Combo") {
 	propContents->addChild(comboEntry);
 	comboEntry->setPosition(-3, 0);
 	setHeight(30);
+}
 
+void ComboProp::setPropWidth(Number width) {
+	comboEntry->Resize(width - propContents->position.x - PROP_PADDING, comboEntry->getHeight());
 }
 
 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){
 
-	mainSizer = new UIHSizer(100,100,300,false);
+	mainSizer = new UIHSizer(100,100,340,false);
 	addChild(mainSizer);	
 
 	editorMain = new PolycodeScreenEditorMain(this);

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

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

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

@@ -40,6 +40,8 @@ namespace Polycode {
 			void handleEvent(Event *event);
 			void Update();
 			
+			void Resize(Number width, Number height);
+			
 			void setSliderValue(Number val);
 			Number getSliderValue();			
 			
@@ -49,6 +51,8 @@ namespace Polycode {
 			
 			bool dragging;
 			
+			Number bgHeight;
+			
 			Number labelXPos;
 			Number labelYPos;
 			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 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->setPosition(comboWidth - dropDownImage->getWidth() - dropDownX,dropDownY);
@@ -100,6 +100,16 @@ UIComboBox::UIComboBox(UIGlobalMenu *globalMenu, Number comboWidth) : UIElement(
 	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() {
 	for(int c = 0; c < items.size(); 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 gripImage = conf->getStringValue("Polycode", "uiHSliderGrip");	
-	Number bgHeight = conf->getNumericValue("Polycode", "uiHSliderBgHeight");
+	bgHeight = conf->getNumericValue("Polycode", "uiHSliderBgHeight");
 
 	Number st = conf->getNumericValue("Polycode", "uiHSliderBgT");
 	Number sr = conf->getNumericValue("Polycode", "uiHSliderBgR");
@@ -97,6 +97,17 @@ void UIHSlider::setSliderValue(Number val) {
 Number UIHSlider::getSliderValue() {
 	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) {
 

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

@@ -487,6 +487,10 @@ void UITextInput::Resize(Number width, Number height) {
 	matrixDirty = true;	
 	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) {
 		inputRect->setHitbox(width - scrollContainer->getVScrollWidth(), height);
 		
@@ -580,7 +584,7 @@ void UITextInput::renumberLines() {
 	textContainer->setPosition(decoratorOffset + padding, padding);
 	textContainer->setWidth(this->getWidth() - textContainer->getPosition2D().x - 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() {
@@ -1457,7 +1461,7 @@ void UITextInput::Update() {
 	}
 	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() {