X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3eb221f6ddaa07c971d1701d6e47627f16427ca9..55f9f0cbc8dcf45f8d484b2f931c5c254d4404d1:/wxPython/src/misc2.i diff --git a/wxPython/src/misc2.i b/wxPython/src/misc2.i index 22a8d2d7b7..c719f1e09d 100644 --- a/wxPython/src/misc2.i +++ b/wxPython/src/misc2.i @@ -32,6 +32,9 @@ #endif #include +#include +#include +//#include %} //---------------------------------------------------------------------- @@ -175,9 +178,12 @@ void wxFlushEvents(); wxWindow* wxGetTopLevelParent(wxWindow *win); +//bool wxSpawnBrowser(wxWindow *parent, wxString href); + //--------------------------------------------------------------------------- // Resource System +#ifdef wxUSE_WX_RESOURCES bool wxResourceAddIdentifier(char* name, int value); void wxResourceClear(void); wxBitmap wxResourceCreateBitmap(char* resource); @@ -187,6 +193,7 @@ int wxResourceGetIdentifier(char* name); bool wxResourceParseData(char* resource, wxResourceTable *table = NULL); bool wxResourceParseFile(char* filename, wxResourceTable *table = NULL); bool wxResourceParseString(char* resource, wxResourceTable *table = NULL); +#endif //--------------------------------------------------------------------------- // System Settings @@ -402,7 +409,7 @@ public: //---------------------------------------------------------------------- -bool wxSafeYield(wxWindow* win=NULL); +bool wxSafeYield(wxWindow* win=NULL, bool onlyIfNeeded=FALSE); void wxPostEvent(wxEvtHandler *dest, wxEvent& event); void wxWakeUpIdle(); @@ -443,7 +450,7 @@ public: virtual wxString GetTip() = 0; size_t GetCurrentTip(); - + virtual wxString PreprocessTip(const wxString& tip); }; @@ -455,12 +462,12 @@ public: : wxTipProvider(currentTip) {} DEC_PYCALLBACK_STRING__pure(GetTip); - + DEC_PYCALLBACK_STRING_STRING(PreprocessTip); PYPRIVATE; }; IMP_PYCALLBACK_STRING__pure( wxPyTipProvider, wxTipProvider, GetTip); - +IMP_PYCALLBACK_STRING_STRING(wxPyTipProvider, wxTipProvider, PreprocessTip); %} @@ -468,6 +475,9 @@ IMP_PYCALLBACK_STRING__pure( wxPyTipProvider, wxTipProvider, GetTip); class wxPyTipProvider : public wxTipProvider { public: wxPyTipProvider(size_t currentTip); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyTipProvider)" }; @@ -501,8 +511,10 @@ public: bool BeginDrag(const wxPoint& hotspot, wxWindow* window, bool fullScreen = FALSE, wxRect* rect = NULL); - %name(BeginDrag2) bool BeginDrag(const wxPoint& hotspot, wxWindow* window, - wxWindow* fullScreenRect); + %name(BeginDragBounded) bool BeginDrag(const wxPoint& hotspot, wxWindow* window, + wxWindow* boundingWindow); + + %pragma(python) addtoclass = "BeginDrag2 = BeginDragBounded" bool EndDrag(); bool Move(const wxPoint& pt); @@ -595,8 +607,6 @@ public: static void OnLog(unsigned long level, const wxString& szString, int t=0); virtual void Flush(); - bool HasPendingMessages() const; - static void FlushActive(); static wxLog *GetActiveTarget(); static wxLog *SetActiveTarget(wxLog *pLogger); @@ -611,6 +621,7 @@ public: static void AddTraceMask(const wxString& str); static void RemoveTraceMask(const wxString& str); static void ClearTraceMasks(); + static const wxArrayString &GetTraceMasks(); static void SetTimestamp(const wxString& ts); static const wxString& GetTimestamp(); @@ -620,6 +631,10 @@ public: static unsigned long GetTraceMask(); static bool IsAllowedTraceMask(const wxString& mask); + static void SetLogLevel(unsigned long logLevel); + static unsigned long GetLogLevel(); + + // static void TimeStamp(wxString *str); %addmethods { wxString TimeStamp() { @@ -686,6 +701,7 @@ void wxLogError(const wxString& msg); void wxLogWarning(const wxString& msg); void wxLogMessage(const wxString& msg); void wxLogInfo(const wxString& msg); +void wxLogDebug(const wxString& msg); void wxLogVerbose(const wxString& msg); void wxLogStatus(const wxString& msg); %name(wxLogStatusFrame)void wxLogStatus(wxFrame *pFrame, const wxString& msg); @@ -763,12 +779,47 @@ public: //---------------------------------------------------------------------- +enum wxKillError +{ + wxKILL_OK, // no error + wxKILL_BAD_SIGNAL, // no such signal + wxKILL_ACCESS_DENIED, // permission denied + wxKILL_NO_PROCESS, // no such process + wxKILL_ERROR // another, unspecified error +}; + +enum wxSignal +{ + wxSIGNONE = 0, // verify if the process exists under Unix + wxSIGHUP, + wxSIGINT, + wxSIGQUIT, + wxSIGILL, + wxSIGTRAP, + wxSIGABRT, + wxSIGIOT = wxSIGABRT, // another name + wxSIGEMT, + wxSIGFPE, + wxSIGKILL, + wxSIGBUS, + wxSIGSEGV, + wxSIGSYS, + wxSIGPIPE, + wxSIGALRM, + wxSIGTERM + + // further signals are different in meaning between different Unix systems +}; + + + enum { /* event type */ wxEVT_END_PROCESS }; + class wxProcessEvent : public wxEvent { public: wxProcessEvent(int id = 0, int pid = 0, int exitcode = 0); @@ -800,6 +851,23 @@ IMP_PYCALLBACK_VOID_INTINT( wxPyProcess, wxProcess, OnTerminate); %name(wxProcess)class wxPyProcess : public wxEvtHandler { public: + // kill the process with the given PID + static wxKillError Kill(int pid, wxSignal sig = wxSIGTERM); + + // test if the given process exists + static bool Exists(int pid); + + // this function replaces the standard popen() one: it launches a process + // asynchronously and allows the caller to get the streams connected to its + // std{in|out|err} + // + // on error NULL is returned, in any case the process object will be + // deleted automatically when the process terminates and should *not* be + // deleted by the caller + static wxPyProcess *Open(const wxString& cmd, int flags = wxEXEC_ASYNC); + + + wxPyProcess(wxEvtHandler *parent = NULL, int id = -1); %addmethods { void Destroy() { delete self; } } @@ -817,6 +885,13 @@ public: wxOutputStream *GetOutputStream(); void CloseOutput(); + + // return TRUE if the child process stdout is not closed + bool IsInputOpened() const; + + // return TRUE if any input is available on the child process stdout/err + bool IsInputAvailable() const; + bool IsErrorAvailable() const; }; @@ -1040,10 +1115,10 @@ class wxFileTypeInfo public: // ctors // a normal item - wxFileTypeInfo(const char* mimeType, - const char* openCmd, - const char* printCmd, - const char* desc); + wxFileTypeInfo(const wxString& mimeType, + const wxString& openCmd, + const wxString& printCmd, + const wxString& desc); // the array elements correspond to the parameters of the ctor above in @@ -1137,7 +1212,7 @@ public: wxString str; if (self->GetMimeType(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1187,9 +1262,9 @@ public: wxPyBeginBlockThreads(); PyObject* tuple = PyTuple_New(3); PyTuple_SetItem(tuple, 0, wxPyConstructObject(new wxIcon(icon), - "wxIcon", TRUE)); + wxT("wxIcon"), TRUE)); #if wxUSE_UNICODE - PyTuple_SetItem(tuple, 1, PyUnicode_FromUnicode(iconFile.c_str(), iconFile.Len())); + PyTuple_SetItem(tuple, 1, PyUnicode_FromWideChar(iconFile.c_str(), iconFile.Len())); #else PyTuple_SetItem(tuple, 1, PyString_FromStringAndSize(iconFile.c_str(), iconFile.Len())); #endif @@ -1208,7 +1283,7 @@ public: wxString str; if (self->GetDescription(&str)) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1225,7 +1300,7 @@ public: wxString str; if (self->GetOpenCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1242,7 +1317,7 @@ public: wxString str; if (self->GetPrintCommand(&str, wxFileType::MessageParameters(filename, mimetype))) { #if wxUSE_UNICODE - return PyUnicode_FromUnicode(str.c_str(), str.Len()); + return PyUnicode_FromWideChar(str.c_str(), str.Len()); #else return PyString_FromStringAndSize(str.c_str(), str.Len()); #endif @@ -1321,7 +1396,7 @@ public: // // use the extraDir parameter if you want to look for files in another // directory - void Initialize(int mailcapStyle = wxMAILCAP_STANDARD, + void Initialize(int mailcapStyle = wxMAILCAP_ALL, const wxString& extraDir = wxPyEmptyString); // and this function clears all the data from the manager @@ -1404,49 +1479,49 @@ extern wxMimeTypesManager* wxTheMimeTypesManager; %} -// Art clients -#define wxART_TOOLBAR "toolbar_C" -#define wxART_MENU "menu_C" -#define wxART_FRAME_ICON "frame_icon_C" - -#define wxART_CMN_DIALOG "cmn_dialog_C" -#define wxART_HELP_BROWSER "help_browser_C" -#define wxART_MESSAGE_BOX "message_box_C" - -#define wxART_OTHER "other_C" - -// Art IDs -#define wxART_ADD_BOOKMARK "add_bookmark" -#define wxART_DEL_BOOKMARK "del_bookmark" -#define wxART_HELP_SIDE_PANEL "help_side_panel" -#define wxART_HELP_SETTINGS "help_settings" -#define wxART_HELP_BOOK "help_book" -#define wxART_HELP_FOLDER "help_folder" -#define wxART_HELP_PAGE "help_page" -#define wxART_GO_BACK "go_back" -#define wxART_GO_FORWARD "go_forward" -#define wxART_GO_UP "go_up" -#define wxART_GO_DOWN "go_down" -#define wxART_GO_TO_PARENT "go_to_parent" -#define wxART_GO_HOME "go_home" -#define wxART_FILE_OPEN "file_open" -#define wxART_PRINT "print" -#define wxART_HELP "help" -#define wxART_TIP "tip" -#define wxART_REPORT_VIEW "report_view" -#define wxART_LIST_VIEW "list_view" -#define wxART_NEW_DIR "new_dir" -#define wxART_FOLDER "folder" -#define wxART_GO_DIR_UP "go_dir_up" -#define wxART_EXECUTABLE_FILE "executable_file" -#define wxART_NORMAL_FILE "normal_file" -#define wxART_TICK_MARK "tick" -#define wxART_CROSS_MARK "cross" -#define wxART_ERROR "error" -#define wxART_QUESTION "question" -#define wxART_WARNING "warning" -#define wxART_INFORMATION "information" - +%pragma(python) code = " +# Art clients +wxART_TOOLBAR = 'wxART_TOOLBAR_C' +wxART_MENU = 'wxART_MENU_C' +wxART_FRAME_ICON = 'wxART_FRAME_ICON_C' +wxART_CMN_DIALOG = 'wxART_CMN_DIALOG_C' +wxART_HELP_BROWSER = 'wxART_HELP_BROWSER_C' +wxART_MESSAGE_BOX = 'wxART_MESSAGE_BOX_C' +wxART_OTHER = 'wxART_OTHER_C' + +# Art IDs +wxART_ADD_BOOKMARK = 'wxART_ADD_BOOKMARK' +wxART_DEL_BOOKMARK = 'wxART_DEL_BOOKMARK' +wxART_HELP_SIDE_PANEL = 'wxART_HELP_SIDE_PANEL' +wxART_HELP_SETTINGS = 'wxART_HELP_SETTINGS' +wxART_HELP_BOOK = 'wxART_HELP_BOOK' +wxART_HELP_FOLDER = 'wxART_HELP_FOLDER' +wxART_HELP_PAGE = 'wxART_HELP_PAGE' +wxART_GO_BACK = 'wxART_GO_BACK' +wxART_GO_FORWARD = 'wxART_GO_FORWARD' +wxART_GO_UP = 'wxART_GO_UP' +wxART_GO_DOWN = 'wxART_GO_DOWN' +wxART_GO_TO_PARENT = 'wxART_GO_TO_PARENT' +wxART_GO_HOME = 'wxART_GO_HOME' +wxART_FILE_OPEN = 'wxART_FILE_OPEN' +wxART_PRINT = 'wxART_PRINT' +wxART_HELP = 'wxART_HELP' +wxART_TIP = 'wxART_TIP' +wxART_REPORT_VIEW = 'wxART_REPORT_VIEW' +wxART_LIST_VIEW = 'wxART_LIST_VIEW' +wxART_NEW_DIR = 'wxART_NEW_DIR' +wxART_FOLDER = 'wxART_FOLDER' +wxART_GO_DIR_UP = 'wxART_GO_DIR_UP' +wxART_EXECUTABLE_FILE = 'wxART_EXECUTABLE_FILE' +wxART_NORMAL_FILE = 'wxART_NORMAL_FILE' +wxART_TICK_MARK = 'wxART_TICK_MARK' +wxART_CROSS_MARK = 'wxART_CROSS_MARK' +wxART_ERROR = 'wxART_ERROR' +wxART_QUESTION = 'wxART_QUESTION' +wxART_WARNING = 'wxART_WARNING' +wxART_INFORMATION = 'wxART_INFORMATION' +wxART_MISSING_IMAGE = 'wxART_MISSING_IMAGE' +" %{ // Python aware wxArtProvider class wxPyArtProvider : public wxArtProvider { @@ -1458,7 +1533,7 @@ public: wxBitmap rval = wxNullBitmap; wxPyBeginBlockThreads(); if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) { - PyObject* so = wxPyConstructObject((void*)&size, "wxSize", 0); + PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0); PyObject* ro; wxBitmap* ptr; PyObject* s1, *s2; @@ -1513,8 +1588,6 @@ public: const wxString& client = wxPyART_OTHER, const wxSize& size = wxDefaultSize); - // Destroy caches & all providers - static void CleanUpProviders(); }; @@ -1555,19 +1628,68 @@ public: }; //---------------------------------------------------------------------- + +class wxEffects: public wxObject +{ +public: + // Assume system colours + wxEffects(); + + wxColour GetHighlightColour() const; + wxColour GetLightShadow() const; + wxColour GetFaceColour() const; + wxColour GetMediumShadow() const; + wxColour GetDarkShadow() const; + + void SetHighlightColour(const wxColour& c); + void SetLightShadow(const wxColour& c); + void SetFaceColour(const wxColour& c); + void SetMediumShadow(const wxColour& c); + void SetDarkShadow(const wxColour& c); + + void Set(const wxColour& highlightColour, const wxColour& lightShadow, + const wxColour& faceColour, const wxColour& mediumShadow, + const wxColour& darkShadow); + + // Draw a sunken edge + void DrawSunkenEdge(wxDC& dc, const wxRect& rect, int borderSize = 1); + + // Tile a bitmap + bool TileBitmap(const wxRect& rect, wxDC& dc, wxBitmap& bitmap); + +}; + //---------------------------------------------------------------------- -// %{ -// #if wxUSE_UNICODE -// #define ADD_STRING(dict, str) \ -// wxString tmp##str(str); \ -// PyDict_SetItemString(dict, #str, \ -// PyUnicode_FromUnicode(tmp##str.c_str(), tmp##str.Len())) -// #else -// #define ADD_STRING(dict, str) \ -// PyDict_SetItemString(d, #str, PyString_FromString(str)) -// #endif -// %} +class wxSingleInstanceChecker +{ +public: + // like Create() but no error checking (dangerous!) + wxSingleInstanceChecker(const wxString& name, + const wxString& path = wxPyEmptyString); + + // default ctor, use Create() after it + %name(wxPreSingleInstanceChecker) wxSingleInstanceChecker(); + + ~wxSingleInstanceChecker(); + + + // name must be given and be as unique as possible, it is used as the mutex + // name under Win32 and the lock file name under Unix - + // wxTheApp->GetAppName() may be a good value for this parameter + // + // path is optional and is ignored under Win32 and used as the directory to + // create the lock file in under Unix (default is wxGetHomeDir()) + // + // returns FALSE if initialization failed, it doesn't mean that another + // instance is running - use IsAnotherRunning() to check it + bool Create(const wxString& name, const wxString& path = wxPyEmptyString); + + // is another copy of this program already running? + bool IsAnotherRunning() const; +}; + +//---------------------------------------------------------------------- %init %{