void wxDialogBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, which may close the dialog. // Check for looping if the Cancel event handler calls Close(). // // VZ: this is horrible and MT-unsafe. Can't we reuse some of these global // lists here? don't dare to change it now, but should be done later! static wxList closing; if ( closing.Member(this) ) return; closing.Append(this); // When a previously hidden (necessarily modeless) dialog is being closed, // we must not perform the usual validation and data transfer steps as they // had been already done when it was hidden and doing it again now would be // unexpected and could result in e.g. the dialog asking for confirmation // before discarding the changes being shown again, which doesn't make // sense as the dialog is not being closed in response to any user action. if ( !IsShown() || !SendCloseButtonClickEvent() ) { // If the handler didn't close the dialog (e.g. because there is no // button with matching id) we still want to close it when the user // clicks the "x" button in the title bar, otherwise we shouldn't even // have put it there. // // Notice that using wxID_CLOSE might have been a better choice but we // use wxID_CANCEL for compatibility reasons. EndDialog(wxID_CANCEL); } closing.DeleteObject(this); }
void wxDialogBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, which may close the dialog. // Check for looping if the Cancel event handler calls Close(). // // VZ: this is horrible and MT-unsafe. Can't we reuse some of these global // lists here? don't dare to change it now, but should be done later! static wxList closing; if ( closing.Member(this) ) return; closing.Append(this); if ( !SendCloseButtonClickEvent() ) { // If the handler didn't close the dialog (e.g. because there is no // button with matching id) we still want to close it when the user // clicks the "x" button in the title bar, otherwise we shouldn't even // have put it there. // // Notice that using wxID_CLOSE might have been a better choice but we // use wxID_CANCEL for compatibility reasons. EndDialog(wxID_CANCEL); } closing.DeleteObject(this); }
void wxDialog::SetModal(bool flag) { if ( flag ) wxModelessWindows.DeleteObject(this); else wxModelessWindows.Append(this); }
void wxDialogBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, which may close the dialog. // Check for looping if the Cancel event handler calls Close(). // Note that if a cancel button and handler aren't present in the dialog, // nothing will happen when you close the dialog via the window manager, or // via Close(). We wouldn't want to destroy the dialog by default, since // the dialog may have been created on the stack. However, this does mean // that calling dialog->Close() won't delete the dialog unless the handler // for wxID_CANCEL does so. So use Destroy() if you want to be sure to // destroy the dialog. The default OnCancel (above) simply ends a modal // dialog, and hides a modeless dialog. int idCancel = GetEscapeId(); if ( idCancel == wxID_NONE ) return; if ( idCancel == wxID_ANY ) idCancel = wxID_CANCEL; // VZ: this is horrible and MT-unsafe. Can't we reuse some of these global // lists here? don't dare to change it now, but should be done later! static wxList closing; if ( closing.Member(this) ) return; closing.Append(this); wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, idCancel); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); // This may close the dialog closing.DeleteObject(this); }
void wxDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, // which may close the dialog. // Check for looping if the Cancel event handler calls Close(). // Note that if a cancel button and handler aren't present in the dialog, // nothing will happen when you close the dialog via the window manager, or // via Close(). // We wouldn't want to destroy the dialog by default, since the dialog may have been // created on the stack. // However, this does mean that calling dialog->Close() won't delete the dialog // unless the handler for wxID_CANCEL does so. So use Destroy() if you want to be // sure to destroy the dialog. // The default OnCancel (above) simply ends a modal dialog, and hides a modeless dialog. static wxList closing; if ( closing.Member(this) ) return; closing.Append(this); wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); // This may close the dialog closing.DeleteObject(this); }
void wxDialog::DoShowModal() { wxCHECK_RET( !IsModalShowing(), _T("DoShowModal() called twice") ); wxModalDialogs.Append(this); SetFocus() ; #if TARGET_CARBON BeginAppModalStateForWindow( (WindowRef) MacGetWindowRef()) ; #else // TODO : test whether parent gets disabled bool formerModal = s_macIsInModalLoop ; s_macIsInModalLoop = true ; #endif while ( IsModalShowing() ) { wxTheApp->MacDoOneEvent() ; // calls process idle itself } #if TARGET_CARBON EndAppModalStateForWindow( (WindowRef) MacGetWindowRef() ) ; #else // TODO probably reenable the parent window if any s_macIsInModalLoop = formerModal ; #endif }
MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): wxMDIChildFrame(parent, wxID_ANY, title, pos, size, style) { canvas = NULL; my_children.Append(this); }
static bool ocpn_wx_spline_add_point(double x, double y) { wxPoint *point = new wxPoint ; point->x = (int) x; point->y = (int) y; ocpn_wx_spline_point_list.Append((wxObject*)point); return true; }
void wxTreeLayoutStored::GetChildren(long id, wxList& list) { long currentId = GetTopNode(); while (currentId != wxID_ANY) { if (id == GetNodeParent(currentId)) list.Append((wxObject *)currentId); currentId = GetNextNode(currentId); } }
void csDiagramView::FindSelectedShapes(wxList& selections, wxClassInfo* toFind) { csDiagramDocument *doc = (csDiagramDocument *)GetDocument(); wxObjectList::compatibility_iterator node = doc->GetDiagram()->GetShapeList()->GetFirst(); while (node) { wxShape *eachShape = (wxShape *)node->GetData(); if ((eachShape->GetParent() == NULL) && !eachShape->IsKindOf(CLASSINFO(wxLabelShape)) && eachShape->Selected() && ((toFind == NULL) || (eachShape->IsKindOf(toFind)))) { selections.Append(eachShape); } node = node->GetNext(); } }
void cbGCUpdatesMgr::AddItem( wxList& itemList, cbBarInfo* pBar, cbDockPane* pPane, wxRect& curBounds, wxRect& prevBounds ) { cbRectInfo* pInfo = new cbRectInfo(); pInfo->mpBar = pBar; pInfo->mpPane = pPane; pInfo->mpCurBounds = &curBounds; pInfo->mpPrevBounds = &prevBounds; itemList.Append( (wxObject*) pInfo ); }
void wxDialog::SetModal(bool flag) { #ifdef __VMS #pragma message disable codcauunr #endif if ( flag ) m_windowStyle |= wxDIALOG_MODAL ; else if ( m_windowStyle & wxDIALOG_MODAL ) m_windowStyle -= wxDIALOG_MODAL ; wxModelessWindows.DeleteObject(this); if (!flag) wxModelessWindows.Append(this); #ifdef __VMS #pragma message enable codcauunr #endif }
// Helper for wxCreateAcceleratorTableForMenuBar static void wxAddAccelerators(wxList& accelEntries, wxMenu* menu) { size_t i; for (i = 0; i < menu->GetMenuItems().GetCount(); i++) { wxMenuItem* item = (wxMenuItem*) menu->GetMenuItems().Item(i)->GetData(); if (item->GetSubMenu()) { wxAddAccelerators(accelEntries, item->GetSubMenu()); } else if (!item->GetItemLabel().IsEmpty()) { wxAcceleratorEntry* entry = wxAcceleratorEntry::Create(item->GetItemLabel()); if (entry) { entry->Set(entry->GetFlags(), entry->GetKeyCode(), item->GetId()); accelEntries.Append((wxObject*) entry); } } } }
void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) { // Make another frame, containing a canvas MyChild *subframe ; m_children.Append (new MyChild(frame, wxT("SVG Frame"), wxPoint(-1, -1), wxSize(-1, -1), wxDEFAULT_FRAME_STYLE ) ) ; subframe = (MyChild *) m_children.GetLast() -> GetData (); wxString title; title.Printf(wxT("SVG Test Window %d"), nWinCreated ); // counts number of children previously, even if now closed nWinCreated ++ ; // Give it a title and icon subframe->SetTitle(title); subframe->SetIcon(wxICON(mondrian)); // Make a menubar wxMenu *file_menu = new wxMenu; file_menu->Append(MDI_NEW_WINDOW, wxT("&Another test\tCtrl+N")); file_menu->Append(MDI_SAVE, wxT("&Save\tCtrl+S"), wxT("Save in SVG format")); file_menu->Append(MDI_CHILD_QUIT, wxT("&Close child\tCtrl+F4")); file_menu->Append(MDI_QUIT, wxT("&Exit\tAlt+X")); wxMenu *help_menu = new wxMenu; help_menu->Append(MDI_ABOUT, wxT("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, wxT("&File")); menu_bar->Append(help_menu, wxT("&Help")); // Associate the menu bar with the frame subframe->SetMenuBar(menu_bar); subframe->Show(true); }
// Destroy the window (delayed, if a managed window) bool wxDialog::Destroy() { if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); return true; }
bool wxFrame::XmDoCreateTLW(wxWindow* WXUNUSED(parent), wxWindowID WXUNUSED(id), const wxString& WXUNUSED(title), const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), long style, const wxString& name) { Widget frameShell; frameShell = XtCreatePopupShell( name, topLevelShellWidgetClass, (Widget)wxTheApp->GetTopLevelWidget(), NULL, 0 ); XtVaSetValues(frameShell, // Allows menu to resize XmNallowShellResize, True, XmNdeleteResponse, XmDO_NOTHING, XmNmappedWhenManaged, False, XmNiconic, (style & wxICONIZE) ? True : False, NULL); m_frameShell = (WXWidget)frameShell; m_mainWidget = (WXWidget) XtVaCreateManagedWidget("main_window", xmMainWindowWidgetClass, frameShell, XmNresizePolicy, XmRESIZE_NONE, NULL); m_workArea = (WXWidget) XtVaCreateWidget("form", xmFormWidgetClass, (Widget) m_mainWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); m_clientArea = (WXWidget) XtVaCreateWidget("client", xmBulletinBoardWidgetClass, (Widget) m_workArea, XmNmarginWidth, 0, XmNmarginHeight, 0, XmNrightAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); XtVaSetValues((Widget) m_mainWidget, XmNworkWindow, (Widget) m_workArea, NULL); XtManageChild((Widget) m_clientArea); XtManageChild((Widget) m_workArea); XtTranslations ptr = XtParseTranslationTable( "<Configure>: resize()" ); XtOverrideTranslations( (Widget) m_workArea, ptr ); XtFree( (char *)ptr ); /* Part of show-&-hide fix */ XtAddEventHandler( frameShell, StructureNotifyMask, False, (XtEventHandler)wxFrameMapProc, (XtPointer)this ); XtRealizeWidget(frameShell); wxAddWindowToTable( (Widget)m_workArea, this); wxAddWindowToTable( (Widget)m_clientArea, this); wxModelessWindows.Append( this ); return true; }
/// Add a definition to one of the style lists bool wxRichTextStyleSheet::AddStyle(wxList& list, wxRichTextStyleDefinition* def) { if (!list.Find(def)) list.Append(def); return true; }
bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { SetName(name); SetWindowStyleFlag(style); m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE); m_foregroundColour = *wxBLACK; m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); if ( id > -1 ) m_windowId = id; else m_windowId = (int)NewControlId(); wxMDIClientWindow* clientWindow = parent->GetClientWindow(); wxASSERT_MSG( (clientWindow != (wxWindow*) NULL), "Missing MDI client window."); if (clientWindow) clientWindow->AddChild(this); SetMDIParentFrame(parent); int width = size.x; int height = size.y; if (width == -1) width = 200; // TODO: give reasonable default if (height == -1) height = 200; // TODO: give reasonable default // We're deactivating the old child wxMDIChildFrame* oldActiveChild = parent->GetActiveChild(); if (oldActiveChild) { wxActivateEvent event(wxEVT_ACTIVATE, false, oldActiveChild->GetId()); event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } // This is the currently active child parent->SetActiveChild((wxMDIChildFrame*) this); // This time we'll try a bog-standard bulletin board for // the 'frame'. A main window doesn't seem to work. m_mainWidget = (WXWidget) XtVaCreateWidget("client", xmBulletinBoardWidgetClass, (Widget) clientWindow->GetTopWidget(), XmNmarginWidth, 0, XmNmarginHeight, 0, /* XmNrightAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, */ XmNresizePolicy, XmRESIZE_NONE, NULL); XtAddEventHandler((Widget) m_mainWidget, ExposureMask,False, wxUniversalRepaintProc, (XtPointer) this); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); ChangeBackgroundColour(); XtManageChild((Widget) m_mainWidget); SetTitle(title); clientWindow->AddPage(this, title, true); clientWindow->Refresh(); // Positions the toolbar and status bar -- but we don't have any. // PreResize(); wxModelessWindows.Append(this); return true; }