[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/forms/src/uidrivers/win32 GFwin32App.py UI...
From: |
Bajusz Tamás |
Subject: |
gnue/forms/src/uidrivers/win32 GFwin32App.py UI... |
Date: |
Sun, 02 Mar 2003 17:45:13 -0500 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: Bajusz Tamás <address@hidden> 03/03/02 17:45:12
Modified files:
forms/src/uidrivers/win32: GFwin32App.py UIdriver.py common.py
forms/src/uidrivers/win32/widgets: _base.py box.py button.py
entry.py label.py
forms/src/uidrivers/win32/widgets/form: widget.py wrappers.py
Log message:
More work on win32 driver
* statusbar
* initFont
* menubar/toolbar events
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/GFwin32App.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/UIdriver.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/common.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/_base.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/box.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/button.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/entry.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/label.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/form/widget.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: gnue/forms/src/uidrivers/win32/GFwin32App.py
diff -c gnue/forms/src/uidrivers/win32/GFwin32App.py:1.1
gnue/forms/src/uidrivers/win32/GFwin32App.py:1.2
*** gnue/forms/src/uidrivers/win32/GFwin32App.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/GFwin32App.py Sun Mar 2 17:45:12 2003
***************
*** 1,30 ****
! import win32gui
from gnue.common.apps import GDebug
__win32App = None
def getWin32App():
global __win32App
-
if not __win32App:
- GDebug.printMesg(7,"Win32App initializing")
__win32App = GFwin32App()
return __win32App
class GFwin32App:
! _mainLoop= None
!
! def OnInit(self):
! GDebug.printMesg(7,"Win32App initializing")
! #wxInitAllImageHandlers()
! return true
! def MainLoop (self):
# just to launch one win32's mainloop
# otherwise, the app does not finishes cleanly when several windows
are open
# 'cause the first mainloop gets all the events
# and the others just sit and wait for something to happen
#if self._mainLoop==None:
# self._mainLoop= 1
win32gui.PumpMessages()
--- 1,29 ----
! import win32gui, win32con
from gnue.common.apps import GDebug
__win32App = None
def getWin32App():
global __win32App
if not __win32App:
__win32App = GFwin32App()
return __win32App
+
class GFwin32App:
! _mainLoop= None
!
! def __init__(self):
! print "Win32App initializing"
! #wxInitAllImageHandlers()
! def MainLoop (self):
# just to launch one win32's mainloop
# otherwise, the app does not finishes cleanly when several windows
are open
# 'cause the first mainloop gets all the events
# and the others just sit and wait for something to happen
#if self._mainLoop==None:
# self._mainLoop= 1
+ print "win32gui.PumpMessages()"
win32gui.PumpMessages()
Index: gnue/forms/src/uidrivers/win32/UIdriver.py
diff -c gnue/forms/src/uidrivers/win32/UIdriver.py:1.1
gnue/forms/src/uidrivers/win32/UIdriver.py:1.2
*** gnue/forms/src/uidrivers/win32/UIdriver.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/UIdriver.py Sun Mar 2 17:45:12 2003
***************
*** 50,63 ****
_PROMPTFORRECORD = None
def treeShow(object, uiDriver):
try:
! # print "Object ",object, object.show(), object.GetParent(),
uiDriver._IdToGFObj[object.GetId()]
! object.show()
except KeyError:
! print "Object ",object, object.show(), object.GetParent(),
"NONE!!!!!!!!!!!!!"
for child in object.GetChildren():
treeShow(child, uiDriver)
!
#
# GFUserInterface
--- 50,85 ----
_PROMPTFORRECORD = None
def treeShow(object, uiDriver):
try:
! print "Object ",object, object.Show(), object.GetParent(),
uiDriver._IdToGFObj[object.GetId()]
except KeyError:
! print "Object ",object, object.Show(), object.GetParent(),
"NONE!!!!!!!!!!!!!"
for child in object.GetChildren():
treeShow(child, uiDriver)
!
!
! def OnWMLButtonDown(hwnd, msg, wParam, lParam, widget):
! print "OnWMLButtonDown hwnd,widget=",hwnd,widget
! return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
!
! def OnWMDestroy(hwnd, msg, wParam, lParam, widget):
! win32gui.PostQuitMessage(0) # Terminate the app.
!
! def OnWMClose(hwnd, msg, wParam, lParam, widget):
! win32gui.DestroyWindow(hwnd)
!
! #def OnWMPaint(hwnd, msg, wParam, lParam, widget):
! # return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
!
! #def OnWMSize(hwnd, msg, wParam, lParam, widget):
! # return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
!
! def OnWMCommand(hwnd, msg, wParam, lParam, widget):
! return widget.OnWMCommand(hwnd, msg, wParam, lParam)
!
! def OnWMDefault(hwnd, msg, wParam, lParam, widget):
! return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
!
#
# GFUserInterface
***************
*** 66,71 ****
--- 88,104 ----
# All UIs must provide this class
#
class GFUserInterface(GFUserInterfaceBase):
+ _wndclass = None
+
+ _message_map = {
+ win32con.WM_LBUTTONDOWN : OnWMLButtonDown,
+ win32con.WM_DESTROY : OnWMDestroy,
+ win32con.WM_CLOSE : OnWMClose,
+ # win32con.WM_SIZE : OnWMSize,
+ win32con.WM_COMMAND : OnWMCommand,
+ # win32con.WM_PAINT : OnWMPaint,
+ }
+
def __init__(self, eventController, disableSplash = None):
GFUserInterfaceBase.__init__(self,eventController)
***************
*** 83,127 ****
self._disabledColour = afxres.AFX_IDC_COLOR_LIGHTGRAY
-
- def OnDestroy(self, hwnd, msg, wparam, lparam):
- win32gui.PostQuitMessage(0) # Terminate the app.
-
- def OnPaint(self, hwnd, msg, wparam, lparam):
- print 'OnPaint'
-
- def OnSize(self, hwnd, msg, wparam, lparam):
- print 'OnSize'
-
- def OnCommand(self, hwnd, msg, wparam, lparam):
- print 'OnCommand'
-
- def initialize(self):
################################################################
# win32 Specifics
################################################################
win32gui.InitCommonControls()
- self._win32app = getWin32App()
- message_map = {
- win32con.WM_DESTROY: self.OnDestroy,
- win32con.WM_PAINT: self.OnPaint,
- win32con.WM_SIZE: self.OnSize,
- win32con.WM_COMMAND: self.OnCommand,
- }
# Register the "GNUeWindow" class.
wc = win32gui.WNDCLASS()
wc.lpszClassName = "GNUeWindow"
wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW )
wc.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
wc.hbrBackground = win32con.COLOR_WINDOW
! wc.lpfnWndProc = message_map # could also specify a wndproc.
! win32gui.RegisterClass(wc)
! ##font = win32gui.GetStockObject(win32con.ANSI_FIXED_FONT) # Courier
! ##font.setPointSize(int(gConfig('pointSize')))
! ##setWidgetBaseFont(font)
#
# SplashScreen
--- 116,151 ----
self._disabledColour = afxres.AFX_IDC_COLOR_LIGHTGRAY
################################################################
# win32 Specifics
################################################################
win32gui.InitCommonControls()
# Register the "GNUeWindow" class.
wc = win32gui.WNDCLASS()
wc.lpszClassName = "GNUeWindow"
wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW )
wc.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
wc.hbrBackground = win32con.COLOR_WINDOW
! wc.lpfnWndProc = self._wndproc
! self.__class__._wndclass = win32gui.RegisterClass(wc)
+ def _wndproc(self, hwnd, msg, wParam, lParam):
+ try:
+ widget = self._IdToWin32Obj[hwnd]
+ #print "idget calling _wndproc", widget, hwnd
+ except:
+ return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
+ try:
+ OnWM = self._message_map.get(msg, OnWMDefault)
+ x = OnWM(hwnd, msg, wParam, lParam, widget)
+ except:
+ x = -1
+ return x
!
! def initialize(self):
! self._win32app = getWin32App()
#
# SplashScreen
***************
*** 135,162 ****
#
# Create a dummy window used to compute sizes
#
! ## dummyWindow = wxFrame(NULL, -1, "", wxDefaultPosition)
! ## initFont(dummyWindow,1)
!
! #
! # Find the max size of printable characters
! # used to setup the grid
! #
! ## maxWidth, maxHeight, maxDescent, maxLeading = [0,0,0,0]
! ## checkchars = string.printable
! ## for letter in checkchars:
! ## width,height,descent,leading = dummyWindow.GetFullTextExtent(letter)
! ## maxWidth = max(maxWidth,width)
! ## maxHeight = max(maxHeight,height)
! ## maxDescent = max(maxDescent,descent)
! ## maxLeading = max(maxLeading,leading)
!
! ### Made-up numbers :)
! maxWidth=12
! maxHeight = 20
! maxDescent = 4
! maxLeading = 6
! ###
self.textWidth = int(maxWidth+maxLeading) # The pixel width of text
inside a widget
self.textHeight = int(maxHeight+maxDescent) # The pixel height of text
inside a widget
--- 159,177 ----
#
# Create a dummy window used to compute sizes
#
! from pywin.mfc import window
! font_spec = {'name':'Courier New', 'height':int(gConfig('pointSize'))}
! font = win32ui.CreateFont (font_spec)
! dummyWindow = window.Wnd(win32ui.CreateWnd())
! dc = dummyWindow.GetWindowDC()
! dc.SelectObject (font)
! metrics = dc.GetTextMetrics()
! print metrics.items()
! maxWidth = metrics["tmMaxCharWidth"]
! maxHeight = metrics["tmHeight"]
! maxDescent = metrics["tmDescent"]
! maxLeading = metrics["tmInternalLeading"]
! print "GetFullTextExtent",maxWidth,maxHeight,maxDescent,maxLeading
self.textWidth = int(maxWidth+maxLeading) # The pixel width of text
inside a widget
self.textHeight = int(maxHeight+maxDescent) # The pixel height of text
inside a widget
***************
*** 166,172 ****
#
# Close dummy window so app doesn't hang when all other windows closed
#
! ## dummyWindow.Close()
--- 181,187 ----
#
# Close dummy window so app doesn't hang when all other windows closed
#
! # dummyWindow.Close()
***************
*** 176,194 ****
# Go ahead and display
# TODO : hack!!!!!!!!!!!!!!
- print self._formNameToUIForm.keys()
for key in self._formNameToUIForm.keys():
if self._formNameToUIForm[key]._form == form:
break
- print "key:",key
## self._formNameToUIForm[key].mainWindow.Raise()
! self._formNameToUIForm[key].mainWindow.show()
self._formNameToUIForm[key].show()
treeShow(self._formNameToUIForm[key].mainWindow, self)
!
#############################################################################
#
--- 191,207 ----
# Go ahead and display
# TODO : hack!!!!!!!!!!!!!!
for key in self._formNameToUIForm.keys():
if self._formNameToUIForm[key]._form == form:
break
## self._formNameToUIForm[key].mainWindow.Raise()
! self._formNameToUIForm[key].mainWindow.Show()
self._formNameToUIForm[key].show()
treeShow(self._formNameToUIForm[key].mainWindow, self)
!
#############################################################################
#
***************
*** 206,212 ****
def _exit(self):
#TODO
self._children[0].mainWindow.Close(true)
- #
win32gui.SendMessage(self._children[0].mainWindow.GetId(),win32con.WM_DESTROY,0,0)
# Can be used by UI drivers to add more attributes to the creation event.
def _updateCreateEvent(self, event):
--- 219,224 ----
***************
*** 285,291 ****
# Presents a dialog to user asking for the record number to jump to
#
def promptForRecordNumber(self, event=None):
! pass
#
# closeTrap
#
--- 297,303 ----
# Presents a dialog to user asking for the record number to jump to
#
def promptForRecordNumber(self, event=None):
! print "promptForRecordNumber"
#
# closeTrap
#
***************
*** 294,300 ****
# back an event closing the application
#`
def closeTrap(self,event):
! pass
#####################################################################
##
## Required Dialog box support
--- 306,318 ----
# back an event closing the application
#`
def closeTrap(self,event):
! if event.CanVeto():
! self.dispatchEvent('requestEXIT',_form=self._form)
! else:
! object = _eventObjToWin32Window(event)
! object.Destroy()
! # wxExit() TODO: Try and work this into navigator or here if it still
hangs
!
#####################################################################
##
## Required Dialog box support
***************
*** 320,326 ****
# wxMessageDialog.__init__(self, interface,
# text % (programVersion, formName
,formVersion,author,description),
# _("About"), wxOK | wxICON_INFORMATION)
! print text
#
# UImessageBox
#
--- 338,346 ----
# wxMessageDialog.__init__(self, interface,
# text % (programVersion, formName
,formVersion,author,description),
# _("About"), wxOK | wxICON_INFORMATION)
! win32api.MessageBox(None,
! text % (programVersion, formName ,formVersion,author,description),
! _("About"), win32con.MB_OK)
#
# UImessageBox
#
***************
*** 331,334 ****
def __init__(self, interface, message, caption):
message = lineWrap(message,60)
# wxMessageDialog.__init__(self, interface, message, caption,
style=wxOK|wxICON_EXCLAMATION)
! print message
--- 351,354 ----
def __init__(self, interface, message, caption):
message = lineWrap(message,60)
# wxMessageDialog.__init__(self, interface, message, caption,
style=wxOK|wxICON_EXCLAMATION)
! win32api.MessageBox(None, message, caption, win32con.MB_OK)
Index: gnue/forms/src/uidrivers/win32/common.py
diff -c gnue/forms/src/uidrivers/win32/common.py:1.1
gnue/forms/src/uidrivers/win32/common.py:1.2
*** gnue/forms/src/uidrivers/win32/common.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/common.py Sun Mar 2 17:45:12 2003
***************
*** 1,7 ****
import string
! import win32gui, win32ui, win32con
from win32con import *
from gnue.common import events
# Finishing creation of dictionary for language font encodings
encodings = {
--- 1,8 ----
import string
! import win32gui, win32con, win32ui
from win32con import *
from gnue.common import events
+ from gnue.common.apps import GConfig
# Finishing creation of dictionary for language font encodings
encodings = {
***************
*** 56,67 ****
##
widget.SetFont(wxFont(int(gConfigForms('pointSize')),wxMODERN,wxNORMAL,\
##
wxNORMAL,FALSE,'',encodings[gConfig('textEncoding')]))
global _font
! win32gui.SendMessage(widget.GetId(),
! WM_SETFONT,
! _font,
! 0)
!
! _font = win32gui.GetStockObject(SYSTEM_FIXED_FONT)
def setWidgetBaseFont(font):
global _font
--- 57,74 ----
##
widget.SetFont(wxFont(int(gConfigForms('pointSize')),wxMODERN,wxNORMAL,\
##
wxNORMAL,FALSE,'',encodings[gConfig('textEncoding')]))
global _font
! # win32gui.SendMessage(widget.GetId(),
! # WM_SETFONT,
! # _font,
! # 0)
! widget.SetFont(_font)
!
! font_spec = {'name':'Courier New', 'height':int(gConfig('pointSize'))}
! _font = win32ui.CreateFont (font_spec)
!
! #_font = win32gui.GetStockObject(SYSTEM_FIXED_FONT) #ANSI OEM SYSTEM
! #fn = win32gui.GetObject(_font)
! #print fn.lfHeight, fn.lfWidth,fn.lfCharSet,fn.lfPitchAndFamily
def setWidgetBaseFont(font):
global _font
Index: gnue/forms/src/uidrivers/win32/widgets/_base.py
diff -c gnue/forms/src/uidrivers/win32/widgets/_base.py:1.1
gnue/forms/src/uidrivers/win32/widgets/_base.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/_base.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/_base.py Sun Mar 2 17:45:12 2003
***************
*** 27,33 ****
# NOTES:
#
! import win32gui, win32con
from gnue.common import events
--- 27,33 ----
# NOTES:
#
! import win32gui, win32con, win32ui
from gnue.common import events
***************
*** 36,67 ****
from gnue.forms.uidrivers.win32.common import *
! class Win32Window:
! def __init__(self, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
! print "params:",styleEx, className, windowTitle, style, x,y,
width,height, parent
if parent == 0:
hparent = 0
else:
hparent = parent.GetId()
- self._widget = win32gui.CreateWindowEx(styleEx, className, windowTitle,
style, x,y, width,height, hparent, menu, instance, None)
self._parent = parent
self._children = []
if parent:
parent._children.append(self)
def GetId(self):
! return self._widget
! def show(self):
try:
! win32gui.ShowWindow(self._widget, win32con.SW_SHOWNORMAL)
except:
pass
! def hide(self):
try:
! win32gui.ShowWindow(self._widget, win32con.SW_HIDE)
except:
pass
--- 36,75 ----
from gnue.forms.uidrivers.win32.common import *
! class Win32Base:
! _connectTable = {}
!
! def Create(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
if parent == 0:
hparent = 0
else:
hparent = parent.GetId()
self._parent = parent
self._children = []
if parent:
parent._children.append(self)
+
+ self._whnd = win32gui.CreateWindowEx(styleEx, className, windowTitle,
style, x,y, width,height, hparent, menu, instance, None)
+ self._PyCWnd = win32ui.CreateWindowFromHandle(self._whnd)
+ return self._whnd
+
+ def SetFont(self,font):
+ self._PyCWnd.SetFont(font,1)
+
def GetId(self):
! return self._whnd
! def Show(self):
try:
! win32gui.ShowWindow(self._whnd, win32con.SW_SHOWNORMAL)
except:
pass
! def Hide(self):
try:
! win32gui.ShowWindow(self._whnd, win32con.SW_HIDE)
except:
pass
***************
*** 71,76 ****
--- 79,169 ----
def GetChildren(self):
return self._children
+ def SetFocus(self):
+ win32gui.SendMessage(self._whnd, WM_SETFOCUS, 0, 0)
+
+ def SetValue(self, value):
+ win32gui.SetWindowText(self._whnd, str(value))
+
+ def GetValue(self):
+ return win32gui.GetWindowText(self._whnd)
+
+ def Enable(self, enabled):
+ if enabled:
+ win32gui.EnableWindow(self._whnd, 1)
+ else:
+ win32gui.EnableWindow(self._whnd, 0)
+
+ def Destroy(self):
+ win32gui.DestroyWindow(self._whnd)
+
+ def Connect(self, id, func):
+ self._connectTable[id] = func
+
+
+ class Win32Window(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print "OnWMCommand Win32Window hwnd=", hwnd
+ self._connectTable[wParam]()
+
+
+ class Win32Box(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print "OnWMCommand Win32Box"
+ return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
+
+
+ class Win32Label(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print "OnWMCommand Win32Label"
+ return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
+
+
+ class Win32Entry(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print "OnWMCommand Win32Entry"
+ return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
+
+
+ class Win32Button(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print 'OnWMCommand in Win32Button', hwnd, wParam
+ if win32api.LOWORD(wParam) == win32con.BN_CLICKED:
+ print "button clicked"
+ gfObject = self._uiDriver._IdToGFObj[hwnd]
+ action = events.Event('buttonActivated',gfObject)
+ self._eventHandler(action)
+
+
+ class Win32Page(Win32Base):
+ def __init__(self, uidriver, styleEx, className, windowTitle, style, x,y,
width,height, parent,menu=0,instance=0):
+ whnd=Win32Base.Create(self, uidriver, styleEx, className, windowTitle,
style, x,y, width,height, parent,menu=0,instance=0)
+ uidriver._IdToWin32Obj[whnd] = self
+
+ def OnWMCommand(self, hwnd, msg, wParam, lParam):
+ print "OnWMCommand Win32Page", hwnd
+ return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
+
#
# UIHelper
#
***************
*** 80,86 ****
class UIHelper(UIWidget):
def _addToCrossRef(self, widget, gfobject, uiobject):
id = widget.GetId()
! self._uiDriver._IdToWin32Obj[id]=widget
self._uiDriver._IdToGFObj[id]=gfobject
self._uiDriver._IdToUIObj[id]=uiobject
# widget.__origBackgroundColor = widget.GetBackgroundColour()
--- 173,179 ----
class UIHelper(UIWidget):
def _addToCrossRef(self, widget, gfobject, uiobject):
id = widget.GetId()
! # self._uiDriver._IdToWin32Obj[id]=widget
self._uiDriver._IdToGFObj[id]=gfobject
self._uiDriver._IdToUIObj[id]=uiobject
# widget.__origBackgroundColor = widget.GetBackgroundColour()
***************
*** 88,94 ****
def _deleteFromCrossRef(self, widget, object):
id = widget.GetId()
try:
! del self._uiDriver._IdToWin32Obj[id]
del self._uiDriver._IdToGFObj[id]
del self._uiDriver._IdToUIObj[id]
except:
--- 181,187 ----
def _deleteFromCrossRef(self, widget, object):
id = widget.GetId()
try:
! # del self._uiDriver._IdToWin32Obj[id]
del self._uiDriver._IdToGFObj[id]
del self._uiDriver._IdToUIObj[id]
except:
***************
*** 103,128 ****
def show(self):
print "showing", self.widgets
for widget in self.widgets:
! widget.show()
def hide(self):
print "hiding", self.widgets
for widget in self.widgets:
! widget.hide()
def showModal(self):
pass
! def destroy(self):
! win32gui.DestroyWindow(self)
def indexedFocus(self, index):
pass
def setValue(self, value, index=0, enabled=1):
! pass
def setCursorPosition(self, position, index=0):
pass
--- 196,260 ----
def show(self):
print "showing", self.widgets
for widget in self.widgets:
! widget.Show()
def hide(self):
print "hiding", self.widgets
for widget in self.widgets:
! widget.Hide()
def showModal(self):
pass
! # def destroy(self):
! # win32gui.DestroyWindow(self)
def indexedFocus(self, index):
pass
+ # print "self.widgets[index]=",self.widgets,
+ # print self.widgets[index], index, self.widgets[index].GetValue()
+ # TODO
+ # self.widgets[index].SetFocus()
def setValue(self, value, index=0, enabled=1):
! # These must be here or dropdown style controls
! # will get events they shouldn't and break.
! widget = self.widgets[index]
! # widget.SetEvtHandlerEnabled(FALSE)
!
! # Check if foreign key changed
! # object = self._uiDriver._IdToGFObj[widget.GetId()]
! # try:
! # if object.style == "dropdown" and \
! # not object._field._allowedValues == widget._origAllowedValues:
! # try:
! # # Not in wx 2.2.x
! # widget.Freeze()
! # except AttributeError:
! # pass
! # widget._origAllowedValues = object._field._allowedValues
! # widget.Clear()
! # for value in object._field._allowedValuesDescr:
! # widget.Append(value)
! # try:
! # # Not in wx 2.2.x
! # widget.Thaw()
! # except AttributeError:
! # pass
! # except AttributeError:
! # pass
!
! widget.SetValue(value)
! widget.Enable(enabled)
! # widget.SetEvtHandlerEnabled(TRUE)
! # if enabled:
! # widget.SetBackgroundColour(widget.__origBackgroundColor)
! # else:
! # widget.SetBackgroundColour(self._uiDriver._disabledColour)
! # widget.Refresh()
!
def setCursorPosition(self, position, index=0):
pass
***************
*** 140,146 ****
def cleanup(self, object):
for widget in self.widgets[:]:
id = widget.GetId()
! del self._uiDriver._IdToWin32Obj[id]
del self._uiDriver._IdToGFObj[id]
del self._uiDriver._IdToUIObj[id]
self.widgets.pop(0)
--- 272,278 ----
def cleanup(self, object):
for widget in self.widgets[:]:
id = widget.GetId()
! # del self._uiDriver._IdToWin32Obj[id]
del self._uiDriver._IdToGFObj[id]
del self._uiDriver._IdToUIObj[id]
self.widgets.pop(0)
Index: gnue/forms/src/uidrivers/win32/widgets/box.py
diff -c gnue/forms/src/uidrivers/win32/widgets/box.py:1.1
gnue/forms/src/uidrivers/win32/widgets/box.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/box.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/box.py Sun Mar 2 17:45:12 2003
***************
*** 28,34 ****
#
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
#
# UIBox
--- 28,34 ----
#
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import *
#
# UIBox
***************
*** 40,53 ****
def _createWidget(self, event, spacer):
object = event.object
! style = win32con.WS_CHILD | win32con.SS_BLACKFRAME
styleEx = 0
! newWidget = Win32Window(styleEx, 'STATIC', str(object.label), style,
object.Char__x*event.widgetWidth+(event.widgetWidth/2),
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight+(event.widgetHeight/2),
(object.Char__width-1)*event.widgetWidth,
(object.Char__height-1)*event.widgetHeight,
event.container)
return newWidget
--- 40,54 ----
def _createWidget(self, event, spacer):
object = event.object
! style = win32con.WS_CHILD | win32con.SS_ETCHEDFRAME
styleEx = 0
! newWidget = Win32Box(self._uiDriver, styleEx, 'STATIC',
str(object.label), style,
object.Char__x*event.widgetWidth+(event.widgetWidth/2),
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight+(event.widgetHeight/2),
(object.Char__width-1)*event.widgetWidth,
(object.Char__height-1)*event.widgetHeight,
event.container)
+
return newWidget
Index: gnue/forms/src/uidrivers/win32/widgets/button.py
diff -c gnue/forms/src/uidrivers/win32/widgets/button.py:1.1
gnue/forms/src/uidrivers/win32/widgets/button.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/button.py:1.1 Sun Feb 23
18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/button.py Sun Mar 2 17:45:12 2003
***************
*** 29,35 ****
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
from gnue.forms.uidrivers.win32.common import _eventObjToWin32Window
from gnue.forms.uidrivers.win32.common import _setDefaultEventHandlers
--- 29,35 ----
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import *
from gnue.forms.uidrivers.win32.common import _eventObjToWin32Window
from gnue.forms.uidrivers.win32.common import _setDefaultEventHandlers
***************
*** 47,53 ****
# )
style = win32con.BS_PUSHBUTTON | win32con.WS_CHILD
styleEx = 0
! newWidget = Win32Window(styleEx, 'BUTTON', str(object.label), style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight,
object.Char__width*event.widgetWidth,
--- 47,53 ----
# )
style = win32con.BS_PUSHBUTTON | win32con.WS_CHILD
styleEx = 0
! newWidget = Win32Button(self._uiDriver, styleEx, 'BUTTON',
str(object.label), style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight,
object.Char__width*event.widgetWidth,
Index: gnue/forms/src/uidrivers/win32/widgets/entry.py
diff -c gnue/forms/src/uidrivers/win32/widgets/entry.py:1.1
gnue/forms/src/uidrivers/win32/widgets/entry.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/entry.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/entry.py Sun Mar 2 17:45:12 2003
***************
*** 28,35 ****
#
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
from gnue.forms.uidrivers.win32.common import _eventObjToWin32Window
from gnue.forms.uidrivers.win32.common import _setDefaultEventHandlers
--- 28,36 ----
#
import win32gui, win32con
+ from gnue.common import events
! from gnue.forms.uidrivers.win32.widgets._base import *
from gnue.forms.uidrivers.win32.common import _eventObjToWin32Window
from gnue.forms.uidrivers.win32.common import _setDefaultEventHandlers
***************
*** 78,89 ****
win32con.WS_CHILD | win32con.WS_BORDER
styleEx = win32con.WS_EX_CLIENTEDGE
! newWidget = Win32Window(styleEx, 'EDIT', "", style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(object._gap*spacer))*event.widgetHeight,
self.itemWidth,
self.itemHeight,
event.container)
return newWidget
--- 79,95 ----
win32con.WS_CHILD | win32con.WS_BORDER
styleEx = win32con.WS_EX_CLIENTEDGE
! newWidget = Win32Entry(self._uiDriver, styleEx, 'EDIT', "entry", style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(object._gap*spacer))*event.widgetHeight,
self.itemWidth,
self.itemHeight,
event.container)
+
+ value = ""
+
+ self._eventHandler = event.eventHandler
+ _setDefaultEventHandlers(newWidget, event.eventHandler,
event.initialize,self._uiDriver)
return newWidget
Index: gnue/forms/src/uidrivers/win32/widgets/form/widget.py
diff -c gnue/forms/src/uidrivers/win32/widgets/form/widget.py:1.1
gnue/forms/src/uidrivers/win32/widgets/form/widget.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/form/widget.py:1.1 Sun Feb 23
18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/form/widget.py Sun Mar 2
17:45:12 2003
***************
*** 35,41 ****
from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
import wrappers
! idPos = 101
#
# UIForm
--- 35,42 ----
from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
import wrappers
!
! idPos = 1001
#
# UIForm
***************
*** 51,83 ****
#
# Internal helper function to add a menu item and an event
#
def __addMenuItem(self, menu, text, help, event=None, form=None):
global idPos
id = idPos
win32gui.AppendMenu(menu, win32con.MF_STRING, id, text)
idPos +=1
- # if event:
- # EVT_MENU(self._uiDriver._wxapp, id,
- # lambda event, l=self._uiDriver, e=event, f=self._form:
l.dispatchEvent(events.Event(e,_form=f)))
- # self.__eventMenuMapping[event] = id
return id
!
def __appendSeparator(self, menu):
win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, "")
! def __addTBImageBitmap(self, image):
hIcon = win32gui.LoadImage(0, self._uiDriver.images_dir+image,
win32con.IMAGE_BITMAP, 24, 24, win32con.LR_LOADFROMFILE)
tbab = struct.pack("ii", 0, hIcon)
! win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_ADDBITMAP,
1, tbab)
!
! def __addTBButton(self, iBitmap, idCommand):
# TBBUTTON stru (iBitmap, idCommand, fsState, fsStyle, dwData, iString)
tbb=struct.pack("iiiili", iBitmap, idCommand, commctrl.TBSTATE_ENABLED,
commctrl.TBSTYLE_BUTTON, 0, 0)
win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_ADDBUTTONS,
1, tbb)
def __addTBSeparator(self):
! tbb=struct.pack("iiiili", -1, 0, commctrl.TBSTATE_ENABLED,
commctrl.TBSTYLE_SEP, 0, 0)
! win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_ADDBUTTONS,
1, tbb)
#
# _menuExitEvent
--- 52,91 ----
#
# Internal helper function to add a menu item and an event
#
+
def __addMenuItem(self, menu, text, help, event=None, form=None):
global idPos
id = idPos
win32gui.AppendMenu(menu, win32con.MF_STRING, id, text)
+ if event:
+ # self.mainWindow.Connect(id, lambda event, l=self._uiDriver, e=event,
f=self._form: l.dispatchEvent(events.Event(e,_form=f)))
+ self.mainWindow.Connect(id, lambda l=self._uiDriver, e=event,
f=self._form: l.dispatchEvent(events.Event(e,_form=f)))
+ self.__eventMenuMapping[event] = id
idPos +=1
return id
!
def __appendSeparator(self, menu):
win32gui.AppendMenu(menu, win32con.MF_SEPARATOR, 0, "")
! def __addTBButton(self, idCommand, image, tip, text):
hIcon = win32gui.LoadImage(0, self._uiDriver.images_dir+image,
win32con.IMAGE_BITMAP, 24, 24, win32con.LR_LOADFROMFILE)
tbab = struct.pack("ii", 0, hIcon)
! iBitmap = win32gui.SendMessage(self._mainToolBar.GetId(),
commctrl.TB_ADDBITMAP, 1, tbab)
!
# TBBUTTON stru (iBitmap, idCommand, fsState, fsStyle, dwData, iString)
tbb=struct.pack("iiiili", iBitmap, idCommand, commctrl.TBSTATE_ENABLED,
commctrl.TBSTYLE_BUTTON, 0, 0)
win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_ADDBUTTONS,
1, tbb)
+ win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_ADDSTRING,
0, tip);
+
+ def __enableTBButton(self,index):
+ win32gui.SendMessage(self._mainToolBar.GetId(), commctrl.TB_HIDEBUTTON,
0, index);
+
def __addTBSeparator(self):
! pass
! # TODO: this doesn't work
! # tbb=struct.pack("iiiili", 0, 0, commctrl.TBSTATE_ENABLED,
commctrl.TBSTYLE_SEP, 0, 0)
! # win32gui.SendMessage(self._mainToolBar.GetId(),
commctrl.TB_ADDBUTTONS, 1, tbb)
#
# _menuExitEvent
***************
*** 85,106 ****
# Catches the Exit event from the menu and make sure it closes in such a
way to
# trigger the closeTrap method
#
! def _menuExitEvent(self, event):
! pass
! # self.mainWindow.Close()
def _createWidget(self, event, spacer):
object = event.object
#
# Size based upon the form definition
#
- self.menu_sb_space = 0
-
- ## TODO: This really isn't right...
- ## if not self._form._features['GUI:MENUBAR:SUPPRESS']:
- ## self.menu_sb_space += 2
- ## if not self._form._features['GUI:TOOLBAR:SUPPRESS']:
- ## self.menu_sb_space += 2
formWidth = int(self._form._layout.Char__width)
formHeight = int(self._form._layout.Char__height)
--- 93,107 ----
# Catches the Exit event from the menu and make sure it closes in such a
way to
# trigger the closeTrap method
#
! def _menuExitEvent(self):
! # pass
! self.mainWindow.Destroy()
def _createWidget(self, event, spacer):
object = event.object
#
# Size based upon the form definition
#
formWidth = int(self._form._layout.Char__width)
formHeight = int(self._form._layout.Char__height)
***************
*** 108,139 ****
formHeight*self._uiDriver.widgetHeight)
self._formSize = formSize = (formWidth*self._uiDriver.widgetWidth,
!
(formHeight+self.menu_sb_space)*self._uiDriver.widgetHeight)
!
!
! # The main frame of this form
! # self.mainWindow = wxFrame(NULL, -1, "", wxDefaultPosition)
! ###self.mainWindow.SetSize(formSize)
! # self.mainWindow.SetTitle(str(self._form.title))
! # EVT_CLOSE(self.mainWindow,self.closeTrap)
! # initFont(self.mainWindow,1)
# Create the main window.
style = win32con.WS_OVERLAPPEDWINDOW | win32con.WS_CLIPCHILDREN
styleEx = 0
! self.mainWindow = Win32Window(styleEx, "GNUeWindow",
str(self._form.title),
! style,
! 0,
! 0,
! formWidth*self._uiDriver.widgetWidth,
! (formHeight+self.menu_sb_space)*self._uiDriver.widgetHeight,0)
!
! # The status bar
! # self.statusBar = self.mainWindow.CreateStatusBar()
! # self.statusBar.SetFieldsCount(5)
! # self.statusBar.SetStatusWidths([-1,50,50,75,75])
! # initFont(self.statusBar,0)
# A window that provides the scrollbars
# self._scrollWindow = self.mainWindow.panel =
wxScrolledWindow(self.mainWindow,-1, wxDefaultPosition)
--- 109,132 ----
formHeight*self._uiDriver.widgetHeight)
self._formSize = formSize = (formWidth*self._uiDriver.widgetWidth,
! formHeight*self._uiDriver.widgetHeight)
# Create the main window.
+ if self._form._features['GUI:MENUBAR:SUPPRESS']:
+ buttonbarWidth = 0
+ else:
+ # TODO: calculate
+ buttonbarWidth = 12*(24+8)
+
style = win32con.WS_OVERLAPPEDWINDOW | win32con.WS_CLIPCHILDREN
styleEx = 0
! self.mainWindow = Win32Window(self._uiDriver, styleEx,
self._uiDriver._wndclass, str(self._form.title),
! style, 0, 0,
! max(formWidth*self._uiDriver.widgetWidth+10, buttonbarWidth), # at
least buttonbar width
! formHeight*self._uiDriver.widgetHeight+100, # TODO: calculate +100 =
space for buttonbar and statusbar
! 0)
!
# A window that provides the scrollbars
# self._scrollWindow = self.mainWindow.panel =
wxScrolledWindow(self.mainWindow,-1, wxDefaultPosition)
***************
*** 164,210 ****
self.__eventMenuMapping = {}
fileMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(fileMenu, _("&Save\tF6"),_('Save all changes to
database.'),'requestCOMMIT', form=self._form)
! self.__addMenuItem(fileMenu, _("&Clear Form\tF11"),_('Clear
Form'),'requestROLLBACK', form=self._form)
self.__appendSeparator(fileMenu)
! self.__addMenuItem(fileMenu, _("&Print"),_('Perform print routine for
this form.'),'requestPRINTOUT', form=self._form)
self.__appendSeparator(fileMenu)
! id = self.__addMenuItem(fileMenu, _("E&xit"),_('Leave the
application.'), form=self._form)
# EVT_MENU(self._uiDriver._wxapp, id, self._menuExitEvent)
self.__eventMenuMapping['_exit_'] = id
editMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(editMenu, _("C&ut"),_("Cut the selected
text"),'requestCUT', form=self._form)
! self.__addMenuItem(editMenu, _("&Copy"),_("Copy the selected text"),
'requestCOPY', form=self._form)
! self.__addMenuItem(editMenu, _("&Paste"),_("Paste
text"),'requestPASTE', form=self._form)
dataMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(dataMenu, _("&First Record\tCtrl+Up"),_('Navigate to
first record in memory.'),'requestFIRSTRECORD', form=self._form)
! self.__addMenuItem(dataMenu, _("&Previous Record\tUp"),_('Navigate to
previous record in memory.'),'requestPREVRECORD', form=self._form)
! self.__addMenuItem(dataMenu, _("&Next Record\tDown"),_('Navigate to
next record in memory.'),'requestNEXTRECORD', form=self._form)
! self.__addMenuItem(dataMenu, _("&Last Record\tCtrl+Down"),_('Navigate
to last record in memory.'),'requestLASTRECORD', form=self._form)
! id = self.__addMenuItem(dataMenu, _("&Jump to
Record...\tF2"),_('Prompts for a record number to which the system should
jump.'), form=self._form)
#EVT_MENU(self._uiDriver._wxapp, id, _PROMPTFORRECORD)
self.__eventMenuMapping['_promptForRecord_'] = id
! self.__addMenuItem(dataMenu, _("N&ew Record\tF12"),_('Create a new
record for data input.'),'requestNEWRECORD', form=self._form)
! self.__addMenuItem(dataMenu, _("Mark Record for &Delete\tF5"),_('Mark
record for removal at next commit.'),'requestMARKFORDELETE', form=self._form)
self.__appendSeparator(dataMenu)
! self.__addMenuItem(dataMenu, _("Next &Block\tPgDn"),_('Navigate to next
data block.'),'requestNEXTBLOCK', form=self._form)
! self.__addMenuItem(dataMenu, _("P&revious Block\tPgUp"),_('Navigate to
previous data block.'),'requestPREVBLOCK', form=self._form)
self.__appendSeparator(dataMenu)
! self.__addMenuItem(dataMenu, _("&Enter Query\tF8"),_('Switch to input
query mask mode.'),'requestENTERQUERY', form=self._form)
! self.__addMenuItem(dataMenu, _("Execute &Query\tF9"), _('Execute query
using current mask.'),'requestEXECQUERY', form=self._form)
helpMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(helpMenu, _("&About..."), _('Display info about GNUe
Forms.'),'requestABOUT', form=self._form)
menuBar = win32gui.CreateMenu()
style = win32con.MF_STRING | win32con.MF_POPUP
win32gui.AppendMenu( menuBar, style, fileMenu, _("&File") )
win32gui.AppendMenu( menuBar, style, editMenu, _("&Edit") )
--- 157,207 ----
self.__eventMenuMapping = {}
fileMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(fileMenu,_("&Save\tF6"),_('Save all changes to
database.'),'requestCOMMIT', form=self._form)
! self.__addMenuItem(fileMenu,_("&Clear Form\tF11"),_('Clear
Form'),'requestROLLBACK', form=self._form)
self.__appendSeparator(fileMenu)
! self.__addMenuItem(fileMenu,_("&Print"),_('Perform print routine for
this form.'),'requestPRINTOUT', form=self._form)
self.__appendSeparator(fileMenu)
! id = self.__addMenuItem(fileMenu,_("E&xit"),_('Leave the
application.'), form=self._form)
# EVT_MENU(self._uiDriver._wxapp, id, self._menuExitEvent)
+ self.mainWindow.Connect(id, self._menuExitEvent)
self.__eventMenuMapping['_exit_'] = id
editMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(editMenu,_("C&ut"),_("Cut the selected
text"),'requestCUT', form=self._form)
! self.__addMenuItem(editMenu,_("&Copy"),_("Copy the selected text"),
'requestCOPY', form=self._form)
! self.__addMenuItem(editMenu,_("&Paste"),_("Paste text"),'requestPASTE',
form=self._form)
dataMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(dataMenu,_("&First Record\tCtrl+Up"),_('Navigate to
first record in memory.'),'requestFIRSTRECORD', form=self._form)
! self.__addMenuItem(dataMenu,_("&Previous Record\tUp"),_('Navigate to
previous record in memory.'),'requestPREVRECORD', form=self._form)
! self.__addMenuItem(dataMenu,_("&Next Record\tDown"),_('Navigate to next
record in memory.'),'requestNEXTRECORD', form=self._form)
! self.__addMenuItem(dataMenu,_("&Last Record\tCtrl+Down"),_('Navigate to
last record in memory.'),'requestLASTRECORD', form=self._form)
! id = self.__addMenuItem(dataMenu,_("&Jump to Record...\tF2"),_('Prompts
for a record number to which the system should jump.'), form=self._form)
#EVT_MENU(self._uiDriver._wxapp, id, _PROMPTFORRECORD)
+ # TODO:
+ #self.mainWindow.Connect(id, _PROMPTFORRECORD)
self.__eventMenuMapping['_promptForRecord_'] = id
! self.__addMenuItem(dataMenu,_("N&ew Record\tF12"),_('Create a new
record for data input.'),'requestNEWRECORD', form=self._form)
! self.__addMenuItem(dataMenu,_("Mark Record for &Delete\tF5"),_('Mark
record for removal at next commit.'),'requestMARKFORDELETE', form=self._form)
self.__appendSeparator(dataMenu)
! self.__addMenuItem(dataMenu,_("Next &Block\tPgDn"),_('Navigate to next
data block.'),'requestNEXTBLOCK', form=self._form)
! self.__addMenuItem(dataMenu,_("P&revious Block\tPgUp"),_('Navigate to
previous data block.'),'requestPREVBLOCK', form=self._form)
self.__appendSeparator(dataMenu)
! self.__addMenuItem(dataMenu,_("&Enter Query\tF8"),_('Switch to input
query mask mode.'),'requestENTERQUERY', form=self._form)
! self.__addMenuItem(dataMenu,_("Execute &Query\tF9"), _('Execute query
using current mask.'),'requestEXECQUERY', form=self._form)
helpMenu = win32gui.CreatePopupMenu()
! self.__addMenuItem(helpMenu,_("&About..."), _('Display info about GNUe
Forms.'),'requestABOUT', form=self._form)
menuBar = win32gui.CreateMenu()
+
style = win32con.MF_STRING | win32con.MF_POPUP
win32gui.AppendMenu( menuBar, style, fileMenu, _("&File") )
win32gui.AppendMenu( menuBar, style, editMenu, _("&Edit") )
***************
*** 222,305 ****
hinst = win32api.GetModuleHandle(None)
style = win32con.WS_CHILD | commctrl.TBSTYLE_TOOLTIPS #|
commctrl.TBSTYLE_FLAT
styleEx = 0
! self._mainToolBar = mainToolBar = Win32Window(styleEx,
commctrl.TOOLBARCLASSNAME, "GNUe toolbar",
style, 0, 0, 0, 0,
! self.mainWindow, 8001, hinst)
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_BUTTONSTRUCTSIZE,
12, 0);
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_SETBITMAPSIZE, 0,
0x00180018); # 24x24
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_SETBUTTONSIZE, 0,
0x00180018); # 24x24
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_AUTOSIZE, 0, 0)
! # iconPath = self._uiDriver.images_dir #+gConfigForms('tb_commit')
! self.__addTBImageBitmap("tb_save.bmp")
! self.__addTBImageBitmap("tb_new.bmp")
! self.__addTBImageBitmap("tb_trash.bmp")
! self.__addTBImageBitmap("tb_top.bmp")
! self.__addTBImageBitmap("tb_up_arrow.bmp")
! self.__addTBImageBitmap("tb_down_arrow.bmp")
! self.__addTBImageBitmap("tb_bottom.bmp")
! self.__addTBImageBitmap("tb_jump-to.bmp")
! self.__addTBImageBitmap("tb_search.bmp")
! self.__addTBImageBitmap("tb_exec.bmp")
! self.__addTBImageBitmap("tb_undo.bmp")
! self.__addTBImageBitmap("tb_exit.bmp")
!
! self.__addTBButton(0, 101)
! self.__addTBButton(1, 113)
! self.__addTBButton(2, 114)
! # self.__addTBSeparator()
! self.__addTBButton(3, 108)
! self.__addTBButton(4, 109)
! self.__addTBButton(5, 110)
! self.__addTBButton(6, 111)
! self.__addTBButton(7, 112)
! # self.__addTBSeparator()
! self.__addTBButton(8, 117)
! self.__addTBButton(9, 118)
! # self.__addTBSeparator()
! self.__addTBButton(10, 102)
! self.__addTBButton(11, 104)
!
! mainToolBar.show()
!
! # if sys.platform == 'win32':
! # mainToolBar = wxToolBar(self.mainWindow, -1)
! # else:
! # mainToolBar = wxToolBar(self.mainWindow,-1,
style=wxTB_HORIZONTAL|wxTB_DOCKABLE)
!
! # mainToolBar.SetToolBitmapSize(wxSize(24,24))
! # mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestCOMMIT'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_commit'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Save Changes"), _('Save all
changes to database.'))
! # mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestNEWRECORD'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_insert'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Insert Record"), _('Create a
new record for data input.'))
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestMARKFORDELETE'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_delete'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Delete Record"), _('Mark
record for removal at next commit.'))
! # mainToolBar.AddSeparator()
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestFIRSTRECORD'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_first'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("First Record"),_('Navigate
to first record in memory.'))
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestPREVRECORD'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_previous'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Previous Record"),_('Navigate
to previous record in memory.'))
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestNEXTRECORD'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_next'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Next Record"),_('Navigate to
next record in memory.'))
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestLASTRECORD'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_last'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Last Record"),_('Navigate to
last record in memory.'))
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['_promptForRecord_'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_jump'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Jump to Record"),_('Navigate
to user specified record in memory.'))
! # mainToolBar.AddSeparator()
! #
mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestENTERQUERY'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_query_prep'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Prepare Query"), _('Switch to
input query mask mode.'))
! # mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestEXECQUERY'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_query'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Execute Query"), _('Execute
query using current mask.'))
! # mainToolBar.AddSeparator()
! # mainToolBar.AddSimpleTool(self.__eventMenuMapping['requestROLLBACK'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_rollback'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Clear Form"), _('Clear Form'))
! # mainToolBar.AddSimpleTool(self.__eventMenuMapping['_exit_'],
wxImage(self._uiDriver.images_dir+gConfigForms('tb_exit'),
! #
wxBITMAP_TYPE_PNG).ConvertToBitmap(), _("Exit Form"), _('Exit Form'))
!
! # self._mainToolBar = mainToolBar
! # self.mainWindow.SetToolBar( mainToolBar );
! # self._mainToolBar.Realize()
self._eventHandler = event.eventHandler
--- 219,275 ----
hinst = win32api.GetModuleHandle(None)
style = win32con.WS_CHILD | commctrl.TBSTYLE_TOOLTIPS #|
commctrl.TBSTYLE_FLAT
styleEx = 0
! self._mainToolBar = mainToolBar = Win32Window(self._uiDriver, styleEx,
commctrl.TOOLBARCLASSNAME, "GNUe toolbar",
style, 0, 0, 0, 0,
! self.mainWindow, 8002, hinst)
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_BUTTONSTRUCTSIZE,
12, 0);
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_SETBITMAPSIZE, 0,
0x00180018); # 24x24
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_SETBUTTONSIZE, 0,
0x00180018); # 24x24
win32gui.SendMessage(mainToolBar.GetId(), commctrl.TB_AUTOSIZE, 0, 0)
! self.__addTBButton(self.__eventMenuMapping["requestCOMMIT"],
"tb_save.bmp",
! _("Save Changes"), _('Save all changes to
database.'))
! self.__addTBButton(self.__eventMenuMapping["requestNEWRECORD"],
"tb_new.bmp",
! _("Insert Record"), _('Create a new record
for data input.'))
! self.__addTBButton(self.__eventMenuMapping["requestMARKFORDELETE"],
"tb_trash.bmp",
! _("Delete Record"), _('Mark record for
removal at next commit.'))
! self.__addTBSeparator()
! self.__addTBButton(self.__eventMenuMapping["requestFIRSTRECORD"],
"tb_top.bmp",
! _("First Record"),_('Navigate to first
record in memory.'))
! self.__addTBButton(self.__eventMenuMapping["requestPREVRECORD"],
"tb_up_arrow.bmp",
! _("Previous Record"),_('Navigate to previous
record in memory.'))
! self.__addTBButton(self.__eventMenuMapping["requestNEXTRECORD"],
"tb_down_arrow.bmp",
! _("Next Record"),_('Navigate to next record
in memory.'))
! self.__addTBButton(self.__eventMenuMapping["requestLASTRECORD"],
"tb_bottom.bmp",
! _("Last Record"),_('Navigate to last record
in memory.'))
! self.__addTBButton(self.__eventMenuMapping["_promptForRecord_"],
"tb_jump-to.bmp",
! _("Jump to Record"),_('Navigate to user
specified record in memory.'))
! self.__addTBSeparator()
! self.__addTBButton(self.__eventMenuMapping["requestENTERQUERY"],
"tb_search.bmp",
! _("Prepare Query"), _('Switch to input query
mask mode.'))
! self.__addTBButton(self.__eventMenuMapping["requestEXECQUERY"],
"tb_exec.bmp",
! _("Execute Query"), _('Execute query using
current mask.'))
! self.__addTBSeparator()
! self.__addTBButton(self.__eventMenuMapping["requestROLLBACK"],
"tb_undo.bmp",
! _("Clear Form"), _('Clear Form'))
! self.__addTBButton(self.__eventMenuMapping["_exit_"], "tb_exit.bmp",
! _("Exit Form"), _('Exit Form'))
! mainToolBar.Show()
!
!
! if not self._form._features['GUI:STATUSBAR:SUPPRESS']:
! hinst = win32api.GetModuleHandle(None)
! style = win32con.WS_CHILD | win32con.WS_VISIBLE |
commctrl.SBARS_SIZEGRIP
! styleEx = 0
! self.statusBar = Win32Window(self._uiDriver, styleEx,
commctrl.STATUSCLASSNAME, "",
! style, 0, 0, 0, 0,
! self.mainWindow, 8001, hinst)
! x=formWidth*self._uiDriver.widgetWidth
! statwidths =
struct.pack("iiiii",x-75-75-50-50,x-75-75-50,x-75-75,x-75,x)
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETPARTS, 5,
statwidths)
! win32gui.SendMessage(self.statusBar.GetId(), win32con.WM_SIZE, 0, 0)
!
self._eventHandler = event.eventHandler
***************
*** 333,375 ****
# Makes the requested page visible while hiding the others
#
def gotoPage(self,event):
self._wrapper.setPage(self._uiDriver._gfObjToUIWidget[event.data].widgets[0])
! ## if not self._notebook:
! ## for page in self._uiPageList:
! ## if page != uiPage:
! ## page.hide()
! ## else:
! ## page.show()
! ## else:
! ## # uiPage widgets only contain 1 item
! ##
! ## pageId = uiPage.widgets[0].GetId()
! ##
! ## for count in range(self._notebook.GetPageCount()):
! ## if pageId == self._notebook.GetPage(count).GetId():
! ## self._notebook.SetSelection(count)
#
# _setStatusBar
#
def _setStatusBar(self,tip, statusValue, insertValue, currentRecord,
maxRecord, currentPage, maxPage):
! pass
! # if tip: self.statusBar.SetStatusText(str(tip),0)
! # if statusValue:
! # self.statusBar.SetStatusText(statusValue,1)
! # if insertValue:
! # self.statusBar.SetStatusText(insertValue,2)
! # if currentRecord and maxRecord:
! # self.statusBar.SetStatusText(string.strip("%s/%s" %
(currentRecord,maxRecord)),3)
! # if currentPage and maxPage:
! # self.statusBar.SetStatusText(string.strip("%s/%s" %
(currentPage,maxPage)),4)
#
# Adjust the status fields to reflect width of text in them
#
--- 303,347 ----
# Makes the requested page visible while hiding the others
#
def gotoPage(self,event):
+ print "gotoPage event=",event
self._wrapper.setPage(self._uiDriver._gfObjToUIWidget[event.data].widgets[0])
! if not self._notebook:
! for page in self._uiPageList:
! if page != uiPage:
! page.hide()
! else:
! page.show()
! else:
! # uiPage widgets only contain 1 item
!
! pageId = uiPage.widgets[0].GetId()
!
! for count in range(self._notebook.GetPageCount()):
! if pageId == self._notebook.GetPage(count).GetId():
! self._notebook.SetSelection(count)
#
# _setStatusBar
#
def _setStatusBar(self,tip, statusValue, insertValue, currentRecord,
maxRecord, currentPage, maxPage):
! if tip:
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETTEXT, 0,
str(tip))
! if statusValue:
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETTEXT, 1,
statusValue)
! if insertValue:
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETTEXT, 2,
insertValue)
! if currentRecord and maxRecord:
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETTEXT, 3,
string.strip("%s/%s" % (currentRecord,maxRecord)))
! if currentPage and maxPage:
! win32gui.SendMessage(self.statusBar.GetId(), commctrl.SB_SETTEXT, 4,
string.strip("%s/%s" % (currentPage,maxPage)))
+ return
#
# Adjust the status fields to reflect width of text in them
#
Index: gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py
diff -c gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py:1.1
gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py:1.1 Sun Feb 23
18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/form/wrappers.py Sun Mar 2
17:45:12 2003
***************
*** 32,38 ****
from gnue.common import events
from gnue.common.apps import GDebug
! from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
class ScrollableWrapper(Win32Window):
def __init__(self, uiform):
--- 32,38 ----
from gnue.common import events
from gnue.common.apps import GDebug
! from gnue.forms.uidrivers.win32.widgets._base import *
class ScrollableWrapper(Win32Window):
def __init__(self, uiform):
***************
*** 45,55 ****
self.layoutSize = (formWidth*uiform._uiDriver.widgetWidth,
formHeight*uiform._uiDriver.widgetHeight)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD
styleEx = 0
! self.sw=Win32Window(styleEx, "GNUeWindow", "ScrollableWrapper", style,
0,
! 24,
formWidth*uiform._uiDriver.widgetWidth,
formHeight*uiform._uiDriver.widgetHeight,
frame)
--- 45,56 ----
self.layoutSize = (formWidth*uiform._uiDriver.widgetWidth,
formHeight*uiform._uiDriver.widgetHeight)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD #|
win32con.WS_THICKFRAME
! #| win32con.WS_VSCROLL | win32con.WS_HSCROLL
styleEx = 0
! self.sw=Win32Window(self.uiform._uiDriver, styleEx,
self.uiform._uiDriver._wndclass, "ScrollableWrapper", style,
0,
! 33, # TODO: size of toolbar
formWidth*uiform._uiDriver.widgetWidth,
formHeight*uiform._uiDriver.widgetHeight,
frame)
***************
*** 68,74 ****
# not a wxPanel set per page right after this
## self.SetVirtualSize(self.pane.GetSize())
## tempx,tempy = self.pane.GetSizeTuple()
! self.show()
## self.fixScrollbars()
--- 69,75 ----
# not a wxPanel set per page right after this
## self.SetVirtualSize(self.pane.GetSize())
## tempx,tempy = self.pane.GetSizeTuple()
! self.Show()
## self.fixScrollbars()
***************
*** 153,159 ****
#
# Single pages win32con.CW_USEDEFAULT,
-
#
class PlainWrapper(ScrollableWrapper):
def __init__(self, *args, **parms):
--- 154,159 ----
***************
*** 162,185 ****
# self.pane.Show()
formWidth = int(self.form._layout.Char__width)
formHeight = int(self.form._layout.Char__height)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD
styleEx = 0
! self.pane = Win32Window(styleEx, "GNUeWindow", "PlainWrapper", style,
0,
0,
formWidth*self.uiform._uiDriver.widgetWidth,
formHeight*self.uiform._uiDriver.widgetHeight,
self.sw)
! self.pane.show()
def createPage(self, object):
# newWidget = wxPanel(self.pane, -1, size=self.layoutSize)
formWidth = int(self.form._layout.Char__width)
formHeight = int(self.form._layout.Char__height)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD
styleEx = 0
! newWidget = Win32Window(styleEx, "GNUeWindow", "createPage", style,
0,
0,
formWidth*self.uiform._uiDriver.widgetWidth,
--- 162,186 ----
# self.pane.Show()
formWidth = int(self.form._layout.Char__width)
formHeight = int(self.form._layout.Char__height)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD #| win32con.WS_BORDER
styleEx = 0
! self.pane = Win32Window(self.uiform._uiDriver, styleEx,
self.uiform._uiDriver._wndclass, "PlainWrapper", style,
0,
0,
formWidth*self.uiform._uiDriver.widgetWidth,
formHeight*self.uiform._uiDriver.widgetHeight,
self.sw)
!
! self.pane.Show()
def createPage(self, object):
# newWidget = wxPanel(self.pane, -1, size=self.layoutSize)
formWidth = int(self.form._layout.Char__width)
formHeight = int(self.form._layout.Char__height)
! style = win32con.WS_OVERLAPPED | win32con.WS_CHILD #| win32con.WS_BORDER
styleEx = 0
! newWidget = Win32Page(self.uiform._uiDriver, styleEx,
self.uiform._uiDriver._wndclass, "createPage", style,
0,
0,
formWidth*self.uiform._uiDriver.widgetWidth,
***************
*** 188,199 ****
# Only show first page
if not self._fitted:
! newWidget.show()
else:
! newWidget.hide()
self._pageList.append(newWidget)
! print self._pageList
self.fit()
return newWidget
--- 189,200 ----
# Only show first page
if not self._fitted:
! newWidget.Show()
else:
! newWidget.Hide()
self._pageList.append(newWidget)
! print "createPage.self._pageList=",self._pageList
self.fit()
return newWidget
***************
*** 207,213 ****
## self.frame.Fit()
self._fitted = 1
! def setPage(self, page):
for p in self._pageList:
if p != page:
p.Hide()
--- 208,215 ----
## self.frame.Fit()
self._fitted = 1
! def setPage(self, page):
! print "setPage",page,self._pageList
for p in self._pageList:
if p != page:
p.Hide()
Index: gnue/forms/src/uidrivers/win32/widgets/label.py
diff -c gnue/forms/src/uidrivers/win32/widgets/label.py:1.1
gnue/forms/src/uidrivers/win32/widgets/label.py:1.2
*** gnue/forms/src/uidrivers/win32/widgets/label.py:1.1 Sun Feb 23 18:43:32 2003
--- gnue/forms/src/uidrivers/win32/widgets/label.py Sun Mar 2 17:45:12 2003
***************
*** 29,35 ****
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Window
#
# UILabel
--- 29,35 ----
import win32gui, win32con
! from gnue.forms.uidrivers.win32.widgets._base import *
#
# UILabel
***************
*** 46,52 ****
object = event.object
style = self.alignmentStyle[object.alignment]
styleEx = 0
! newWidget = Win32Window(styleEx, 'STATIC', str(object.text), style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight,
self.itemWidth,
--- 46,52 ----
object = event.object
style = self.alignmentStyle[object.alignment]
styleEx = 0
! newWidget = Win32Label(self._uiDriver, styleEx, 'STATIC',
str(object.text), style,
object.Char__x*event.widgetWidth,
(object.Char__y+spacer+(spacer*object._gap))*event.widgetHeight,
self.itemWidth,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnue/forms/src/uidrivers/win32 GFwin32App.py UI...,
Bajusz Tamás <=