Various Dialog Editor-related mods; Dlg Ed. getting usable now under MSW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -169,6 +169,9 @@ void wxResourceEditorDialogHandler::OnLeftClick(int x, int y, int keys)
|
||||
case RESED_CHOICE:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxChoice", x, y);
|
||||
break;
|
||||
case RESED_COMBOBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxComboBox", x, y);
|
||||
break;
|
||||
case RESED_CHECKBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxCheckBox", x, y);
|
||||
break;
|
||||
@@ -204,111 +207,6 @@ void wxResourceEditorDialogHandler::OnLeftClick(int x, int y, int keys)
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
void wxResourceEditorDialogHandler::OnLeftClick(int x, int y, int keys)
|
||||
{
|
||||
if (keys & wxKEY_CTRL)
|
||||
{
|
||||
wxResourceManager::GetCurrentResourceManager()->EditWindow(handlerDialog);
|
||||
return;
|
||||
}
|
||||
|
||||
// Deselect all items if click on panel
|
||||
if (resourceManager->GetEditorPalette()->currentlySelected == PALETTE_ARROW)
|
||||
{
|
||||
int needsRefresh = 0;
|
||||
wxNode *node = handlerDialog->GetChildren()->First();
|
||||
while (node)
|
||||
{
|
||||
wxControl *item = (wxControl *)node->Data();
|
||||
wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();
|
||||
if (item->IsKindOf(CLASSINFO(wxControl)) && childHandler->IsSelected())
|
||||
{
|
||||
needsRefresh ++;
|
||||
OnItemSelect(item, FALSE);
|
||||
childHandler->SelectItem(FALSE);
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
if (needsRefresh > 0)
|
||||
{
|
||||
wxClientDC dc(handlerDialog);
|
||||
dc.Clear();
|
||||
handlerDialog->Refresh();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
wxResourceManager* manager = resourceManager;
|
||||
|
||||
switch (resourceManager->GetEditorPalette()->currentlySelected)
|
||||
{
|
||||
case PALETTE_FRAME:
|
||||
break;
|
||||
case PALETTE_DIALOG_BOX:
|
||||
break;
|
||||
case PALETTE_PANEL:
|
||||
break;
|
||||
case PALETTE_CANVAS:
|
||||
break;
|
||||
case PALETTE_TEXT_WINDOW:
|
||||
break;
|
||||
case PALETTE_BUTTON:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxButton", x, y);
|
||||
break;
|
||||
case PALETTE_BITMAP_BUTTON:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxButton", x, y, TRUE);
|
||||
break;
|
||||
case PALETTE_MESSAGE:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticText", x, y);
|
||||
break;
|
||||
case PALETTE_BITMAP_MESSAGE:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticBitmap", x, y, TRUE);
|
||||
break;
|
||||
case PALETTE_TEXT:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxTextCtrl (single-line)", x, y);
|
||||
break;
|
||||
case PALETTE_MULTITEXT:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxTextCtrl (multi-line)", x, y);
|
||||
break;
|
||||
case PALETTE_CHOICE:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxChoice", x, y);
|
||||
break;
|
||||
case PALETTE_CHECKBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxCheckBox", x, y);
|
||||
break;
|
||||
case PALETTE_RADIOBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxRadioBox", x, y);
|
||||
break;
|
||||
case PALETTE_LISTBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxListBox", x, y);
|
||||
break;
|
||||
case PALETTE_SLIDER:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxSlider", x, y);
|
||||
break;
|
||||
case PALETTE_GAUGE:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxGauge", x, y);
|
||||
break;
|
||||
case PALETTE_GROUPBOX:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticBox", x, y);
|
||||
break;
|
||||
case PALETTE_SCROLLBAR:
|
||||
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxScrollBar", x, y);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Now switch pointer on.
|
||||
if (manager->GetEditorPalette()->currentlySelected != PALETTE_ARROW)
|
||||
{
|
||||
manager->GetEditorPalette()->ToggleTool(manager->GetEditorPalette()->currentlySelected, FALSE);
|
||||
manager->GetEditorPalette()->ToggleTool(PALETTE_ARROW, TRUE);
|
||||
manager->GetEditorPalette()->currentlySelected = PALETTE_ARROW;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void wxResourceEditorDialogHandler::OnRightClick(int x, int y, int keys)
|
||||
{
|
||||
wxMenu *menu = resourceManager->GetPopupMenu();
|
||||
|
@@ -993,17 +993,17 @@ bool wxResourceManager::CreatePanelItem(wxItemResource *panelResource, wxPanel *
|
||||
else if (itemType == "wxMessage" || itemType == "wxStaticText")
|
||||
{
|
||||
prefix = "ID_STATIC";
|
||||
MakeUniqueName("message", buf);
|
||||
MakeUniqueName("statictext", buf);
|
||||
res->SetName(buf);
|
||||
if (isBitmap)
|
||||
newItem = new wxStaticBitmap(panel, -1, m_bitmapImage, wxPoint(x, y), wxSize(0, 0), 0, buf);
|
||||
else
|
||||
newItem = new wxStaticText(panel, -1, "Message", wxPoint(x, y), wxSize(-1, -1), 0, buf);
|
||||
newItem = new wxStaticText(panel, -1, "Static", wxPoint(x, y), wxSize(-1, -1), 0, buf);
|
||||
}
|
||||
else if (itemType == "wxStaticBitmap")
|
||||
{
|
||||
prefix = "ID_STATICBITMAP";
|
||||
MakeUniqueName("message", buf);
|
||||
MakeUniqueName("static", buf);
|
||||
res->SetName(buf);
|
||||
newItem = new wxStaticBitmap(panel, -1, m_bitmapImage, wxPoint(x, y), wxSize(-1, -1), 0, buf);
|
||||
}
|
||||
@@ -1047,12 +1047,19 @@ bool wxResourceManager::CreatePanelItem(wxItemResource *panelResource, wxPanel *
|
||||
res->SetName(buf);
|
||||
newItem = new wxChoice(panel, -1, wxPoint(x, y), wxSize(-1, -1), 0, NULL, 0, wxDefaultValidator, buf);
|
||||
}
|
||||
else if (itemType == "wxComboBox")
|
||||
{
|
||||
prefix = "ID_COMBOBOX";
|
||||
MakeUniqueName("combobox", buf);
|
||||
res->SetName(buf);
|
||||
newItem = new wxComboBox(panel, -1, "", wxPoint(x, y), wxSize(-1, -1), 0, NULL, wxCB_DROPDOWN, wxDefaultValidator, buf);
|
||||
}
|
||||
else if (itemType == "wxGroupBox" || itemType == "wxStaticBox")
|
||||
{
|
||||
prefix = "ID_STATICBOX";
|
||||
MakeUniqueName("group", buf);
|
||||
MakeUniqueName("staticbox", buf);
|
||||
res->SetName(buf);
|
||||
newItem = new wxStaticBox(panel, -1, "Groupbox", wxPoint(x, y), wxSize(200, 200), 0, buf);
|
||||
newItem = new wxStaticBox(panel, -1, "Static", wxPoint(x, y), wxSize(200, 200), 0, buf);
|
||||
}
|
||||
else if (itemType == "wxGauge")
|
||||
{
|
||||
@@ -1702,8 +1709,12 @@ wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowP
|
||||
else
|
||||
{
|
||||
DisassociateResource(resource);
|
||||
if (win->GetEventHandler() != win)
|
||||
win->PopEventHandler(TRUE);
|
||||
|
||||
DeleteWindow(win);
|
||||
newWin = m_resourceTable.CreateItem((wxPanel *)parent, resource);
|
||||
newWin->PushEventHandler(new wxResourceEditorControlHandler((wxControl*) newWin, (wxControl*) newWin));
|
||||
AssociateResource(resource, newWin);
|
||||
UpdateResourceList();
|
||||
}
|
||||
@@ -1860,6 +1871,10 @@ wxWindowPropertyInfo *wxResourceManager::CreatePropertyInfoForWindow(wxWindow *w
|
||||
{
|
||||
info = new wxChoicePropertyInfo(win);
|
||||
}
|
||||
else if (win->IsKindOf(CLASSINFO(wxComboBox)))
|
||||
{
|
||||
info = new wxComboBoxPropertyInfo(win);
|
||||
}
|
||||
else if (win->IsKindOf(CLASSINFO(wxButton)))
|
||||
{
|
||||
info = new wxButtonPropertyInfo(win);
|
||||
|
@@ -214,7 +214,7 @@ bool wxResourceTableWithSaving::SaveResource(ostream& stream, wxItemResource *it
|
||||
else if (itemType == "wxStaticBox")
|
||||
{
|
||||
GenerateControlStyleString(itemType, item->GetStyle(), styleBuf);
|
||||
stream << item->GetId() << ", " << "wxGroupBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', ";
|
||||
stream << item->GetId() << ", " << "wxStaticBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', ";
|
||||
stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", ";
|
||||
stream << item->GetWidth() << ", " << item->GetHeight();
|
||||
if (item->GetFont())
|
||||
@@ -329,7 +329,7 @@ bool wxResourceTableWithSaving::SaveResource(ostream& stream, wxItemResource *it
|
||||
stream << item->GetWidth() << ", " << item->GetHeight();
|
||||
|
||||
if (itemType == "wxComboBox")
|
||||
stream << SafeWord(item->GetValue4()) << ", ";
|
||||
stream << ", " << SafeWord(item->GetValue4());
|
||||
|
||||
// Default list of values
|
||||
|
||||
@@ -509,6 +509,12 @@ bool wxResourceTableWithSaving::SaveResource(ostream& stream, wxItemResource *it
|
||||
}
|
||||
stream << ").\";\n\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
wxString str("Unimplemented resource type: ");
|
||||
str += itemType;
|
||||
wxMessageBox(str);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@@ -516,7 +516,7 @@ void wxWindowPropertyInfo::GetPropertyNames(wxStringList& names)
|
||||
// Fill in the wxItemResource members to mirror the current window settings
|
||||
bool wxWindowPropertyInfo::InstantiateResource(wxItemResource *resource)
|
||||
{
|
||||
resource->SetType(propertyWindow->GetClassInfo()->GetClassName());
|
||||
// resource->SetType(propertyWindow->GetClassInfo()->GetClassName());
|
||||
|
||||
// resource->SetStyle(propertyWindow->GetWindowStyleFlag());
|
||||
wxString str(propertyWindow->GetName());
|
||||
@@ -1085,6 +1085,125 @@ bool wxChoicePropertyInfo::InstantiateResource(wxItemResource *resource)
|
||||
return wxItemPropertyInfo::InstantiateResource(resource);
|
||||
}
|
||||
|
||||
/*
|
||||
* Choice item
|
||||
*/
|
||||
|
||||
wxProperty *wxComboBoxPropertyInfo::GetProperty(wxString& name)
|
||||
{
|
||||
wxComboBox *choice = (wxComboBox *)propertyWindow;
|
||||
if (name == "values")
|
||||
{
|
||||
wxStringList *stringList = new wxStringList;
|
||||
int i;
|
||||
for (i = 0; i < choice->Number(); i++)
|
||||
stringList->Add(choice->GetString(i));
|
||||
|
||||
return new wxProperty(name, stringList, "stringlist");
|
||||
}
|
||||
else if (name == "sort")
|
||||
{
|
||||
bool sort = ((propertyWindow->GetWindowStyleFlag() & wxCB_SORT) == wxCB_SORT);
|
||||
return new wxProperty(name, sort, "bool");
|
||||
}
|
||||
else if (name == "style")
|
||||
{
|
||||
wxString styleStr("dropdown");
|
||||
if (propertyWindow->GetWindowStyleFlag() & wxCB_SIMPLE)
|
||||
styleStr = "simple";
|
||||
else if (propertyWindow->GetWindowStyleFlag() & wxCB_READONLY)
|
||||
styleStr = "readonly";
|
||||
else
|
||||
styleStr = "dropdown";
|
||||
|
||||
return new wxProperty(name, styleStr, "string",
|
||||
new wxStringListValidator(new wxStringList("simple", "dropdown", "readonly",
|
||||
NULL)));
|
||||
}
|
||||
else
|
||||
return wxItemPropertyInfo::GetProperty(name);
|
||||
}
|
||||
|
||||
bool wxComboBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property)
|
||||
{
|
||||
wxComboBox *choice = (wxComboBox *)propertyWindow;
|
||||
if (name == "values")
|
||||
{
|
||||
choice->Clear();
|
||||
wxPropertyValue *expr = property->GetValue().GetFirst();
|
||||
while (expr)
|
||||
{
|
||||
char *s = expr->StringValue();
|
||||
if (s)
|
||||
choice->Append(s);
|
||||
expr = expr->GetNext();
|
||||
}
|
||||
if (choice->Number() > 0)
|
||||
choice->SetSelection(0);
|
||||
return TRUE;
|
||||
}
|
||||
else if (name == "sort")
|
||||
{
|
||||
SetWindowStyle(propertyWindow, wxCB_SORT, property->GetValue().BoolValue());
|
||||
|
||||
wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(propertyWindow);
|
||||
resource->SetStyle(propertyWindow->GetWindowStyleFlag());
|
||||
|
||||
wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(propertyWindow, this);
|
||||
return TRUE;
|
||||
}
|
||||
else if (name == "style")
|
||||
{
|
||||
SetWindowStyle(propertyWindow, wxCB_SIMPLE, FALSE);
|
||||
SetWindowStyle(propertyWindow, wxCB_DROPDOWN, FALSE);
|
||||
SetWindowStyle(propertyWindow, wxCB_READONLY, FALSE);
|
||||
|
||||
wxString styleStr(property->GetValue().StringValue());
|
||||
if (styleStr == "simple")
|
||||
SetWindowStyle(propertyWindow, wxCB_SIMPLE, TRUE);
|
||||
else if (styleStr == "dropdown")
|
||||
SetWindowStyle(propertyWindow, wxCB_DROPDOWN, TRUE);
|
||||
else if (styleStr == "readonly")
|
||||
SetWindowStyle(propertyWindow, wxCB_READONLY, TRUE);
|
||||
|
||||
// Necesary?
|
||||
wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(propertyWindow);
|
||||
resource->SetStyle(propertyWindow->GetWindowStyleFlag());
|
||||
|
||||
wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(propertyWindow, this);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return wxItemPropertyInfo::SetProperty(name, property);
|
||||
}
|
||||
|
||||
void wxComboBoxPropertyInfo::GetPropertyNames(wxStringList& names)
|
||||
{
|
||||
wxItemPropertyInfo::GetPropertyNames(names);
|
||||
names.Add("values");
|
||||
names.Add("style");
|
||||
names.Add("sort");
|
||||
}
|
||||
|
||||
bool wxComboBoxPropertyInfo::InstantiateResource(wxItemResource *resource)
|
||||
{
|
||||
wxComboBox *choice = (wxComboBox *)propertyWindow;
|
||||
int i;
|
||||
if (choice->Number() == 0)
|
||||
resource->SetStringValues(NULL);
|
||||
else
|
||||
{
|
||||
wxStringList *slist = new wxStringList;
|
||||
|
||||
for (i = 0; i < choice->Number(); i++)
|
||||
slist->Add(choice->GetString(i));
|
||||
|
||||
resource->SetStringValues(slist);
|
||||
}
|
||||
return wxItemPropertyInfo::InstantiateResource(resource);
|
||||
}
|
||||
|
||||
/*
|
||||
* Radiobox item
|
||||
*/
|
||||
@@ -1338,10 +1457,10 @@ wxProperty *wxSliderPropertyInfo::GetProperty(wxString& name)
|
||||
new wxStringListValidator(new wxStringList("wxHORIZONTAL", "wxVERTICAL",
|
||||
NULL)));
|
||||
}
|
||||
else if (name == "min_value")
|
||||
return new wxProperty("min_value", (long)slider->GetMin(), "integer");
|
||||
else if (name == "max_value")
|
||||
return new wxProperty("max_value", (long)slider->GetMax(), "integer");
|
||||
else if (name == "minValue")
|
||||
return new wxProperty("minValue", (long)slider->GetMin(), "integer");
|
||||
else if (name == "maxValue")
|
||||
return new wxProperty("maxValue", (long)slider->GetMax(), "integer");
|
||||
else
|
||||
return wxItemPropertyInfo::GetProperty(name);
|
||||
}
|
||||
@@ -1386,12 +1505,12 @@ bool wxSliderPropertyInfo::SetProperty(wxString& name, wxProperty *property)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else if (name == "min_value")
|
||||
else if (name == "minValue")
|
||||
{
|
||||
slider->SetRange((int)property->GetValue().IntegerValue(), slider->GetMax());
|
||||
return TRUE;
|
||||
}
|
||||
else if (name == "max_value")
|
||||
else if (name == "maxValue")
|
||||
{
|
||||
slider->SetRange(slider->GetMin(), (int)property->GetValue().IntegerValue());
|
||||
return TRUE;
|
||||
@@ -1405,8 +1524,8 @@ void wxSliderPropertyInfo::GetPropertyNames(wxStringList& names)
|
||||
wxItemPropertyInfo::GetPropertyNames(names);
|
||||
names.Add("value");
|
||||
names.Add("orientation");
|
||||
names.Add("min_value");
|
||||
names.Add("max_value");
|
||||
names.Add("minValue");
|
||||
names.Add("maxValue");
|
||||
}
|
||||
|
||||
bool wxSliderPropertyInfo::InstantiateResource(wxItemResource *resource)
|
||||
@@ -1427,8 +1546,8 @@ wxProperty *wxGaugePropertyInfo::GetProperty(wxString& name)
|
||||
wxGauge *gauge = (wxGauge *)propertyWindow;
|
||||
if (name == "value")
|
||||
return new wxProperty("value", (long)gauge->GetValue(), "integer");
|
||||
else if (name == "max_value")
|
||||
return new wxProperty("max_value", (long)gauge->GetRange(), "integer");
|
||||
else if (name == "maxValue")
|
||||
return new wxProperty("maxValue", (long)gauge->GetRange(), "integer");
|
||||
else
|
||||
return wxItemPropertyInfo::GetProperty(name);
|
||||
}
|
||||
@@ -1441,7 +1560,7 @@ bool wxGaugePropertyInfo::SetProperty(wxString& name, wxProperty *property)
|
||||
gauge->SetValue((int)property->GetValue().IntegerValue());
|
||||
return TRUE;
|
||||
}
|
||||
else if (name == "max_value")
|
||||
else if (name == "maxValue")
|
||||
{
|
||||
gauge->SetRange((int)property->GetValue().IntegerValue());
|
||||
return TRUE;
|
||||
@@ -1454,7 +1573,7 @@ void wxGaugePropertyInfo::GetPropertyNames(wxStringList& names)
|
||||
{
|
||||
wxItemPropertyInfo::GetPropertyNames(names);
|
||||
names.Add("value");
|
||||
names.Add("max_value");
|
||||
names.Add("maxValue");
|
||||
}
|
||||
|
||||
bool wxGaugePropertyInfo::InstantiateResource(wxItemResource *resource)
|
||||
|
@@ -214,6 +214,20 @@ class wxChoicePropertyInfo: public wxItemPropertyInfo
|
||||
bool InstantiateResource(wxItemResource *resource);
|
||||
};
|
||||
|
||||
// For choice items
|
||||
class wxComboBoxPropertyInfo: public wxChoicePropertyInfo
|
||||
{
|
||||
protected:
|
||||
public:
|
||||
wxComboBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
||||
wxChoicePropertyInfo(win, res) {}
|
||||
~wxComboBoxPropertyInfo(void) {}
|
||||
wxProperty *GetProperty(wxString& name);
|
||||
bool SetProperty(wxString& name, wxProperty *property);
|
||||
void GetPropertyNames(wxStringList& names);
|
||||
bool InstantiateResource(wxItemResource *resource);
|
||||
};
|
||||
|
||||
// For radiobox items
|
||||
class wxRadioBoxPropertyInfo: public wxItemPropertyInfo
|
||||
{
|
||||
|
@@ -248,10 +248,12 @@ static wxWindowStylePair g_WindowStylesWindow[] = {
|
||||
{ "wxSTATIC_BORDER", wxSTATIC_BORDER},
|
||||
{ "wxTRANSPARENT_WINDOW", wxTRANSPARENT_WINDOW},
|
||||
{ "wxNO_BORDER", wxNO_BORDER},
|
||||
{ "wxCLIP_CHILDREN", wxCLIP_CHILDREN},
|
||||
{ "wxRETAINED", wxRETAINED},
|
||||
{ "wxCLIP_CHILDREN", wxCLIP_CHILDREN}
|
||||
|
||||
/* Would be duplicated with e.g. wxLB_HSCROLL
|
||||
{ "wxVSCROLL", wxVSCROLL },
|
||||
{ "wxHSCROLL", wxHSCROLL }
|
||||
*/
|
||||
};
|
||||
|
||||
int g_WindowStylesWindowCount = sizeof(g_WindowStylesWindow)/sizeof(wxWindowStylePair) ;
|
||||
|
Reference in New Issue
Block a user