X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b9048c56f0aa04b2adbb7813f9698abdda15184..281c54cc42f9ca2578f08218b1eed8d5208db8f7:/wxPython/src/_toplvl.i diff --git a/wxPython/src/_toplvl.i b/wxPython/src/_toplvl.i index fc1f7a25a5..7578a8f837 100644 --- a/wxPython/src/_toplvl.i +++ b/wxPython/src/_toplvl.i @@ -23,6 +23,49 @@ MAKE_CONST_WXSTRING(ToolBarNameStr); //--------------------------------------------------------------------------- %newgroup +enum +{ + wxSTAY_ON_TOP, + wxICONIZE, + wxMINIMIZE, + wxMAXIMIZE, + wxCLOSE_BOX, + wxTHICK_FRAME, + wxSYSTEM_MENU, + wxMINIMIZE_BOX, + wxMAXIMIZE_BOX, + wxTINY_CAPTION_HORIZ, + wxTINY_CAPTION_VERT, + wxRESIZE_BOX, + wxRESIZE_BORDER, + + wxDIALOG_NO_PARENT, + + wxDEFAULT_FRAME_STYLE, + wxDEFAULT_DIALOG_STYLE, + + wxFRAME_TOOL_WINDOW, + wxFRAME_FLOAT_ON_PARENT, + wxFRAME_NO_WINDOW_MENU, + wxFRAME_NO_TASKBAR, + wxFRAME_SHAPED, + wxFRAME_DRAWER, + + wxFRAME_EX_METAL, + wxDIALOG_EX_METAL, + wxWS_EX_CONTEXTHELP, + + // Obsolete + wxDIALOG_MODAL, + wxDIALOG_MODELESS, + wxUSER_COLOURS, + wxNO_3D, + + wxFRAME_EX_CONTEXTHELP, + wxDIALOG_EX_CONTEXTHELP, +}; + + enum { wxFULLSCREEN_NOMENUBAR, @@ -35,18 +78,12 @@ enum wxTOPLEVEL_EX_DIALOG, }; - - -%typemap(in) (int widths, int* widths_field) { - $1 = PyList_Size($input); - $2 = int_LIST_helper($input); - if ($2 == NULL) SWIG_fail; -} - -%typemap(freearg) (int widths, int* widths_field) { - if ($2) delete [] $2; -} - +// Styles for RequestUserAttention +enum +{ + wxUSER_ATTENTION_INFO = 1, + wxUSER_ATTENTION_ERROR = 2 +}; //--------------------------------------------------------------------------- @@ -57,17 +94,21 @@ public: // No constructor as it can not be used directly from Python // maximize = True => maximize, otherwise - restore - virtual void Maximize(bool maximize = True); + virtual void Maximize(bool maximize = true); // undo Maximize() or Iconize() virtual void Restore(); // iconize = True => iconize, otherwise - restore - virtual void Iconize(bool iconize = True); + virtual void Iconize(bool iconize = true); // return True if the frame is maximized virtual bool IsMaximized() const; + // return true if the frame is always maximized + // due to native guidelines or current policy + virtual bool IsAlwaysMaximized() const; + // return True if the frame is iconized virtual bool IsIconized() const; @@ -78,7 +119,7 @@ public: virtual void SetIcon(const wxIcon& icon); // set the frame icons - virtual void SetIcons(const wxIconBundle& icons ); + virtual void SetIcons(const wxIconBundle& icons); // maximize the window to cover entire screen virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL); @@ -90,10 +131,74 @@ public: virtual wxString GetTitle() const; // Set the shape of the window to the given region. - // Returns True if the platform supports this feature (and the operation - // is successful.) + // Returns True if the platform supports this feature + // (and the operation is successful.) virtual bool SetShape(const wxRegion& region); + // Attracts the users attention to this window if the application is inactive + // (should be called when a background event occurs) + virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO); + + // Is this the active frame (highlighted in the taskbar)? + virtual bool IsActive(); + +#ifdef __WXMAC__ + %extend { + void MacSetMetalAppearance( bool on ) { + int style = self->GetExtraStyle(); + if ( on ) + style |= wxFRAME_EX_METAL; + else + style &= ~wxFRAME_EX_METAL; + self->SetExtraStyle(style); + } + } + bool MacGetMetalAppearance() const; +#else + %extend + { + // TODO: Should they raise not implemented or just NOP??? + void MacSetMetalAppearance( bool on ) { /*wxPyRaiseNotImplemented();*/ } + bool MacGetMetalAppearance() const { /*wxPyRaiseNotImplemented();*/ return false; } + } +#endif + + DocDeclStr( + void , CenterOnScreen(int dir = wxBOTH), + "Center the window on screen", ""); + %pythoncode { CentreOnScreen = CenterOnScreen } + +#ifdef __WXMSW__ + bool EnableCloseButton(bool enable = true); +#else + %extend { + bool EnableCloseButton(bool enable = true) { return false; } + } +#endif + + + + DocDeclStr( + virtual wxWindow *, GetDefaultItem() const, + "Get the default child of this parent, i.e. the one which is activated +by pressing such as the OK button on a wx.Dialog.", ""); + + DocDeclStr( + virtual wxWindow *, SetDefaultItem(wxWindow * child), + "Set this child as default, return the old default.", ""); + + DocDeclStr( + virtual void , SetTmpDefaultItem(wxWindow * win), + "Set this child as temporary default", ""); + + DocDeclStr( + virtual wxWindow *, GetTmpDefaultItem() const, + "Return the temporary default item, which can be None.", ""); + + %property(DefaultItem, GetDefaultItem, SetDefaultItem, doc="See `GetDefaultItem` and `SetDefaultItem`"); + %property(Icon, GetIcon, SetIcon, doc="See `GetIcon` and `SetIcon`"); + %property(Title, GetTitle, SetTitle, doc="See `GetTitle` and `SetTitle`"); + %property(TmpDefaultItem, GetTmpDefaultItem, SetTmpDefaultItem, doc="See `GetTmpDefaultItem` and `SetTmpDefaultItem`"); }; @@ -107,24 +212,34 @@ public: // is accounted for in client size calculations - all others should be taken // care of manually. -class wxFrame : public wxTopLevelWindow { +MustHaveApp(wxFrame); + +class wxFrame : public wxTopLevelWindow +{ public: %pythonAppend wxFrame "self._setOORInfo(self)" %pythonAppend wxFrame() "" + %typemap(out) wxFrame*; // turn off this typemap - wxFrame(wxWindow* parent, const wxWindowID id, const wxString& title, + wxFrame(wxWindow* parent, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxPyFrameNameStr); - %name(PreFrame)wxFrame(); + %RenameCtor(PreFrame, wxFrame()); - bool Create(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxPyFrameNameStr); + // Turn it back on again + %typemap(out) wxFrame* { $result = wxPyMake_wxObject($1, $owner); } + bool Create(wxWindow* parent, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxPyFrameNameStr); // frame state // ----------- @@ -133,11 +248,9 @@ public: // if the frame has a toolbar) in client coordinates virtual wxPoint GetClientAreaOrigin() const; - // sends a size event to the window using its current size -- this has an - // effect of refreshing the window layout - // - virtual void SendSizeEvent() { } - + // sends a size event to the window using its current size: + // this has a side effect of refreshing the window layout + virtual void SendSizeEvent(); // menu bar functions // ------------------ @@ -145,20 +258,19 @@ public: virtual void SetMenuBar(wxMenuBar *menubar); virtual wxMenuBar *GetMenuBar() const; - // process menu command: returns True if processed bool ProcessCommand(int winid); %pythoncode { Command = ProcessCommand } - // status bar functions // -------------------- // create the main status bar by calling OnCreateStatusBar() virtual wxStatusBar* CreateStatusBar(int number = 1, - long style = wxST_SIZEGRIP, + long style = wxDEFAULT_STATUSBAR_STYLE, wxWindowID winid = 0, const wxString& name = wxPyStatusLineNameStr); + // TODO: with directors? // // return a new status bar // virtual wxStatusBar *OnCreateStatusBar(int number, @@ -174,7 +286,7 @@ public: // forward these to status bar virtual void SetStatusText(const wxString &text, int number = 0); - virtual void SetStatusWidths(int widths, const int* widths_field); //uses typemap above + virtual void SetStatusWidths(int widths, const int* widths_field); // uses typemap above void PushStatusText(const wxString &text, int number = 0); void PopStatusText(int number = 0); @@ -182,7 +294,6 @@ public: void SetStatusBarPane(int n); int GetStatusBarPane() const; - // toolbar functions // ----------------- @@ -190,6 +301,7 @@ public: virtual wxToolBar* CreateToolBar(long style = -1, wxWindowID winid = -1, const wxString& name = wxPyToolBarNameStr); + // TODO: with directors? // // return a new toolbar // virtual wxToolBar *OnCreateToolBar(long style, @@ -200,57 +312,103 @@ public: virtual wxToolBar *GetToolBar() const; virtual void SetToolBar(wxToolBar *toolbar); - // show help text (typically in the statusbar); show is False // if you are hiding the help, True otherwise virtual void DoGiveHelp(const wxString& text, bool show); - // send wxUpdateUIEvents for all menu items in the menubar, // or just for menu if non-NULL void DoMenuUpdates(wxMenu* menu = NULL); + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + %property(MenuBar, GetMenuBar, SetMenuBar, doc="See `GetMenuBar` and `SetMenuBar`"); + %property(StatusBar, GetStatusBar, SetStatusBar, doc="See `GetStatusBar` and `SetStatusBar`"); + %property(StatusBarPane, GetStatusBarPane, SetStatusBarPane, doc="See `GetStatusBarPane` and `SetStatusBarPane`"); + %property(ToolBar, GetToolBar, SetToolBar, doc="See `GetToolBar` and `SetToolBar`"); }; //--------------------------------------------------------------------------- %newgroup -class wxDialog : public wxTopLevelWindow { +MustHaveApp(wxDialog); + +class wxDialog : public wxTopLevelWindow +{ public: + enum + { + // all flags allowed in wxDialogBase::CreateButtonSizer() + ButtonSizerFlags = wxOK | wxCANCEL | wxYES | wxNO | wxHELP | wxNO_DEFAULT + }; + %pythonAppend wxDialog "self._setOORInfo(self)" %pythonAppend wxDialog() "" + %typemap(out) wxDialog*; // turn off this typemap wxDialog(wxWindow* parent, - const wxWindowID id, - const wxString& title, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxPyDialogNameStr); - %name(PreDialog)wxDialog(); + %RenameCtor(PreDialog, wxDialog()); + + // Turn it back on again + %typemap(out) wxDialog* { $result = wxPyMake_wxObject($1, $owner); } bool Create(wxWindow* parent, - const wxWindowID id, - const wxString& title, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxPyDialogNameStr); - - // the modal dialogs have a return code - usually the id of the last + // the modal dialogs have a return code - usually the ID of the last // pressed button - void SetReturnCode(int returnCode) { m_returnCode = returnCode; } - int GetReturnCode() const { return m_returnCode; } + void SetReturnCode(int returnCode); + int GetReturnCode() const; + + // Set the identifier for the affirmative button: this button will close + // the dialog after validating data and calling TransferDataFromWindow() + void SetAffirmativeId(int affirmativeId); + int GetAffirmativeId() const; + + // Set identifier for Esc key translation: the button with this id will + // close the dialog without doing anything else; special value wxID_NONE + // means to not handle Esc at all while wxID_ANY means to map Esc to + // wxID_CANCEL if present and GetAffirmativeId() otherwise + void SetEscapeId(int escapeId); + int GetEscapeId() const; // splits text up at newlines and places the // lines into a vertical wxBoxSizer - wxSizer *CreateTextSizer( const wxString &message ); + wxSizer* CreateTextSizer( const wxString &message ); - // places buttons into a horizontal wxBoxSizer - wxSizer *CreateButtonSizer( long flags ); + // returns a horizontal wxBoxSizer containing the given buttons + // + // notice that the returned sizer can be NULL if no buttons are put in the + // sizer (this mostly happens under smart phones and other atypical + // platforms which have hardware buttons replacing OK/Cancel and such) + %Rename(_CreateButtonSizer, + wxSizer* , CreateButtonSizer( long flags )); + %pythoncode { + def CreateButtonSizer(self, flags, *ignored): + return self._CreateButtonSizer(flags) + } - //void SetModal(bool flag); + // returns the sizer containing CreateButtonSizer() below a separating + // static line for the platforms which use static lines for items + // separation (i.e. not Mac) + wxSizer *CreateSeparatedButtonSizer(long flags); + + wxStdDialogButtonSizer* CreateStdDialogButtonSizer( long flags ); + + //void SetModal( bool flag ); // is the dialog in modal state right now? virtual bool IsModal() const; @@ -262,40 +420,42 @@ public: // may be called to terminate the dialog with the given return code virtual void EndModal(int retCode); - // returns True if we're in a modal loop - %extend { - bool IsModalShowing() { - #ifdef __WXGTK__ - return self->m_modalShowing; - #else - return self->IsModalShowing(); - #endif - } - } + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + %property(AffirmativeId, GetAffirmativeId, SetAffirmativeId, doc="See `GetAffirmativeId` and `SetAffirmativeId`"); + %property(EscapeId, GetEscapeId, SetEscapeId, doc="See `GetEscapeId` and `SetEscapeId`"); + %property(ReturnCode, GetReturnCode, SetReturnCode, doc="See `GetReturnCode` and `SetReturnCode`"); }; //--------------------------------------------------------------------------- %newgroup -class wxMiniFrame : public wxFrame { +MustHaveApp(wxMiniFrame); + +class wxMiniFrame : public wxFrame +{ public: %pythonAppend wxMiniFrame "self._setOORInfo(self)" %pythonAppend wxMiniFrame() "" - wxMiniFrame(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxPyFrameNameStr); - %name(PreMiniFrame)wxMiniFrame(); - - bool Create(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxPyFrameNameStr); + wxMiniFrame(wxWindow* parent, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxPyFrameNameStr); + %RenameCtor(PreMiniFrame, wxMiniFrame()); + bool Create(wxWindow* parent, + const wxWindowID id = -1, + const wxString& title = wxPyEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxPyFrameNameStr); }; @@ -303,7 +463,8 @@ public: %newgroup -enum { +enum +{ wxSPLASH_CENTRE_ON_PARENT, wxSPLASH_CENTRE_ON_SCREEN, wxSPLASH_NO_CENTRE, @@ -312,35 +473,49 @@ enum { }; +MustHaveApp(wxSplashScreenWindow); + class wxSplashScreenWindow: public wxWindow { public: %pythonAppend wxSplashScreenWindow "self._setOORInfo(self)" wxSplashScreenWindow(const wxBitmap& bitmap, - wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER); + wxWindow* parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxNO_BORDER); void SetBitmap(const wxBitmap& bitmap); wxBitmap& GetBitmap(); + + %property(Bitmap, GetBitmap, SetBitmap, doc="See `GetBitmap` and `SetBitmap`"); }; -class wxSplashScreen : public wxFrame { +MustHaveApp(wxSplashScreen); + +class wxSplashScreen : public wxFrame +{ public: %pythonAppend wxSplashScreen "self._setOORInfo(self)" - wxSplashScreen(const wxBitmap& bitmap, long splashStyle, int milliseconds, - wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSIMPLE_BORDER|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP); + wxSplashScreen(const wxBitmap& bitmap, + long splashStyle, int milliseconds, + wxWindow* parent, + wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR | wxSTAY_ON_TOP); long GetSplashStyle() const; wxSplashScreenWindow* GetSplashWindow() const; int GetTimeout() const; + + %property(SplashStyle, GetSplashStyle, doc="See `GetSplashStyle`"); + %property(SplashWindow, GetSplashWindow, doc="See `GetSplashWindow`"); + %property(Timeout, GetTimeout, doc="See `GetTimeout`"); };