]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/infoframe.py
Fix or add some DoGetBestSize's
[wxWidgets.git] / wxPython / wx / lib / infoframe.py
index b6d16fe2eb8d79a33be555038ed6acaf828ac7be..b1352b437d777755bb3c9999473a9831209cc1cc 100644 (file)
@@ -1,3 +1,9 @@
+# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
+#
+# o wxPyInformationalMessagesFrame -> PyInformationalMessagesFrame
+# o dummy_wxPyInformationalMessagesFrame -> dummy_PyInformationalMessagesFrame
+#
+
 """
 infoframe.py
 Released under wxWindows license etc.
@@ -30,7 +36,7 @@ Typical usage:
     from wxPython.lib.infoframe import *
     ... # ... modify your wxApp as follows:
     class myApp(wxApp):
-        outputWindowClass = wxPyInformationalMessagesFrame
+        outputWindowClass = PyInformationalMessagesFrame
         ...
 If you're running on Linux, you'll also have to supply an argument 1 to your
 constructor of myApp to redirect stdout/stderr to this window (it's done
@@ -39,7 +45,7 @@ automatically for you on Windows).
 If you don't want to redirect stdout/stderr, but use the class directly: do
 it this way:
 
- InformationalMessagesFrame = wxPyInformationalMessagesFrame\
+ InformationalMessagesFrame = PyInformationalMessagesFrame\
                                          ([options from progname (default ""),
                                            txt (default "informational
                                                          messages"])
@@ -117,61 +123,60 @@ write() which displays it's argument.
 All (well, most) of this is made clear by the example code at the end
 of this file, which is run if the file is run by itself; otherwise,
 see the appropriate "stub" file in the wxPython demo.
-
 """
 
-from wxPython.wx import *
-import sys, tempfile, os
+import  os
+import  sys
+import  tempfile
 
-class _MyStatusBar(wxStatusBar):
-    def __init__(self, parent,callbacks=None,useopenbutton=0):
-        wxStatusBar.__init__(self, parent, -1, style=wxTAB_TRAVERSAL)
+import  wx
+
+class _MyStatusBar(wx.StatusBar):
+    def __init__(self, parent, callbacks=None, useopenbutton=0):
+        wx.StatusBar.__init__(self, parent, -1, style=wx.TAB_TRAVERSAL)
         self.SetFieldsCount(3)
 
         self.SetStatusText("",0)
 
-        ID = wxNewId()
-        self.button1 = wxButton(self,ID,"Dismiss",
-                               style=wxTAB_TRAVERSAL)
-        EVT_BUTTON(self,ID,self.OnButton1)
+        self.button1 = wx.Button(self, -1, "Dismiss", style=wx.TAB_TRAVERSAL)
+        self.Bind(wx.EVT_BUTTON, self.OnButton1, self.button1)
 
-        ID = wxNewId()
         if not useopenbutton:
-            self.button2 = wxButton(self,ID,"Close File",
-                                   style=wxTAB_TRAVERSAL)
+            self.button2 = wx.Button(self, -1, "Close File", style=wx.TAB_TRAVERSAL)
         else:
-            self.button2 = wxButton(self,ID,"Open New File",
-                                   style=wxTAB_TRAVERSAL)
-        EVT_BUTTON(self,ID,self.OnButton2)
+            self.button2 = wx.Button(self, -1, "Open New File", style=wx.TAB_TRAVERSAL)
+
+        self.Bind(wx.EVT_BUTTON, self.OnButton2, self.button2)
         self.useopenbutton = useopenbutton
         self.callbacks = callbacks
 
         # figure out how tall to make the status bar
-        dc = wxClientDC(self)
+        dc = wx.ClientDC(self)
         dc.SetFont(self.GetFont())
         (w,h) = dc.GetTextExtent('X')
         h = int(h * 1.8)
-        self.SetSize(wxSize(100, h))
+        self.SetSize((100, h))
         self.OnSize("dummy")
-        EVT_SIZE(self,self.OnSize)
+        self.Bind(wx.EVT_SIZE, self.OnSize)
 
     # reposition things...
     def OnSize(self, event):
         self.CalculateSizes()
         rect = self.GetFieldRect(1)
-        self.button1.SetPosition(wxPoint(rect.x+5, rect.y+2))
-        self.button1.SetSize(wxSize(rect.width-10, rect.height-4))
+        self.button1.SetPosition((rect.x+5, rect.y+2))
+        self.button1.SetSize((rect.width-10, rect.height-4))
         rect = self.GetFieldRect(2)
-        self.button2.SetPosition(wxPoint(rect.x+5, rect.y+2))
-        self.button2.SetSize(wxSize(rect.width-10, rect.height-4))
+        self.button2.SetPosition((rect.x+5, rect.y+2))
+        self.button2.SetSize((rect.width-10, rect.height-4))
 
     # widths........
     def CalculateSizes(self):
-        dc = wxClientDC(self.button1)
+        dc = wx.ClientDC(self.button1)
         dc.SetFont(self.button1.GetFont())
         (w1,h) = dc.GetTextExtent(self.button1.GetLabel())
 
-        dc = wxClientDC(self.button2)
+        dc = wx.ClientDC(self.button2)
         dc.SetFont(self.button2.GetFont())
         (w2,h) = dc.GetTextExtent(self.button2.GetLabel())
 
@@ -185,6 +190,7 @@ class _MyStatusBar(wxStatusBar):
                 self.button2.SetLabel ("Close File")
         elif self.callbacks[1] ():
                 self.button2.SetLabel ("Open New File")
+
         self.useopenbutton = 1 - self.useopenbutton
         self.OnSize("")
         self.button2.Refresh(True)
@@ -192,7 +198,7 @@ class _MyStatusBar(wxStatusBar):
 
 
 
-class wxPyInformationalMessagesFrame:
+class PyInformationalMessagesFrame:
     def __init__(self,
                  progname="",
                  text="informational messages",
@@ -217,6 +223,7 @@ class wxPyInformationalMessagesFrame:
         self.title  = "%s %s" % (progname,text)
         self.parent = None # use the SetParent method if desired...
         self.softspace = 1 # of rather limited use
+
         if dir:
             self.SetOutputDirectory(dir)
 
@@ -239,11 +246,15 @@ class wxPyInformationalMessagesFrame:
     f = None
 
 
-    def write(self,string):
-        if not wxThread_IsMain():
+    def write(self, string):
+        if not wx.Thread_IsMain():
             # Aquire the GUI mutex before making GUI calls.  Mutex is released
             # when locker is deleted at the end of this function.
-            locker = wxMutexGuiLocker()
+            #
+            # TODO: This should be updated to use wx.CallAfter similarly to how
+            # PyOnDemandOutputWindow.write was so it is not necessary
+            # to get the gui mutex
+            locker = wx.MutexGuiLocker()
 
         if self.Enabled:
             if self.f:
@@ -257,10 +268,11 @@ class wxPyInformationalMessagesFrame:
                 move = 0
 
             if not self.frame:
-                self.frame = wxFrame(self.parent, -1, self.title, size=(450, 300),
-                                     style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)
-                self.text  = wxTextCtrl(self.frame, -1, "",
-                                        style = wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH)
+                self.frame = wx.Frame(self.parent, -1, self.title, size=(450, 300),
+                                     style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
+
+                self.text  = wx.TextCtrl(self.frame, -1, "",
+                                        style = wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_RICH)
 
                 self.frame.sb = _MyStatusBar(self.frame,
                                              callbacks=[self.DisableOutput,
@@ -270,7 +282,7 @@ class wxPyInformationalMessagesFrame:
                                                                   "nofile"))
                 self.frame.SetStatusBar(self.frame.sb)
                 self.frame.Show(True)
-                EVT_CLOSE(self.frame, self.OnCloseWindow)
+                self.frame.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
 
                 if hasattr(self,"nofile"):
                     self.text.AppendText(
@@ -284,6 +296,7 @@ class wxPyInformationalMessagesFrame:
                 else:
                     tempfile.tempdir = self.dir
                     filename = os.path.abspath(tempfile.mktemp ())
+
                     self.text.AppendText(
                         "Please close this window (or select the "
                         "'Dismiss' button below) when desired.  By "
@@ -389,10 +402,10 @@ class wxPyInformationalMessagesFrame:
 
     def OpenNewFile(self):
         self.CloseFile()
-        dlg = wxFileDialog(self.frame,
+        dlg = wx.FileDialog(self.frame,
                           "Choose a new log file", self.dir,"","*",
-                           wxSAVE | wxHIDE_READONLY | wxOVERWRITE_PROMPT)
-        if dlg.ShowModal() == wxID_CANCEL:
+                           wx.SAVE | wx.HIDE_READONLY | wx.OVERWRITE_PROMPT)
+        if dlg.ShowModal() == wx.ID_CANCEL:
             dlg.Destroy()
             return 0
         else:
@@ -434,7 +447,7 @@ class wxPyInformationalMessagesFrame:
     def flush(self):
         if self.text:
             self.text.SetInsertionPointEnd()
-        wxYield()
+        wx.Yield()
 
 
     def __call__(self,* args):
@@ -449,7 +462,7 @@ class wxPyInformationalMessagesFrame:
 
 
 
-class Dummy_wxPyInformationalMessagesFrame:
+class Dummy_PyInformationalMessagesFrame:
     def __init__(self,progname=""):
         self.softspace = 1
     def __call__(self,*args):