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:
Julian Smart
1998-08-10 13:48:12 +00:00
parent 983162bd54
commit 9c331ded69
18 changed files with 219 additions and 170 deletions

View File

@@ -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();

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -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
{

View File

@@ -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) ;