diff --git a/docs/msw/todo.txt b/docs/msw/todo.txt index 7172ee5960..326531ddc8 100644 --- a/docs/msw/todo.txt +++ b/docs/msw/todo.txt @@ -86,6 +86,9 @@ Add a wxTabCtrl sample. Improve printing. More API functions for printer DCs (to get printer characteristics) and more reliable printing framework. +Add GetIcon, GetBitmap to wxImageList. Perhaps store bitmaps +in image list so we can get them later. + LOW PRIORITY ------------ diff --git a/include/wx/defs.h b/include/wx/defs.h index 019b901851..f5bfc86b80 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -395,21 +395,14 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); * Styles for wxListBox */ -// In wxListBox style flag -#define wxSB_MASK 0x0008 -#define wxNEEDED_SB 0x0000 -#define wxALWAYS_SB 0x0008 - -// New naming convention -#define wxLB_NEEDED_SB wxNEEDED_SB -#define wxLB_ALWAYS_SB wxALWAYS_SB #define wxLB_SORT 0x0010 -// These duplicate the styles in the Multiple argument -#define wxLB_SINGLE 0x0000 +#define wxLB_SINGLE 0x0020 #define wxLB_MULTIPLE 0x0040 #define wxLB_EXTENDED 0x0080 // wxLB_OWNERDRAW is Windows-only #define wxLB_OWNERDRAW 0x0100 +#define wxLB_NEEDED_SB 0x0200 +#define wxLB_ALWAYS_SB 0x0400 #define wxLB_HSCROLL wxHSCROLL /* @@ -422,10 +415,6 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); #define wxTE_READONLY 0x0010 #define wxTE_MULTILINE 0x0020 -// TODO For backward compatibility, need wxOLD_READONLY -#define wxREADONLY wxTE_READONLY -#define wxEDITABLE 0 - // MSW-only #define wxTE_RICHTEXT 0x0020 @@ -433,9 +422,9 @@ typedef void (*wxFunction) (wxObject&, wxEvent&); * wxComboBox style flags */ #define wxCB_SIMPLE 0x0004 -#define wxCB_DROPDOWN 0x0000 #define wxCB_SORT 0x0008 -#define wxCB_READONLY wxREADONLY +#define wxCB_READONLY 0x0010 +#define wxCB_DROPDOWN 0x0020 /* * wxRadioBox/wxRadioButton style flags diff --git a/include/wx/msw/radiobox.h b/include/wx/msw/radiobox.h index e0dde6b58b..ba988b1022 100644 --- a/include/wx/msw/radiobox.h +++ b/include/wx/msw/radiobox.h @@ -121,6 +121,8 @@ public: inline WXHWND *GetRadioButtons(void) const { return m_radioButtons; } bool ContainsHWND(WXHWND hWnd) const ; + long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); + protected: WXHWND * m_radioButtons; int m_majorDim ; diff --git a/src/common/resource.cpp b/src/common/resource.cpp index 8f1a448184..ab9cceda58 100644 --- a/src/common/resource.cpp +++ b/src/common/resource.cpp @@ -1790,8 +1790,6 @@ static wxResourceBitListStruct wxResourceBitListTable[] = { "wxLB_SINGLE", wxLB_SINGLE }, { "wxLB_MULTIPLE", wxLB_MULTIPLE }, { "wxLB_EXTENDED", wxLB_EXTENDED }, - { "wxNEEDED_SB", wxNEEDED_SB }, - { "wxALWAYS_SB", wxALWAYS_SB }, { "wxLB_NEEDED_SB", wxLB_NEEDED_SB }, { "wxLB_ALWAYS_SB", wxLB_ALWAYS_SB }, { "wxLB_SORT", wxLB_SORT }, @@ -1918,8 +1916,6 @@ static wxResourceBitListStruct wxResourceBitListTable[] = { "wxDEFAULT_DIALOG_STYLE", wxDEFAULT_DIALOG_STYLE}, { "wxBORDER", wxBORDER}, { "wxRETAINED", wxRETAINED}, - { "wxEDITABLE", wxEDITABLE}, - { "wxREADONLY", wxREADONLY}, { "wxNATIVE_IMPL", 0}, { "wxEXTENDED_IMPL", 0}, { "wxBACKINGSTORE", wxBACKINGSTORE}, diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp index 1c1b95c7c3..af8a1e72fe 100644 --- a/src/msw/bmpbuttn.cpp +++ b/src/msw/bmpbuttn.cpp @@ -82,9 +82,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit // Subclass again for purposes of dialog editing mode SubclassWin((WXHWND)wx_button); - // TODO? If in future we have a facility for having a label as well - // as a bitmap, set the font. -// SetFont(parent->GetFont()) ; + SetFont(* parent->GetFont()) ; SetSize(x, y, width, height); ShowWindow(wx_button, SW_SHOW); diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 2945076d06..61119e6b67 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -245,8 +245,8 @@ void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) } // If non-default width... - if (width >= 0) - control_width = (float)width; + if (w1 >= 0) + control_width = (float)w1; control_height = (float)h1; diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 22090f64c0..76c80cad36 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -74,9 +74,12 @@ void wxControl::SetLabel(const wxString& label) wxString wxControl::GetLabel(void) const { - wxBuffer[0] = 0; - if (GetHWND()) - GetWindowText((HWND)GetHWND(), wxBuffer, 1000); + wxBuffer[0] = 0; + if (GetHWND()) + { + int len = GetWindowText((HWND)GetHWND(), wxBuffer, 256); + wxBuffer[len] = 0; + } return wxString(wxBuffer); } diff --git a/src/msw/gauge95.cpp b/src/msw/gauge95.cpp index 285d0581c1..d0ddf67099 100644 --- a/src/msw/gauge95.cpp +++ b/src/msw/gauge95.cpp @@ -50,6 +50,7 @@ bool wxGauge95::Create(wxWindow *parent, wxWindowID id, if (parent) parent->AddChild(this); m_rangeMax = range; + m_gaugePos = 0; SetBackgroundColour(parent->GetDefaultBackgroundColour()) ; SetForegroundColour(parent->GetDefaultForegroundColour()) ; diff --git a/src/msw/gaugemsw.cpp b/src/msw/gaugemsw.cpp index 38f5192969..1df35a9e9c 100644 --- a/src/msw/gaugemsw.cpp +++ b/src/msw/gaugemsw.cpp @@ -85,6 +85,7 @@ bool wxGaugeMSW::Create(wxWindow *parent, wxWindowID id, if (parent) parent->AddChild(this); m_rangeMax = range; + m_gaugePos = 0; SetBackgroundColour(parent->GetDefaultBackgroundColour()) ; SetForegroundColour(parent->GetDefaultForegroundColour()) ; diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index 883951314d..2197868d25 100644 --- a/src/msw/slider95.cpp +++ b/src/msw/slider95.cpp @@ -154,6 +154,10 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, SubclassWin(GetHWND()); + SetWindowText((HWND) m_hWnd, ""); + + SetFont(* parent->GetFont()); + if ( m_windowStyle & wxSL_LABELS ) { // Finally, create max value static item @@ -163,7 +167,6 @@ bool wxSlider95::Create(wxWindow *parent, wxWindowID id, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), wxGetInstance(), NULL); - SetFont(parent->GetFont()); if (GetFont()) { @@ -418,6 +421,11 @@ void wxSlider95::SetSize(int x, int y, int width, int height, int sizeFlags) else { // No labels + // If we're prepared to use the existing size, then... + if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) + { + GetSize(&w1, &h1); + } if ( w1 < 0 ) w1 = 200; if ( h1 < 0 ) @@ -479,6 +487,11 @@ void wxSlider95::SetSize(int x, int y, int width, int height, int sizeFlags) else { // No labels + // If we're prepared to use the existing size, then... + if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) + { + GetSize(&w1, &h1); + } if ( w1 < 0 ) w1 = 20; if ( h1 < 0 ) diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index 943b95b7f5..5685792efe 100644 --- a/src/msw/statbmp.cpp +++ b/src/msw/statbmp.cpp @@ -77,6 +77,9 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, // Subclass again for purposes of dialog editing mode SubclassWin((WXHWND) static_item); + + SetFont(* GetParent()->GetFont()); + SetSize(x, y, width, height); return TRUE; } diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index b99a5a9bee..15bbd1c5f7 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -213,20 +213,6 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event) long wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - // TODO: somehow, this has to accept mouse clicks in user interface edit mode, - // but not otherwise. Only there is no longer a UI edit mode... - - // It worked before because the message could be processed if not in UI - // edit mode. We have to find some way of distinguishing this. - // Maybe this class can have an AcceptMouseEvents(bool) function; a sort of - // kludge... or, we can search for an active event table entry that will - // intercept mouse events, and if one exists (that isn't the default), - // skip the code below. Too time consuming though. - // Perhaps it's ok to do the default thing *anyway* because the title or edge - // of the window may still be active! -// if (nMsg == WM_NCHITTEST) -// return Default(); - if (nMsg == WM_NCHITTEST) { int xPos = LOWORD(lParam); // horizontal position of cursor diff --git a/utils/dialoged/src/dlghndlr.cpp b/utils/dialoged/src/dlghndlr.cpp index da08a1f589..ae7e576838 100644 --- a/utils/dialoged/src/dlghndlr.cpp +++ b/utils/dialoged/src/dlghndlr.cpp @@ -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(); diff --git a/utils/dialoged/src/reseditr.cpp b/utils/dialoged/src/reseditr.cpp index ab4ff91601..2c28ca0560 100644 --- a/utils/dialoged/src/reseditr.cpp +++ b/utils/dialoged/src/reseditr.cpp @@ -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); diff --git a/utils/dialoged/src/reswrite.cpp b/utils/dialoged/src/reswrite.cpp index 79084eb227..dec8278fa8 100644 --- a/utils/dialoged/src/reswrite.cpp +++ b/utils/dialoged/src/reswrite.cpp @@ -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; } diff --git a/utils/dialoged/src/winprop.cpp b/utils/dialoged/src/winprop.cpp index 12ae6b0df4..d8b34a18ac 100644 --- a/utils/dialoged/src/winprop.cpp +++ b/utils/dialoged/src/winprop.cpp @@ -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) diff --git a/utils/dialoged/src/winprop.h b/utils/dialoged/src/winprop.h index 1cca46cf7b..8b4032a8a0 100644 --- a/utils/dialoged/src/winprop.h +++ b/utils/dialoged/src/winprop.h @@ -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 { diff --git a/utils/dialoged/src/winstyle.cpp b/utils/dialoged/src/winstyle.cpp index de568dd4d1..efc4fad4a1 100644 --- a/utils/dialoged/src/winstyle.cpp +++ b/utils/dialoged/src/winstyle.cpp @@ -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) ;