Difference between revisions of "WxFormbuilder"
| Line 2: | Line 2: | ||
| =ToDo= | =ToDo= | ||
| − | *Tilføj "custom" property type - som bliver tilføjet alle objecter.   | + | *<strike>Tilføj "custom" property type - som bliver tilføjet alle objecter. </strike> | 
| =Fixed position= | =Fixed position= | ||
| Line 9: | Line 9: | ||
| Men fixed position er stadig lidt besværlig at arbejde med da man manuelt skal indtaste x og y værdierne i property editoren. | Men fixed position er stadig lidt besværlig at arbejde med da man manuelt skal indtaste x og y værdierne i property editoren. | ||
| (kan man ikke lave en IntPropertyEditor der bruger en wxSpinCtrl?) | (kan man ikke lave en IntPropertyEditor der bruger en wxSpinCtrl?) | ||
| + | |||
| + | =Custom properties= | ||
| + | <code> | ||
| + | |||
| + | Index: output/xml/custom.xml | ||
| + | =================================================================== | ||
| + | --- output/xml/custom.xml	(revision 0) | ||
| + | +++ output/xml/custom.xml	(revision 0) | ||
| + | @@ -0,0 +1,13 @@ | ||
| + | +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> | ||
| + | +<package name="custom" desc="Custom objects, expand this file to match your own needs"> | ||
| + | +	<objectinfo class="Descriptive" type="custom"> | ||
| + | +		<property name="description" type="text"/> | ||
| + | +		<property name="designer" type="text"/> | ||
| + | +		<property name="approval" type="text"/> | ||
| + | +	</objectinfo> | ||
| + | +	 | ||
| + | +	<objectinfo class="Workflow" type="custom"> | ||
| + | +		<property name="Design spec." type="text"/> | ||
| + | +		<property name="Spec. section" type="text"/> | ||
| + | +	</objectinfo> | ||
| + | +</package> | ||
| + | Index: output/xml/objtypes.xml | ||
| + | =================================================================== | ||
| + | --- output/xml/objtypes.xml	(revision 1207) | ||
| + | +++ output/xml/objtypes.xml	(working copy) | ||
| + | @@ -45,6 +45,8 @@ | ||
| + |    </objtype> | ||
| + | |||
| + |    <objtype name="interface" /> | ||
| + | +   | ||
| + | +  <objtype name="custom" /> | ||
| + | |||
| + |    <objtype name="form"> | ||
| + |      <childtype name="sizer" nmax="1" /> | ||
| + | Index: src/model/database.cpp | ||
| + | =================================================================== | ||
| + | --- src/model/database.cpp	(revision 1207) | ||
| + | +++ src/model/database.cpp	(working copy) | ||
| + | @@ -534,6 +534,8 @@ | ||
| + |  	LoadPackage( m_xmlPath + wxT("default.xml"), m_iconPath ); | ||
| + |  	LoadCodeGen( m_xmlPath + wxT("default.cppcode") ); | ||
| + | |||
| + | +	LoadPackage( m_xmlPath + wxT("custom.xml"), m_iconPath ); | ||
| + | + | ||
| + |  	// Map to temporarily hold plugins. | ||
| + |  	// Used to both set page order and to prevent two plugins with the same name. | ||
| + |  	typedef std::map< wxString, PObjectPackage > PackageMap; | ||
| + | @@ -741,6 +743,10 @@ | ||
| + |  				} | ||
| + |  			} | ||
| + | |||
| + | +			// Append Custom properties | ||
| + | +			if (HasCustomProperties(typeName)) | ||
| + | +				AppendCustomProperties(class_info); | ||
| + | + | ||
| + |  			elem_obj = elem_obj->NextSiblingElement( OBJINFO_TAG, false ); | ||
| + |  		} | ||
| + |  	} | ||
| + | @@ -750,6 +756,24 @@ | ||
| + |  	} | ||
| + |  } | ||
| + | |||
| + | + | ||
| + | +void ObjectDatabase::AppendCustomProperties(PObjectInfo class_info) | ||
| + | +{ | ||
| + | +	for (std::map< wxString, PObjectInfo >::iterator it = m_objs.begin(); it != m_objs.end(); it++) | ||
| + | +	{ | ||
| + | +		if ( (*it).second->GetObjectTypeName() == wxT("custom")) | ||
| + | +		{ | ||
| + | +			class_info->AddBaseClass( (*it).second ); | ||
| + | +		}  | ||
| + | +	} | ||
| + | +} | ||
| + | + | ||
| + | +bool ObjectDatabase::HasCustomProperties(wxString type) | ||
| + | +{ | ||
| + | +	return (HasCppProperties(type) || | ||
| + | +			type == wxT("form")); | ||
| + | +} | ||
| + | + | ||
| + |  bool ObjectDatabase::HasCppProperties(wxString type) | ||
| + |  { | ||
| + |  	return (type == wxT("notebook")			|| | ||
| + | Index: src/model/database.h | ||
| + | =================================================================== | ||
| + | --- src/model/database.h	(revision 1207) | ||
| + | +++ src/model/database.h	(working copy) | ||
| + | @@ -186,6 +186,9 @@ | ||
| + | |||
| + |    void SetDefaultLayoutProperties(PObjectBase obj); | ||
| + | |||
| + | +  bool HasCustomProperties(wxString type);  | ||
| + | +  void AppendCustomProperties(PObjectInfo class_info); | ||
| + | + | ||
| + |   public: | ||
| + |    ObjectDatabase(); | ||
| + |    ~ObjectDatabase(); | ||
| + | Index: src/rad/inspector/objinspect2.cpp | ||
| + | =================================================================== | ||
| + | --- src/rad/inspector/objinspect2.cpp	(revision 1207) | ||
| + | +++ src/rad/inspector/objinspect2.cpp	(working copy) | ||
| + | @@ -994,6 +994,8 @@ | ||
| + |  					m_pg->SetPropertyColour(id,wxColour(255,255,205)); // yellow | ||
| + |  				else if (name == wxT("sizeritem") || name == wxT("gbsizeritem") || name == wxT("sizeritembase") ) | ||
| + |  					m_pg->SetPropertyColour(id,wxColour(220,255,255)); // cyan | ||
| + | +				else if (obj_info->GetObjectTypeName() == wxT("custom")) | ||
| + | +					m_pg->SetPropertyColour(id,wxColour(0xEE,0x82,0xEE)); //violet | ||
| + |  			} | ||
| + | |||
| + |  			ExpandMap::iterator it = m_isExpanded.find( propName ); | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | </code> | ||
Revision as of 15:07, 26 August 2007
Noter omkring wxFormbuilder, for at få den til at opføre sig som vi har behov for i MSI / PC Tool gruppen
ToDo
- Tilføj "custom" property type - som bliver tilføjet alle objecter.
Fixed position
For at få editoren til at kunne arbejde med faste xy Koordinator skal man åbne objtypes.xml ogt tilføje linien <childtype name="widget"/> i form sektionen.
Men fixed position er stadig lidt besværlig at arbejde med da man manuelt skal indtaste x og y værdierne i property editoren. (kan man ikke lave en IntPropertyEditor der bruger en wxSpinCtrl?)
Custom properties
Index: output/xml/custom.xml
=======================================================
--- output/xml/custom.xml	(revision 0)
+++ output/xml/custom.xml	(revision 0)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<package name="custom" desc="Custom objects, expand this file to match your own needs">
+	<objectinfo class="Descriptive" type="custom">
+		<property name="description" type="text"/>
+		<property name="designer" type="text"/>
+		<property name="approval" type="text"/>
+	</objectinfo>
+	
+	<objectinfo class="Workflow" type="custom">
+		<property name="Design spec." type="text"/>
+		<property name="Spec. section" type="text"/>
+	</objectinfo>
+</package>
Index: output/xml/objtypes.xml
=======================================================
--- output/xml/objtypes.xml	(revision 1207)
+++ output/xml/objtypes.xml	(working copy)
@@ -45,6 +45,8 @@
  </objtype>
  <objtype name="interface" />
+  
+  <objtype name="custom" />
  <objtype name="form">
    <childtype name="sizer" nmax="1" />
Index: src/model/database.cpp
=======================================================
--- src/model/database.cpp	(revision 1207)
+++ src/model/database.cpp	(working copy)
@@ -534,6 +534,8 @@
	LoadPackage( m_xmlPath + wxT("default.xml"), m_iconPath );
	LoadCodeGen( m_xmlPath + wxT("default.cppcode") );
+	LoadPackage( m_xmlPath + wxT("custom.xml"), m_iconPath );
+
	// Map to temporarily hold plugins.
	// Used to both set page order and to prevent two plugins with the same name.
	typedef std::map< wxString, PObjectPackage > PackageMap;
@@ -741,6 +743,10 @@
				}
			}
+			// Append Custom properties
+			if (HasCustomProperties(typeName))
+				AppendCustomProperties(class_info);
+
			elem_obj = elem_obj->NextSiblingElement( OBJINFO_TAG, false );
		}
	}
@@ -750,6 +756,24 @@
	}
}
+
+void ObjectDatabase::AppendCustomProperties(PObjectInfo class_info)
+{
+	for (std::map< wxString, PObjectInfo >::iterator it = m_objs.begin(); it != m_objs.end(); it++)
+	{
+		if ( (*it).second->GetObjectTypeName() == wxT("custom"))
+		{
+			class_info->AddBaseClass( (*it).second );
+		} 
+	}
+}
+
+bool ObjectDatabase::HasCustomProperties(wxString type)
+{
+	return (HasCppProperties(type) ||
+			type == wxT("form"));
+}
+
bool ObjectDatabase::HasCppProperties(wxString type)
{
	return (type == wxT("notebook")			||
Index: src/model/database.h
=======================================================
--- src/model/database.h	(revision 1207)
+++ src/model/database.h	(working copy)
@@ -186,6 +186,9 @@
  void SetDefaultLayoutProperties(PObjectBase obj);
+  bool HasCustomProperties(wxString type); 
+  void AppendCustomProperties(PObjectInfo class_info);
+
 public:
  ObjectDatabase();
  ~ObjectDatabase();
Index: src/rad/inspector/objinspect2.cpp
=======================================================
--- src/rad/inspector/objinspect2.cpp	(revision 1207)
+++ src/rad/inspector/objinspect2.cpp	(working copy)
@@ -994,6 +994,8 @@
					m_pg->SetPropertyColour(id,wxColour(255,255,205)); // yellow
				else if (name == wxT("sizeritem") || name == wxT("gbsizeritem") || name == wxT("sizeritembase") )
					m_pg->SetPropertyColour(id,wxColour(220,255,255)); // cyan
+				else if (obj_info->GetObjectTypeName() == wxT("custom"))
+					m_pg->SetPropertyColour(id,wxColour(0xEE,0x82,0xEE)); //violet
			}
			ExpandMap::iterator it = m_isExpanded.find( propName );