commit-gnue
[Top][All Lists]
Advanced

[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',





reply via email to

[Prev in Thread] Current Thread [Next in Thread]