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:
parent
983162bd54
commit
9c331ded69
@ -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
|
||||
------------
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 ;
|
||||
|
@ -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},
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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()) ;
|
||||
|
@ -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()) ;
|
||||
|
@ -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 )
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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) ;
|
||||
|
Loading…
Reference in New Issue
Block a user