[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r8896 - trunk/gnue-forms/src/uidrivers/win32/widgets
From: |
btami |
Subject: |
[gnue] r8896 - trunk/gnue-forms/src/uidrivers/win32/widgets |
Date: |
Sat, 21 Oct 2006 13:32:22 -0500 (CDT) |
Author: btami
Date: 2006-10-21 13:32:20 -0500 (Sat, 21 Oct 2006)
New Revision: 8896
Modified:
trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py
trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py
Log:
finished new clipboard ui functions
fixed entry dowsn't scroll bug
Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py 2006-10-21
14:33:56 UTC (rev 8895)
+++ trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py 2006-10-21
18:32:20 UTC (rev 8896)
@@ -24,14 +24,15 @@
#
# NOTES:
#
-
+
import struct
import win32ui
import win32api
import win32gui
import win32con
-import commctrl
+import commctrl
+import win32clipboard
from gnue.common import events
@@ -148,7 +149,7 @@
self.SetFocus()
self._connectTable[self._id](self._id)
elif gfObject.style == 'checkbox':
- uiObject._eventHandler('requestTOGGLECHKBOX',_form=gfObject._form)
+ uiObject._request('TOGGLECHKBOX')
else:
if gfObject._type != 'GFEntry':
cursorPosition = self.getSelectedArea()[1]
@@ -223,7 +224,8 @@
win32gui.SendMessage(hwnd, win32con.EM_SCROLLCARET, 0, 0)
- elif msg == win32con.WM_CHAR:
+ elif msg == win32con.WM_CHAR:
+
# The TranslateMessage function generates a WM_CHAR message
# when the user presses any of the following keys:
# Any character key
@@ -252,7 +254,7 @@
gConfigForms('enterIsNewLine') and \
(hasattr(gfObject,'Char__height') and gfObject.Char__height) > 1:
- command = 'NEWLINE'
+ command = 'NEWLINE'
else:
@@ -263,20 +265,20 @@
keycode,
ShiftDown,
ControlDown,
- AltDown)
+ AltDown)
- if command == 'NEWLINE':
+ if command == 'NEWLINE':
action = events.Event('requestKEYPRESS', '\r\n',
text='\r\n',
code=10)
- elif command and not keycode in NOT_WM_CHAR_KEYS:
- action = events.Event('request%s' % command)
+ elif command and not keycode in NOT_WM_CHAR_KEYS:
+ action = events.Event('request%s' % command)
else:
try:
- char = chr(keycode)
- import string
+ char = chr(keycode)
+ import string
if char in string.printable or char == "\n" or \
128 <= keycode <= 255:
action = events.Event('requestKEYPRESS', textDecode(char),
@@ -286,12 +288,15 @@
pass
if action:
+ if gfObject._type == 'GFButton':
+ self.SetFocus()
+ self._connectTable[self._id](self._id)
# Add the object's _form to the outgoing event
# rather than every event in the function
action.__dict__.update({'_form':gfObject._form})
uiObject = self._uiDriver._IdToUIObj[self._id]
uiObject._eventHandler(action)
-
+
win32gui.SendMessage(hwnd, win32con.EM_SCROLLCARET, 0, 0)
if gfObject._type == 'GFEntry':
@@ -320,9 +325,8 @@
selection = self.GetValue()
if selection >= 0:
string = gfObject._field.allowedValues()[1][selection]
- uiObject._eventHandler('requestREPLACEVALUE',object=gfObject,
- index=selection, text=string,
- _form=gfObject._form)
+ uiObject._request('REPLACEVALUE',
+ index=selection, text=string)
if end < length:
win32gui.SendMessage(self._editHwnd, win32con.EM_SETSEL, start,
end)
@@ -334,9 +338,8 @@
selection = self.GetValue()
if selection >= 0:
string = gfObject._field.allowedValues()[1][selection]
- uiObject._eventHandler('requestREPLACEVALUE',object=gfObject,
- index=selection, text=string,
- _form=gfObject._form)
+ uiObject._request('REPLACEVALUE',
+ index=selection, text=string)
return win32gui.CallWindowProc(self._oldWndProc, hwnd, msg, wParam,
lParam)
else:
return win32gui.CallWindowProc(self._oldWndProc, hwnd, msg, wParam,
lParam)
@@ -371,15 +374,41 @@
selection = 0
string = gfObject._field.allowedValues()[1][selection]
- uiObject._eventHandler('requestREPLACEVALUE',object=gfObject,
- index=selection, text=string,
- _form=gfObject._form)
+ uiObject._request('REPLACEVALUE',
+ index=selection, text=string)
if lParam == 1:
action = events.Event('requestPREVENTRY')
else:
action = events.Event('requestNEXTENTRY')
action.__dict__.update({'_form':gfObject._form})
uiObject._eventHandler(action)
+
+ elif msg == win32con.WM_CUT:
+ uiObject = self._uiDriver._IdToUIObj[self._id]
+
+ (start_pos, end_pos) = Win32Entry.getSelectedArea(self)
+ text = win32gui.GetWindowText(hwnd)
+ uiObject._request('DELETERANGE',
+ start_pos=start_pos, end_pos=end_pos,
+ position=start_pos)
+
+ if win32clipboard.OpenClipboard() == None:
+ try:
+ win32clipboard.EmptyClipboard()
+ win32clipboard.SetClipboardText(text[start_pos : end_pos])
+ finally:
+ win32clipboard.CloseClipboard()
+
+ elif msg == win32con.WM_PASTE:
+ uiObject = self._uiDriver._IdToUIObj[self._id]
+
+ if win32clipboard.OpenClipboard() == None:
+ try:
+ data = win32clipboard.GetClipboardData(win32con.CF_TEXT)
+ if data:
+ uiObject._request('KEYPRESS', text=data)
+ finally:
+ win32clipboard.CloseClipboard()
else:
return win32gui.CallWindowProc(self._oldWndProc, hwnd, msg, wParam,
lParam)
@@ -549,6 +578,15 @@
def Paste(self):
win32gui.SendMessage(self._hwnd, win32con.WM_PASTE, 0, 0)
+ def SelectAll(self):
+ self.set_selected_area(0,-1)
+ (start_pos, end_pos) = self.getSelectedArea()
+
+ uiObject = self._uiDriver._IdToUIObj[self._id]
+ uiObject._request('SELECTWITHMOUSE',
+ position1=start_pos, position2=end_pos,
+ cursor=end_pos)
+
class Win32Button(Win32Base):
pass
@@ -569,9 +607,9 @@
if gfObject.style == 'listbox':
selection = lbWindow.GetValue()
string = gfObject._field.allowedValues()[1][selection]
- uiObject._eventHandler('requestREPLACEVALUE',object=gfObject,
- index=selection, text=string,
- _form=gfObject._form)
+ uiObject._request('REPLACEVALUE',
+ index=selection, text=string)
+
else:
window = self._uiDriver._win32app._HwndToTkObj[lParam]
window.OnWMCommand(hwnd, msg, wParam, lParam)
@@ -701,9 +739,11 @@
self.widgets[index].SetFocus()
def _ui_focus_in_(self, index):
+ # If we are in a grid, exchange label with entry widget
pass
def _ui_focus_out_(self, index):
+ # If we are in a grid, exchange entry widget with the label
pass
def _ui_set_value_(self, index, value):
@@ -792,7 +832,8 @@
vk.UP : win32con.VK_UP, vk.DOWN : win32con.VK_DOWN,
vk.LEFT : win32con.VK_LEFT, vk.RIGHT : win32con.VK_RIGHT,
vk.TAB : win32con.VK_TAB,
- vk.ENTER : win32con.VK_RETURN, vk.BACKSPACE : win32con.VK_BACK }
+ vk.ENTER : win32con.VK_RETURN, vk.BACKSPACE : win32con.VK_BACK,
+ vk.RETURN : win32con.VK_RETURN}
GFKeyMapper.KeyMapper.setUIKeyMap(win32KeyTranslations)
Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py 2006-10-21
14:33:56 UTC (rev 8895)
+++ trunk/gnue-forms/src/uidrivers/win32/widgets/entry.py 2006-10-21
18:32:20 UTC (rev 8896)
@@ -27,8 +27,8 @@
import win32gui
import win32con
+import win32clipboard
-from gnue.common import events
from gnue.forms.uidrivers.win32.widgets._base import UIHelper, Win32Entry
from gnue.forms.uidrivers.win32.common import *
@@ -79,7 +79,9 @@
if hasattr(object,'Char__height') and object.Char__height > 1:
style = style | win32con.ES_MULTILINE | win32con.ES_AUTOVSCROLL | \
win32con.WS_VSCROLL #| win32con.ES_WANTRETURN
- width = self.itemWidth
+ width = self.itemWidth
+ else:
+ style = style | win32con.ES_AUTOHSCROLL
styleEx = win32con.WS_EX_CLIENTEDGE
className = "EDIT"
@@ -129,16 +131,16 @@
# ---------------------------------------------------------------------------
def _ui_cut_(self, index):
-
- widget = self.widgets[index]
- if hasattr(widget, 'Cut'):
- widget.Cut()
+ widget = self.widgets[index]
+
+ if hasattr(widget, 'Cut'):
+ widget.Cut()
# ---------------------------------------------------------------------------
def _ui_copy_(self, index):
-
+
widget = self.widgets[index]
if hasattr(widget, 'Copy'):
@@ -147,20 +149,22 @@
# ---------------------------------------------------------------------------
def _ui_paste_(self, index):
-
- widget = self.widgets[index]
- if hasattr(widget, 'Paste'):
- widget.Paste()
+ widget = self.widgets[index]
+
+ if hasattr(widget, 'Paste'):
+ widget.Paste()
# ---------------------------------------------------------------------------
def _ui_select_all_(self, index):
+
+ widget = self.widgets[index]
+
+ if hasattr(widget, 'SelectAll'):
+ widget.SelectAll()
- # TODO
- pass
-
configuration = {
'baseClass' : UIEntry,
'provides' : 'GFEntry',
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8896 - trunk/gnue-forms/src/uidrivers/win32/widgets,
btami <=