Some wxPython interface change updates. Moved refresh button. Platform

sensitive defaults for external browser. uses wxYield instead of (silly)
quicktimer hack.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Harco de Hilster 1999-02-24 00:46:09 +00:00
parent afc48cd0d8
commit 3cc7ea5302

View File

@ -6,7 +6,7 @@ import os
import re import re
import formatter import formatter
__doc__ = """This is wxSlash 1.0 __doc__ = """This is wxSlash 1.1
It's the obligatory Slashdot.org headlines reader that any modern It's the obligatory Slashdot.org headlines reader that any modern
widget set/library must have in order to be taken seriously :-) widget set/library must have in order to be taken seriously :-)
@ -17,7 +17,7 @@ friendly format. It then displays said headlines in a wxWindows list control.
You can read articles using either Python's html library or an external You can read articles using either Python's html library or an external
browser. Uncheck the 'browser->internal' menu item to use the latter option. browser. Uncheck the 'browser->internal' menu item to use the latter option.
Use the settings dialog box to set how external browser is started. Use the settings dialog box to set which external browser is started.
This code is available under the wxWindows license, see elsewhere. If you This code is available under the wxWindows license, see elsewhere. If you
modify this code, be aware of the fact that slashdot.org's maintainer, modify this code, be aware of the fact that slashdot.org's maintainer,
@ -148,30 +148,20 @@ class AppStatusBar(wxStatusBar):
def __init__(self, parent): def __init__(self, parent):
wxStatusBar.__init__(self,parent, -1) wxStatusBar.__init__(self,parent, -1)
self.SetFieldsCount(2) self.SetFieldsCount(2)
self.SetStatusWidths([100,-1]) self.SetStatusWidths([-1, 100])
self.but = wxButton(self, 1001, "Refresh") self.but = wxButton(self, 1001, "Refresh")
EVT_BUTTON(self, 1001, parent.OnViewRefresh) EVT_BUTTON(self, 1001, parent.OnViewRefresh)
self.OnSize(None) self.OnSize(None)
def logprint(self,x): def logprint(self,x):
self.SetStatusText(x,1) self.SetStatusText(x,0)
def OnSize(self, event): def OnSize(self, event):
rect = self.GetFieldRect(0) rect = self.GetFieldRect(1)
self.but.SetPosition(wxPoint(rect.x+2, rect.y+2)) self.but.SetPosition(wxPoint(rect.x+2, rect.y+2))
# The width/height we get is false. Why? Now I use a stupid trick:
rect2 = self.GetFieldRect(1)
rect.width = rect2.x - 8;
rect.height = 25;
self.but.SetSize(wxSize(rect.width-4, rect.height-4)) self.but.SetSize(wxSize(rect.width-4, rect.height-4))
# This is a simple timer class to start a function after a short delay; # This is a simple timer class to start a function after a short delay;
# For example, if you're about to perform function f which may take a long
# time, write "Please wait" in the statusbar, then create a QuickTimer(f)
# object to automatically call f after a short delay. That way, wxWindows
# will get a chance to update the statusbar before the long function is
# called.
# FIXME: can this be done better using an OnIdle kind of thing?
class QuickTimer(wxTimer): class QuickTimer(wxTimer):
def __init__(self, func, wait=100): def __init__(self, func, wait=100):
wxTimer.__init__(self) wxTimer.__init__(self)
@ -219,8 +209,16 @@ class AppFrame(wxFrame):
self.SetMenuBar(self.mainmenu) self.SetMenuBar(self.mainmenu)
self.BrowserSettings = "netscape -remote 'OpenURL(%s, new_window)'" if wxPlatform == '__WXGTK__':
# I like lynx. Also Netscape 4.5 doesn't react to my cmdline opts
self.BrowserSettings = "xterm -e lynx %s &"
elif wxPlatform == '__WXMSW__':
# netscape 4.x likes to hang out here...
self.BrowserSettings = '\progra~1\Netscape\Communicator\Program\netscape.exe %s'
else:
# a wild guess...
self.BrowserSettings = 'netscape %s'
# A status bar to tell people what's happening # A status bar to tell people what's happening
self.sb = AppStatusBar(self) self.sb = AppStatusBar(self)
self.SetStatusBar(self.sb) self.SetStatusBar(self.sb)
@ -239,7 +237,9 @@ class AppFrame(wxFrame):
EVT_LIST_ITEM_SELECTED(self, 1100, self.OnItemSelected) EVT_LIST_ITEM_SELECTED(self, 1100, self.OnItemSelected)
self.logprint("Connecting to slashdot... Please wait.") self.logprint("Connecting to slashdot... Please wait.")
# Need a longer time here. Don't really know why # wxYield doesn't yet work here. That's why we use a timer
# to make sure that we see some GUI stuff before the slashdot
# file is transfered.
self.timer = QuickTimer(self.DoRefresh, 1000) self.timer = QuickTimer(self.DoRefresh, 1000)
def logprint(self, x): def logprint(self, x):
@ -257,16 +257,17 @@ class AppFrame(wxFrame):
i = 0; i = 0;
for article in art_list: for article in art_list:
self.list.InsertStringItem(i, article[0]) self.list.InsertStringItem(i, article[0])
self.list.SetItemString(i, 1, article[2]) self.list.SetStringItem(i, 1, article[2])
self.list.SetItemString(i, 2, article[3]) self.list.SetStringItem(i, 2, article[3])
self.list.SetItemString(i, 3, article[6]) self.list.SetStringItem(i, 3, article[6])
self.url.append(article[1]) self.url.append(article[1])
i = i + 1 i = i + 1
self.logprint("File retrieved OK.") self.logprint("File retrieved OK.")
def OnViewRefresh(self, event): def OnViewRefresh(self, event):
self.timer = QuickTimer(self.DoRefresh)
self.logprint("Connecting to slashdot... Please wait."); self.logprint("Connecting to slashdot... Please wait.");
wxYield()
self.DoRefresh()
def DoViewIndex(self): def DoViewIndex(self):
if self.UseInternal: if self.UseInternal:
@ -280,7 +281,8 @@ class AppFrame(wxFrame):
def OnViewIndex(self, event): def OnViewIndex(self, event):
self.logprint("Starting browser... Please wait.") self.logprint("Starting browser... Please wait.")
self.timer = QuickTimer(self.DoViewIndex) wxYield()
self.DoViewIndex()
def DoViewArticle(self): def DoViewArticle(self):
if self.current<0: return if self.current<0: return
@ -295,7 +297,8 @@ class AppFrame(wxFrame):
def OnViewArticle(self, event): def OnViewArticle(self, event):
self.logprint("Starting browser... Please wait.") self.logprint("Starting browser... Please wait.")
self.timer = QuickTimer(self.DoViewArticle) wxYield()
self.DoViewArticle()
def OnBrowserInternal(self, event): def OnBrowserInternal(self, event):
if self.mainmenu.Checked(220): if self.mainmenu.Checked(220):