bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString& name) { m_imageListNormal = NULL; m_imageListState = NULL; m_textCtrl = NULL; SetName(name); #if wxUSE_VALIDATORS SetValidator(validator); #endif SetParent(parent); m_windowStyle = style; m_windowId = (id == wxID_ANY) ? NewControlId() : id; if (parent) parent->AddChild(this); // TODO: create tree control return false; }
// Bitmap checkbox bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString& name) { SetName(name); #if wxUSE_VALIDATORS SetValidator(validator); #endif m_windowStyle = style; if (parent) parent->AddChild(this); if ( id == -1 ) m_windowId = NewControlId(); else m_windowId = id; // TODO: Create the bitmap checkbox return false; }
bool wxGaugeBase::Create(wxWindow *parent, wxWindowID id, int range, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; SetName(name); #if wxUSE_VALIDATORS SetValidator(validator); #endif // wxUSE_VALIDATORS SetRange(range); SetValue(0); #if wxGAUGE_EMULATE_INDETERMINATE_MODE m_nDirection = wxRIGHT; #endif return true; }
bool wxControl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { bool rval = wxWindow::Create(parent, id, pos, size, style, name); #if 0 // no automatic inheritance as we most often need transparent backgrounds if ( parent ) { m_backgroundColour = parent->GetBackgroundColour() ; m_foregroundColour = parent->GetForegroundColour() ; } #endif if (rval) { #if wxUSE_VALIDATORS SetValidator(validator); #endif } return rval; }
bool wxBitmapCheckBox::Create( wxWindow* pParent , wxWindowID vId , const wxBitmap* pLabel , const wxPoint& rPos , const wxSize& rSize , long lStyle , const wxValidator& rValidator , const wxString& rsName ) { SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); #endif if (pParent) pParent->AddChild(this); SetBackgroundColour(pParent->GetBackgroundColour()) ; SetForegroundColour(pParent->GetForegroundColour()) ; m_windowStyle = lStyle; if (vId == -1) m_windowId = NewControlId(); else m_windowId = vId; int nX = rPos.x; int nY = rPos.y; int nWidth = rSize.x; int nHeight = rSize.y; m_nCheckWidth = -1 ; m_nCheckHeight = -1 ; // long msStyle = CHECK_FLAGS; HWND hButton = 0; // TODO: Create the bitmap checkbox m_hWnd = (WXHWND)hButton; // // Subclass again for purposes of dialog editing mode // SubclassWin((WXHWND)hButton); SetSize( nX ,nY ,nWidth ,nHeight ); ::WinShowWindow(hButton, TRUE); return TRUE; } // end of wxBitmapCheckBox::Create
void SPIDevice::SetDefaults() { // Set device options set<string> valid_backends; valid_backends.insert(HARDWARE_BACKEND); valid_backends.insert(SOFTWARE_BACKEND); m_preferences->SetDefaultValue(SPIBackendKey(), SetValidator(valid_backends), SOFTWARE_BACKEND); m_preferences->SetDefaultValue(SPISpeedKey(), IntValidator(0, 32000000), "100000"); m_preferences->SetDefaultValue(SPICEKey(), BoolValidator(), "false"); m_preferences->SetDefaultValue(PortCountKey(), IntValidator(1, 8), "1"); m_preferences->SetDefaultValue(SyncPortKey(), IntValidator(-2, 8), "0"); }
bool wxControl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) { bool isCreated = wxWindow::Create(parent, id, pos, size, style, name); #if wxUSE_VALIDATORS SetValidator(validator); #endif return isCreated; }
bool DataModelListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator) { #if USE_DATALISTVIEW bool ok = base::Create(parent, id, pos, size, style); if (ok) SetValidator(validator); #else bool ok = base::Create(parent, id, pos, size, style, validator); if (ok) EnableAlternateRowColours(); #endif return ok; }
bool wxControl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString& name) { if ( !wxWindow::Create(parent, id, pos, size, style, name) ) return false; #if wxUSE_VALIDATORS SetValidator(validator); #endif return true; }
bool wxControlBase::Create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString &name) { bool ret = wxWindow::Create(parent, id, pos, size, style, name); #if wxUSE_VALIDATORS if ( ret ) SetValidator(validator); #endif // wxUSE_VALIDATORS return ret; }
bool wxSimpleHtmlListBox::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, const wxArrayString& choices, long style, const wxValidator& validator, const wxString& name) { if (!wxHtmlListBox::Create(parent, id, pos, size, style, name)) return false; #if wxUSE_VALIDATORS SetValidator(validator); #endif Append(choices); return true; }
bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, int n, const wxString *choices, int majorDim, long style, const wxValidator& wxVALIDATOR_PARAM(val), const wxString& name) { if ( !(style & (wxRA_SPECIFY_ROWS | wxRA_SPECIFY_COLS)) ) style |= wxRA_SPECIFY_COLS; if ( !wxStaticBox::Create(parent, id, title, pos, size, style, name) ) return false; #if wxUSE_VALIDATORS SetValidator(val); #endif // wxUSE_VALIDATORS Append(n, choices); // majorDim default value is 0 which means make one row/column SetMajorDim(majorDim == 0 ? n : majorDim, style); if ( size == wxDefaultSize ) { SetClientSize(DoGetBestClientSize()); } // Need to move the radiobox in order to move the radio buttons wxPoint actualPos = GetPosition(); wxSize actualSize = GetSize(); DoMoveWindow(actualPos.x, actualPos.y, actualSize.x, actualSize.y); // radiobox should already have selection so select at least one item SetSelection(0); return true; }
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { SetName(name); SetValidator(validator); m_imageListNormal = NULL; m_imageListState = NULL; m_textCtrl = NULL; m_windowStyle = style; SetParent(parent); m_windowId = (id == -1) ? NewControlId() : id; if (parent) parent->AddChild(this); // TODO create tree control return FALSE; }
// Bitmap checkbox bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { SetName(name); SetValidator(validator); m_windowStyle = style; if (parent) parent->AddChild(this); if ( id == -1 ) m_windowId = NewControlId(); else m_windowId = id; // TODO: Create the bitmap checkbox return FALSE; }
bool wxControl::Create( wxWindow* pParent, wxWindowID vId, const wxPoint& rPos, const wxSize& rSize, long lStyle, const wxValidator& rValidator, const wxString& rsName ) { bool bRval = wxWindow::Create( pParent ,vId ,rPos ,rSize ,lStyle ,rsName ); if (bRval) { #if wxUSE_VALIDATORS SetValidator(rValidator); #endif } return bRval; } // end of wxControl::Create
bool wxControl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { m_macControl = NULL ; m_macHorizontalBorder = 0 ; // additional pixels around the real control m_macVerticalBorder = 0 ; bool rval = wxWindow::Create(parent, id, pos, size, style, name); if ( parent ) { m_backgroundColour = parent->GetBackgroundColour() ; m_foregroundColour = parent->GetForegroundColour() ; } if (rval) { #if wxUSE_VALIDATORS SetValidator(validator); #endif } return rval; }
bool wxGaugeBase::Create(wxWindow *parent, wxWindowID id, int range, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; SetName(name); #if wxUSE_VALIDATORS SetValidator(validator); #endif // wxUSE_VALIDATORS m_appProgressIndicator = NULL; if ( (style & wxGA_PROGRESS) != 0 ) { wxWindow* topParent = wxGetTopLevelParent(this); if ( topParent != NULL ) { m_appProgressIndicator = new wxAppProgressIndicator(topParent, range); } } SetRange(range); SetValue(0); #if wxGAUGE_EMULATE_INDETERMINATE_MODE m_nDirection = wxRIGHT; #endif return true; }
TimeEdit::TimeEdit(wxWindow* parent, wxWindowID id, agi::Context *c, const std::string& value, const wxSize& size, bool asEnd) : wxTextCtrl(parent, id, to_wx(value), wxDefaultPosition, size, wxTE_CENTRE | wxTE_PROCESS_ENTER) , c(c) , isEnd(asEnd) , insert(!OPT_GET("Subtitle/Time Edit/Insert Mode")->GetBool()) , insert_opt(OPT_SUB("Subtitle/Time Edit/Insert Mode", &TimeEdit::OnInsertChanged, this)) { // Set validator wxTextValidator val(wxFILTER_INCLUDE_CHAR_LIST); wxString includes[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ":", ","}; val.SetIncludes(wxArrayString(countof(includes), includes)); SetValidator(val); // Other stuff if (value.empty()) SetValue(to_wx(time.GetAssFormated())); Bind(wxEVT_MENU, std::bind(&TimeEdit::CopyTime, this), Time_Edit_Copy); Bind(wxEVT_MENU, std::bind(&TimeEdit::PasteTime, this), Time_Edit_Paste); Bind(wxEVT_TEXT, &TimeEdit::OnModified, this); Bind(wxEVT_CONTEXT_MENU, &TimeEdit::OnContextMenu, this); Bind(wxEVT_CHAR_HOOK, &TimeEdit::OnKeyDown, this); Bind(wxEVT_CHAR, &TimeEdit::OnChar, this); Bind(wxEVT_KILL_FOCUS, &TimeEdit::OnFocusLost, this); }
TimeEdit::TimeEdit(wxWindow* parent, wxWindowID id, agi::Context *c, const wxString& value, const wxSize& size, bool asEnd) : wxTextCtrl(parent, id, value, wxDefaultPosition, size, wxTE_CENTRE | wxTE_PROCESS_ENTER) , c(c) , byFrame(false) , isEnd(asEnd) , insert(!OPT_GET("Subtitle/Time Edit/Insert Mode")->GetBool()) , insert_opt(OPT_SUB("Subtitle/Time Edit/Insert Mode", &TimeEdit::OnInsertChanged, this)) { // Set validator wxTextValidator val(wxFILTER_INCLUDE_CHAR_LIST); wxArrayString includes; includes.Add("0"); includes.Add("1"); includes.Add("2"); includes.Add("3"); includes.Add("4"); includes.Add("5"); includes.Add("6"); includes.Add("7"); includes.Add("8"); includes.Add("9"); includes.Add("."); includes.Add(":"); val.SetIncludes(includes); SetValidator(val); // Other stuff if (!value) SetValue(time.GetASSFormated()); Bind(wxEVT_COMMAND_MENU_SELECTED, std::tr1::bind(&TimeEdit::CopyTime, this), Time_Edit_Copy); Bind(wxEVT_COMMAND_MENU_SELECTED, std::tr1::bind(&TimeEdit::PasteTime, this), Time_Edit_Paste); Bind(wxEVT_COMMAND_TEXT_UPDATED, &TimeEdit::OnModified, this); Bind(wxEVT_CONTEXT_MENU, &TimeEdit::OnContextMenu, this); Bind(wxEVT_KEY_DOWN, &TimeEdit::OnKeyDown, this); Bind(wxEVT_KILL_FOCUS, &TimeEdit::OnFocusLost, this); }
bool wxGauge::Create( wxWindowOS2* pParent, wxWindowID vId, int nRange, const wxPoint& rPos, const wxSize& rSize, long lStyle, const wxValidator& rValidator, const wxString& rsName ) { int nX = rPos.x; int nY = rPos.y; int nWidth = rSize.x; int nHeight = rSize.y; long lMsStyle = 0L; SWP vSwp; SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); #endif if (pParent) pParent->AddChild(this); m_backgroundColour.Set(wxString(wxT("LIGHT GREY"))); m_foregroundColour.Set(wxString(wxT("NAVY"))); m_nRangeMax = nRange; m_nGaugePos = 0; m_windowStyle = lStyle; if (vId == wxID_ANY) m_windowId = (int)NewControlId(); else m_windowId = vId; if (m_windowStyle & wxCLIP_SIBLINGS ) lMsStyle |= WS_CLIPSIBLINGS; // // OS/2 will use an edit control for this, since there is not a native gauge // Other choices include using an armless slider but they are more difficult // to control and manipulate // lMsStyle = WS_VISIBLE | ES_MARGIN | ES_LEFT | ES_READONLY; if (m_windowStyle & wxCLIP_SIBLINGS) lMsStyle |= WS_CLIPSIBLINGS; m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle ,WC_ENTRYFIELD // Window class ,(PSZ)NULL // Initial Text ,(ULONG)lMsStyle // Style flags ,0L, 0L, 0L, 0L // Origin -- 0 size ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent ,HWND_TOP // initial z position ,(HMENU)m_windowId // Window identifier ,NULL // Slider control data ,NULL // no Presentation parameters ); wxAssociateWinWithHandle( m_hWnd ,(wxWindowOS2*)this ); ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this); fnWndProcGauge = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxGaugeWndProc); ::WinQueryWindowPos(m_hWnd, &vSwp); SetXComp(vSwp.x); SetYComp(vSwp.y); wxFont* pTextFont = new wxFont( 10 ,wxMODERN ,wxNORMAL ,wxNORMAL ); SetFont(*pTextFont); if (nWidth == -1L) nWidth = 50L; if (nHeight == -1L) nHeight = 28L; SetSize( nX ,nY ,nWidth ,nHeight ); m_nWidth = nWidth; // Save for GetBestSize m_nHeight = nHeight; ::WinShowWindow((HWND)GetHWND(), TRUE); delete pTextFont; return true; } // end of wxGauge::Create
DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Context *c, AssStyleStorage *store, std::string const& new_name, wxArrayString const& font_list) : wxDialog (parent, -1, _("Style Editor"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) , c(c) , style(style) , store(store) { if (new_name.size()) { is_new = true; style = this->style = new AssStyle(*style); style->name = new_name; } else if (!style) { is_new = true; style = this->style = new AssStyle; } work = agi::make_unique<AssStyle>(*style); SetIcon(GETICON(style_toolbutton_16)); auto add_with_label = [&](wxSizer *sizer, wxString const& label, wxWindow *ctrl) { sizer->Add(new wxStaticText(this, -1, label), wxSizerFlags().Center().Right().Border(wxLEFT | wxRIGHT)); sizer->Add(ctrl, wxSizerFlags(1).Left().Expand()); }; auto spin_ctrl = [&](float value, int max_value) { return new wxSpinCtrl(this, -1, wxString::Format("%g", value), wxDefaultPosition, wxSize(60, -1), wxSP_ARROW_KEYS, 0, max_value, value); }; auto num_text_ctrl = [&](double *value, double min, double max, double step) -> wxSpinCtrlDouble * { auto scd = new wxSpinCtrlDouble(this, -1, "", wxDefaultPosition, wxSize(75, -1), wxSP_ARROW_KEYS, min, max, *value, step); scd->SetValidator(DoubleSpinValidator(value)); scd->Bind(wxEVT_SPINCTRLDOUBLE, [=](wxSpinDoubleEvent &evt) { evt.Skip(); if (updating) return; bool old = updating; updating = true; scd->GetValidator()->TransferFromWindow(); updating = old; SubsPreview->SetStyle(*work); }); return scd; }; // Prepare control values wxString EncodingValue = std::to_wstring(style->encoding); wxString alignValues[9] = { "7", "8", "9", "4", "5", "6", "1", "2", "3" }; // Encoding options wxArrayString encodingStrings; AssStyle::GetEncodings(encodingStrings); // Create sizers wxSizer *NameSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Style Name")); wxSizer *FontSizer = new wxStaticBoxSizer(wxVERTICAL, this, _("Font")); wxSizer *ColorsSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Colors")); wxSizer *MarginSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Margins")); wxSizer *OutlineBox = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Outline")); wxSizer *MiscBox = new wxStaticBoxSizer(wxVERTICAL, this, _("Miscellaneous")); wxSizer *PreviewBox = new wxStaticBoxSizer(wxVERTICAL, this, _("Preview")); // Create controls StyleName = new wxTextCtrl(this, -1, to_wx(style->name)); FontName = new wxComboBox(this, -1, to_wx(style->font), wxDefaultPosition, wxSize(150, -1), 0, nullptr, wxCB_DROPDOWN); auto FontSize = num_text_ctrl(&work->fontsize, 0, 10000.0, 1.0); BoxBold = new wxCheckBox(this, -1, _("&Bold")); BoxItalic = new wxCheckBox(this, -1, _("&Italic")); BoxUnderline = new wxCheckBox(this, -1, _("&Underline")); BoxStrikeout = new wxCheckBox(this, -1, _("&Strikeout")); ColourButton *colorButton[] = { new ColourButton(this, wxSize(55, 16), true, style->primary, ColorValidator(&work->primary)), new ColourButton(this, wxSize(55, 16), true, style->secondary, ColorValidator(&work->secondary)), new ColourButton(this, wxSize(55, 16), true, style->outline, ColorValidator(&work->outline)), new ColourButton(this, wxSize(55, 16), true, style->shadow, ColorValidator(&work->shadow)) }; for (int i = 0; i < 3; i++) margin[i] = spin_ctrl(style->Margin[i], 9999); Alignment = new wxRadioBox(this, -1, _("Alignment"), wxDefaultPosition, wxDefaultSize, 9, alignValues, 3, wxRA_SPECIFY_COLS); auto Outline = num_text_ctrl(&work->outline_w, 0.0, 1000.0, 0.1); auto Shadow = num_text_ctrl(&work->shadow_w, 0.0, 1000.0, 0.1); OutlineType = new wxCheckBox(this, -1, _("&Opaque box")); auto ScaleX = num_text_ctrl(&work->scalex, 0.0, 10000.0, 1.0); auto ScaleY = num_text_ctrl(&work->scaley, 0.0, 10000.0, 1.0); auto Angle = num_text_ctrl(&work->angle, -180.0, 180.0, 1.0); auto Spacing = num_text_ctrl(&work->spacing, 0.0, 1000.0, 0.1); Encoding = new wxComboBox(this, -1, "", wxDefaultPosition, wxDefaultSize, encodingStrings, wxCB_READONLY); // Set control tooltips StyleName->SetToolTip(_("Style name")); FontName->SetToolTip(_("Font face")); FontSize->SetToolTip(_("Font size")); colorButton[0]->SetToolTip(_("Choose primary color")); colorButton[1]->SetToolTip(_("Choose secondary color")); colorButton[2]->SetToolTip(_("Choose outline color")); colorButton[3]->SetToolTip(_("Choose shadow color")); margin[0]->SetToolTip(_("Distance from left edge, in pixels")); margin[1]->SetToolTip(_("Distance from right edge, in pixels")); margin[2]->SetToolTip(_("Distance from top/bottom edge, in pixels")); OutlineType->SetToolTip(_("When selected, display an opaque box behind the subtitles instead of an outline around the text")); Outline->SetToolTip(_("Outline width, in pixels")); Shadow->SetToolTip(_("Shadow distance, in pixels")); ScaleX->SetToolTip(_("Scale X, in percentage")); ScaleY->SetToolTip(_("Scale Y, in percentage")); Angle->SetToolTip(_("Angle to rotate in Z axis, in degrees")); Encoding->SetToolTip(_("Encoding, only useful in unicode if the font doesn't have the proper unicode mapping")); Spacing->SetToolTip(_("Character spacing, in pixels")); Alignment->SetToolTip(_("Alignment in screen, in numpad style")); // Set up controls BoxBold->SetValue(style->bold); BoxItalic->SetValue(style->italic); BoxUnderline->SetValue(style->underline); BoxStrikeout->SetValue(style->strikeout); OutlineType->SetValue(style->borderstyle == 3); Alignment->SetSelection(AlignToControl(style->alignment)); // Fill font face list box FontName->Freeze(); FontName->Append(font_list); FontName->SetValue(to_wx(style->font)); FontName->Thaw(); // Set encoding value bool found = false; for (size_t i=0;i<encodingStrings.Count();i++) { if (encodingStrings[i].StartsWith(EncodingValue)) { Encoding->Select(i); found = true; break; } } if (!found) Encoding->Select(0); // Style name sizer NameSizer->Add(StyleName, 1, wxALL, 0); // Font sizer wxSizer *FontSizerTop = new wxBoxSizer(wxHORIZONTAL); wxSizer *FontSizerBottom = new wxBoxSizer(wxHORIZONTAL); FontSizerTop->Add(FontName, 1, wxALL, 0); FontSizerTop->Add(FontSize, 0, wxLEFT, 5); FontSizerBottom->AddStretchSpacer(1); FontSizerBottom->Add(BoxBold, 0, 0, 0); FontSizerBottom->Add(BoxItalic, 0, wxLEFT, 5); FontSizerBottom->Add(BoxUnderline, 0, wxLEFT, 5); FontSizerBottom->Add(BoxStrikeout, 0, wxLEFT, 5); FontSizerBottom->AddStretchSpacer(1); FontSizer->Add(FontSizerTop, 1, wxALL | wxEXPAND, 0); FontSizer->Add(FontSizerBottom, 1, wxTOP | wxEXPAND, 5); // Colors sizer wxString colorLabels[] = { _("Primary"), _("Secondary"), _("Outline"), _("Shadow") }; ColorsSizer->AddStretchSpacer(1); for (int i = 0; i < 4; ++i) { auto sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(new wxStaticText(this, -1, colorLabels[i]), 0, wxBOTTOM | wxALIGN_CENTER, 5); sizer->Add(colorButton[i], 0, wxBOTTOM | wxALIGN_CENTER, 5); ColorsSizer->Add(sizer, 0, wxLEFT, i?5:0); } ColorsSizer->AddStretchSpacer(1); // Margins wxString marginLabels[] = { _("Left"), _("Right"), _("Vert") }; MarginSizer->AddStretchSpacer(1); for (int i=0;i<3;i++) { auto sizer = new wxBoxSizer(wxVERTICAL); sizer->AddStretchSpacer(1); sizer->Add(new wxStaticText(this, -1, marginLabels[i]), 0, wxCENTER, 0); sizer->Add(margin[i], 0, wxTOP | wxCENTER, 5); sizer->AddStretchSpacer(1); MarginSizer->Add(sizer, 0, wxEXPAND | wxLEFT, i?5:0); } MarginSizer->AddStretchSpacer(1); // Margins+Alignment wxSizer *MarginAlign = new wxBoxSizer(wxHORIZONTAL); MarginAlign->Add(MarginSizer, 1, wxLEFT | wxEXPAND, 0); MarginAlign->Add(Alignment, 0, wxLEFT | wxEXPAND, 5); // Outline add_with_label(OutlineBox, _("Outline:"), Outline); add_with_label(OutlineBox, _("Shadow:"), Shadow); OutlineBox->Add(OutlineType, 0, wxLEFT | wxALIGN_CENTER, 5); // Misc auto MiscBoxTop = new wxFlexGridSizer(2, 4, 5, 5); add_with_label(MiscBoxTop, _("Scale X%:"), ScaleX); add_with_label(MiscBoxTop, _("Scale Y%:"), ScaleY); add_with_label(MiscBoxTop, _("Rotation:"), Angle); add_with_label(MiscBoxTop, _("Spacing:"), Spacing); wxSizer *MiscBoxBottom = new wxBoxSizer(wxHORIZONTAL); add_with_label(MiscBoxBottom, _("Encoding:"), Encoding); MiscBox->Add(MiscBoxTop, wxSizerFlags().Expand().Center()); MiscBox->Add(MiscBoxBottom, wxSizerFlags().Expand().Center().Border(wxTOP)); // Preview auto previewButton = new ColourButton(this, wxSize(45, 16), false, OPT_GET("Colour/Style Editor/Background/Preview")->GetColor()); PreviewText = new wxTextCtrl(this, -1, to_wx(OPT_GET("Tool/Style Editor/Preview Text")->GetString())); SubsPreview = new SubtitlesPreview(this, wxSize(100, 60), wxSUNKEN_BORDER, OPT_GET("Colour/Style Editor/Background/Preview")->GetColor()); SubsPreview->SetToolTip(_("Preview of current style")); SubsPreview->SetStyle(*style); SubsPreview->SetText(from_wx(PreviewText->GetValue())); PreviewText->SetToolTip(_("Text to be used for the preview")); previewButton->SetToolTip(_("Color of preview background")); wxSizer *PreviewBottomSizer = new wxBoxSizer(wxHORIZONTAL); PreviewBottomSizer->Add(PreviewText, 1, wxEXPAND | wxRIGHT, 5); PreviewBottomSizer->Add(previewButton, 0, wxEXPAND, 0); PreviewBox->Add(SubsPreview, 1, wxEXPAND | wxBOTTOM, 5); PreviewBox->Add(PreviewBottomSizer, 0, wxEXPAND | wxBOTTOM, 0); // Buttons auto ButtonSizer = CreateStdDialogButtonSizer(wxOK | wxCANCEL | wxAPPLY | wxHELP); // Left side sizer wxSizer *LeftSizer = new wxBoxSizer(wxVERTICAL); LeftSizer->Add(NameSizer, 0, wxBOTTOM | wxEXPAND, 5); LeftSizer->Add(FontSizer, 0, wxBOTTOM | wxEXPAND, 5); LeftSizer->Add(ColorsSizer, 0, wxBOTTOM | wxEXPAND, 5); LeftSizer->Add(MarginAlign, 0, wxBOTTOM | wxEXPAND, 0); // Right side sizer wxSizer *RightSizer = new wxBoxSizer(wxVERTICAL); RightSizer->Add(OutlineBox, wxSizerFlags().Expand().Border(wxBOTTOM)); RightSizer->Add(MiscBox, wxSizerFlags().Expand().Border(wxBOTTOM)); RightSizer->Add(PreviewBox, wxSizerFlags(1).Expand()); // Controls Sizer wxSizer *ControlSizer = new wxBoxSizer(wxHORIZONTAL); ControlSizer->Add(LeftSizer, 0, wxEXPAND, 0); ControlSizer->Add(RightSizer, 1, wxLEFT | wxEXPAND, 5); // General Layout wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL); MainSizer->Add(ControlSizer, 1, wxALL | wxALIGN_CENTER | wxEXPAND, 5); MainSizer->Add(ButtonSizer, 0, wxBOTTOM | wxEXPAND, 5); SetSizerAndFit(MainSizer); // Force the style name text field to scroll based on its final size, rather // than its initial size StyleName->SetInsertionPoint(0); StyleName->SetInsertionPoint(-1); persist = agi::make_unique<PersistLocation>(this, "Tool/Style Editor", true); Bind(wxEVT_CHILD_FOCUS, &DialogStyleEditor::OnChildFocus, this); Bind(wxEVT_CHECKBOX, &DialogStyleEditor::OnCommandPreviewUpdate, this); Bind(wxEVT_COMBOBOX, &DialogStyleEditor::OnCommandPreviewUpdate, this); Bind(wxEVT_SPINCTRL, &DialogStyleEditor::OnCommandPreviewUpdate, this); previewButton->Bind(EVT_COLOR, &DialogStyleEditor::OnPreviewColourChange, this); FontName->Bind(wxEVT_TEXT_ENTER, &DialogStyleEditor::OnCommandPreviewUpdate, this); PreviewText->Bind(wxEVT_TEXT, &DialogStyleEditor::OnPreviewTextChange, this); Bind(wxEVT_BUTTON, std::bind(&DialogStyleEditor::Apply, this, true, true), wxID_OK); Bind(wxEVT_BUTTON, std::bind(&DialogStyleEditor::Apply, this, true, false), wxID_APPLY); Bind(wxEVT_BUTTON, std::bind(&DialogStyleEditor::Apply, this, false, true), wxID_CANCEL); Bind(wxEVT_BUTTON, std::bind(&HelpButton::OpenPage, "Style Editor"), wxID_HELP); for (auto const& elem : colorButton) elem->Bind(EVT_COLOR, &DialogStyleEditor::OnSetColor, this); }
bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], int majorDim, long style, const wxValidator& val, const wxString& name) { // initialize members m_majorDim = majorDim == 0 ? n : majorDim; // common initialization if ( !wxStaticBox::Create(parent, id, title, pos, size, style, name) ) return false; #if wxUSE_VALIDATORS SetValidator(val); #else wxUnusedVar(val); #endif // wxUSE_VALIDATORS/!wxUSE_VALIDATORS m_radioButtons = new wxSubwindows(n); m_radioWidth = new int[n]; m_radioHeight = new int[n]; for ( int i = 0; i < n; i++ ) { m_radioWidth[i] = m_radioHeight[i] = wxDefaultCoord; long styleBtn = BS_AUTORADIOBUTTON | WS_TABSTOP | WS_CHILD | WS_VISIBLE; if ( i == 0 ) styleBtn |= WS_GROUP; long newId = NewControlId(); HWND hwndBtn = ::CreateWindow(_T("BUTTON"), choices[i], styleBtn, 0, 0, 0, 0, // will be set in SetSize() GetHwnd(), (HMENU)newId, wxGetInstance(), NULL); if ( !hwndBtn ) { wxLogLastError(wxT("CreateWindow(radio btn)")); return false; } (*m_radioButtons)[i] = hwndBtn; SubclassRadioButton((WXHWND)hwndBtn); m_subControls.Add(newId); } // Create a dummy radio control to end the group. (void)::CreateWindow(_T("BUTTON"), wxEmptyString, WS_GROUP | BS_AUTORADIOBUTTON | WS_CHILD, 0, 0, 0, 0, GetHwnd(), (HMENU)NewControlId(), wxGetInstance(), NULL); m_radioButtons->SetFont(GetFont()); #ifdef __WXWINCE__ // Set the z-order correctly SetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); #endif SetSelection(0); SetSize(pos.x, pos.y, size.x, size.y); // Now that we have items determine what is the best size and set it. SetBestSize(size); return true; }
bool wxButton::Create( wxWindow* pParent, wxWindowID vId, const wxString& rsLbl, const wxPoint& rPos, const wxSize& rSize, long lStyle, const wxValidator& rValidator, const wxString& rsName) { wxString rsLabel(rsLbl); if (rsLabel.empty() && wxIsStockID(vId)) rsLabel = wxGetStockLabel(vId); wxString sLabel = ::wxPMTextToLabel(rsLabel); SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); #endif m_windowStyle = lStyle; pParent->AddChild((wxButton *)this); if (vId == -1) m_windowId = NewControlId(); else m_windowId = vId; lStyle = WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON; // // OS/2 PM does not have Right/Left/Top/Bottom styles. // We will have to define an additional style when we implement notebooks // for a notebook page button // if (m_windowStyle & wxCLIP_SIBLINGS ) lStyle |= WS_CLIPSIBLINGS; m_hWnd = (WXHWND)::WinCreateWindow( GetHwndOf(pParent) // Parent handle ,WC_BUTTON // A Button class window ,(PSZ)sLabel.c_str() // Button text ,lStyle // Button style ,0, 0, 0, 0 // Location and size ,GetHwndOf(pParent) // Owner handle ,HWND_TOP // Top of Z-Order ,vId // Identifier ,NULL // No control data ,NULL // No Presentation parameters ); if (m_hWnd == 0) { return false; } // // Subclass again for purposes of dialog editing mode // SubclassWin(m_hWnd); wxFont* pButtonFont = new wxFont( 8 ,wxSWISS ,wxNORMAL ,wxNORMAL ); SetFont(*pButtonFont); SetXComp(0); SetYComp(0); SetSize( rPos.x ,rPos.y ,rSize.x ,rSize.y ); delete pButtonFont; return true; } // end of wxButton::Create
bool wxBitmapButton::Create( wxWindow* pParent, wxWindowID vId, const wxBitmap& rBitmap, const wxPoint& rPos, const wxSize& rSize, long lStyle, const wxValidator& rValidator, const wxString& rsName ) { m_bitmaps[State_Normal] = rBitmap; SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); #endif pParent->AddChild(this); m_backgroundColour = pParent->GetBackgroundColour() ; m_foregroundColour = pParent->GetForegroundColour() ; m_windowStyle = lStyle; if (lStyle & wxBU_AUTODRAW) { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; } int nX = rPos.x; int nY = rPos.y; int nWidth = rSize.x; int nHeight = rSize.y; if (vId == wxID_ANY) m_windowId = NewControlId(); else m_windowId = vId; if (nWidth == wxDefaultCoord && rBitmap.IsOk()) nWidth = rBitmap.GetWidth() + 4 * m_marginX; if (nHeight == wxDefaultCoord && rBitmap.IsOk()) nHeight = rBitmap.GetHeight() + 4 * m_marginY; ULONG ulOS2Style = WS_VISIBLE | WS_TABSTOP | BS_USERBUTTON; if (m_windowStyle & wxCLIP_SIBLINGS) ulOS2Style |= WS_CLIPSIBLINGS; m_hWnd = (WXHWND)::WinCreateWindow( GetHwndOf(pParent) ,WC_BUTTON ,(PSZ)wxEmptyString ,ulOS2Style ,0, 0, 0, 0 ,GetHwndOf(pParent) ,HWND_TOP ,m_windowId ,NULL ,NULL ); // //Subclass again for purposes of dialog editing mode // SubclassWin(m_hWnd); SetFont(*wxSMALL_FONT); SetSize( nX ,nY ,nWidth ,nHeight ); return true; } // end of wxBitmapButton::Create
bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], int majorDim, long style, const wxValidator& val, const wxString& name) { // common initialization if ( !wxStaticBox::Create(parent, id, title, pos, size, style, name) ) return false; // the code elsewhere in this file supposes that either wxRA_SPECIFY_COLS // or wxRA_SPECIFY_ROWS is set, ensure that this is indeed the case if ( !(style & (wxRA_SPECIFY_ROWS | wxRA_SPECIFY_COLS)) ) style |= wxRA_SPECIFY_COLS; #if wxUSE_VALIDATORS SetValidator(val); #else wxUnusedVar(val); #endif // wxUSE_VALIDATORS/!wxUSE_VALIDATORS // We need an extra one to keep track of the 'dummy' item we // create to end the radio group, so it will be destroyed and // it's id will be released. But we want it separate from the // other buttons since the wxSubwindows will operate on it as // well and we just want to ignore it until destroying it. // For instance, we don't want the bounding box of the radio // buttons to include the dummy button m_radioButtons = new wxSubwindows(n); m_radioWidth = new int[n]; m_radioHeight = new int[n]; for ( int i = 0; i < n; i++ ) { m_radioWidth[i] = m_radioHeight[i] = wxDefaultCoord; long styleBtn = BS_AUTORADIOBUTTON | WS_TABSTOP | WS_CHILD | WS_VISIBLE; if ( i == 0 ) styleBtn |= WS_GROUP; wxWindowIDRef subid = NewControlId(); HWND hwndBtn = ::CreateWindow(wxT("BUTTON"), choices[i].wx_str(), styleBtn, 0, 0, 0, 0, // will be set in SetSize() GetHwndOf(parent), (HMENU)wxUIntToPtr(subid.GetValue()), wxGetInstance(), NULL); if ( !hwndBtn ) { wxLogLastError(wxT("CreateWindow(radio btn)")); return false; } // Keep track of the subwindow m_radioButtons->Set(i, hwndBtn, subid); SubclassRadioButton((WXHWND)hwndBtn); // Also, make it a subcontrol of this control m_subControls.Add(subid); } // Create a dummy radio control to end the group. m_dummyId = NewControlId(); m_dummyHwnd = (WXHWND)::CreateWindow(wxT("BUTTON"), wxEmptyString, WS_GROUP | BS_AUTORADIOBUTTON | WS_CHILD, 0, 0, 0, 0, GetHwndOf(parent), (HMENU)wxUIntToPtr(m_dummyId.GetValue()), wxGetInstance(), NULL); m_radioButtons->SetFont(GetFont()); #ifdef __WXWINCE__ // Set the z-order correctly SetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); #endif SetMajorDim(majorDim == 0 ? n : majorDim, style); SetSelection(0); SetSize(pos.x, pos.y, size.x, size.y); // Now that we have items determine what is the best size and set it. SetInitialSize(size); return true; }
bool wxListBox::Create( wxWindow* pParent , wxWindowID vId , const wxPoint& rPos , const wxSize& rSize , int n , const wxString asChoices[] , long lStyle , const wxValidator& rValidator , const wxString& rsName ) { m_nNumItems = 0; m_hWnd = 0; m_nSelected = 0; SetName(rsName); #if wxUSE_VALIDATORS SetValidator(rValidator); #endif if (pParent) pParent->AddChild(this); wxSystemSettings vSettings; SetBackgroundColour(vSettings.GetColour(wxSYS_COLOUR_WINDOW)); SetForegroundColour(pParent->GetForegroundColour()); m_windowId = (vId == -1) ? (int)NewControlId() : vId; int nX = rPos.x; int nY = rPos.y; int nWidth = rSize.x; int nHeight = rSize.y; m_windowStyle = lStyle; lStyle = WS_VISIBLE; if (m_windowStyle & wxCLIP_SIBLINGS ) lStyle |= WS_CLIPSIBLINGS; if (m_windowStyle & wxLB_MULTIPLE) lStyle |= LS_MULTIPLESEL; else if (m_windowStyle & wxLB_EXTENDED) lStyle |= LS_EXTENDEDSEL; if (m_windowStyle & wxLB_HSCROLL) lStyle |= LS_HORZSCROLL; if (m_windowStyle & wxLB_OWNERDRAW) lStyle |= LS_OWNERDRAW; // // Without this style, you get unexpected heights, so e.g. constraint layout // doesn't work properly // lStyle |= LS_NOADJUSTPOS; m_hWnd = (WXHWND)::WinCreateWindow( GetWinHwnd(pParent) // Parent ,WC_LISTBOX // Default Listbox class ,"LISTBOX" // Control's name ,lStyle // Initial Style ,0, 0, 0, 0 // Position and size ,GetWinHwnd(pParent) // Owner ,HWND_TOP // Z-Order ,(HMENU)m_windowId // Id ,NULL // Control Data ,NULL // Presentation Parameters ); if (m_hWnd == 0) { return false; } // // Subclass again for purposes of dialog editing mode // SubclassWin(m_hWnd); LONG lUi; for (lUi = 0; lUi < (LONG)n; lUi++) { Append(asChoices[lUi]); } wxFont* pTextFont = new wxFont( 10 ,wxMODERN ,wxNORMAL ,wxNORMAL ); SetFont(*pTextFont); // // Set OS/2 system colours for Listbox items and highlighting // wxColour vColour; vColour = wxSystemSettingsNative::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT); LONG lColor = (LONG)vColour.GetPixel(); ::WinSetPresParam( m_hWnd ,PP_HILITEFOREGROUNDCOLOR ,sizeof(LONG) ,(PVOID)&lColor ); vColour = wxSystemSettingsNative::GetColour(wxSYS_COLOUR_HIGHLIGHT); lColor = (LONG)vColour.GetPixel(); ::WinSetPresParam( m_hWnd ,PP_HILITEBACKGROUNDCOLOR ,sizeof(LONG) ,(PVOID)&lColor ); SetSize( nX ,nY ,nWidth ,nHeight ); delete pTextFont; return true; } // end of wxListBox::Create
/***************************************************** ** ** TimeInputField --- Constructor ** ******************************************************/ TimeInputField::TimeInputField( wxWindow *parent, int id, const wxPoint& pos, const wxSize& size ) : DegMinSecInputField( parent, id, pos, size ) { SetValidator( DegreeValidator( 0, 24 )); }
/***************************************************** ** ** IntegerInputField --- Constructor ** ******************************************************/ IntegerInputField::IntegerInputField( wxWindow *parent, int id, const wxPoint& pos, const wxSize& size ) : BaseInputField( parent, id, pos, size ) { SetValidator( DoubleValidator()); }
bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], int majorDim, long style, const wxValidator& val, const wxString& name) { // common initialization if ( !wxStaticBox::Create(parent, id, title, pos, size, style, name) ) return false; // the code elsewhere in this file supposes that either wxRA_SPECIFY_COLS // or wxRA_SPECIFY_ROWS is set, ensure that this is indeed the case if ( !(style & (wxRA_SPECIFY_ROWS | wxRA_SPECIFY_COLS)) ) style |= wxRA_SPECIFY_COLS; #if wxUSE_VALIDATORS SetValidator(val); #else wxUnusedVar(val); #endif // wxUSE_VALIDATORS/!wxUSE_VALIDATORS // We need an extra one to keep track of the 'dummy' item we // create to end the radio group, so it will be destroyed and // it's id will be released. But we want it separate from the // other buttons since the wxSubwindows will operate on it as // well and we just want to ignore it until destroying it. // For instance, we don't want the bounding box of the radio // buttons to include the dummy button m_radioButtons = new wxSubwindows(n); m_radioWidth = new int[n]; m_radioHeight = new int[n]; for ( int i = 0; i < n; i++ ) { m_radioWidth[i] = m_radioHeight[i] = wxDefaultCoord; long styleBtn = BS_AUTORADIOBUTTON | WS_TABSTOP | WS_CHILD | WS_VISIBLE; if ( i == 0 ) styleBtn |= WS_GROUP; wxWindowIDRef subid = NewControlId(); HWND hwndBtn = ::CreateWindow(wxT("BUTTON"), choices[i].t_str(), styleBtn, 0, 0, 0, 0, // will be set in SetSize() GetHwndOf(parent), (HMENU)wxUIntToPtr(subid.GetValue()), wxGetInstance(), NULL); if ( !hwndBtn ) { wxLogLastError(wxT("CreateWindow(radio btn)")); return false; } // Keep track of the subwindow m_radioButtons->Set(i, hwndBtn, subid); SubclassRadioButton((WXHWND)hwndBtn); // Also, make it a subcontrol of this control m_subControls.Add(subid); } // Create a dummy radio control to end the group. m_dummyId = NewControlId(); m_dummyHwnd = (WXHWND)::CreateWindow(wxT("BUTTON"), wxEmptyString, WS_GROUP | BS_AUTORADIOBUTTON | WS_CHILD, 0, 0, 0, 0, GetHwndOf(parent), (HMENU)wxUIntToPtr(m_dummyId.GetValue()), wxGetInstance(), NULL); m_radioButtons->SetFont(GetFont()); SetMajorDim(majorDim == 0 ? n : majorDim, style); // Select the first radio button if we have any buttons at all. if ( n > 0 ) SetSelection(0); SetSize(pos.x, pos.y, size.x, size.y); // Now that we have items determine what is the best size and set it. SetInitialSize(size); // And update all the buttons positions to match it. const wxSize actualSize = GetSize(); PositionAllButtons(pos.x, pos.y, actualSize.x, actualSize.y); // The base wxStaticBox class never accepts focus, but we do because giving // focus to a wxRadioBox actually gives it to one of its buttons, which are // not visible at wx level and hence are not taken into account by the // logic in wxControlContainer code. m_container.EnableSelfFocus(); return true; }
bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, const wxPoint& pos, const wxSize& size, long style, const wxValidator& wxVALIDATOR_PARAM(validator), const wxString& name) { m_bmpNormal = bitmap; SetName(name); #if wxUSE_VALIDATORS SetValidator(validator); #endif // wxUSE_VALIDATORS parent->AddChild(this); m_windowStyle = style; if ( style & wxBU_AUTODRAW ) { m_marginX = m_marginY = 4; } if (id == wxID_ANY) m_windowId = NewControlId(); else m_windowId = id; long msStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD | BS_OWNERDRAW ; if ( m_windowStyle & wxCLIP_SIBLINGS ) msStyle |= WS_CLIPSIBLINGS; #ifdef __WIN32__ if(m_windowStyle & wxBU_LEFT) msStyle |= BS_LEFT; if(m_windowStyle & wxBU_RIGHT) msStyle |= BS_RIGHT; if(m_windowStyle & wxBU_TOP) msStyle |= BS_TOP; if(m_windowStyle & wxBU_BOTTOM) msStyle |= BS_BOTTOM; #endif m_hWnd = (WXHWND) CreateWindowEx( 0, wxT("BUTTON"), wxEmptyString, msStyle, 0, 0, 0, 0, GetWinHwnd(parent), (HMENU)m_windowId, wxGetInstance(), NULL ); // Subclass again for purposes of dialog editing mode SubclassWin(m_hWnd); SetPosition(pos); SetInitialSize(size); return true; }