37 |
import gtk |
import gtk |
38 |
from gnue.common import events |
from gnue.common import events |
39 |
from gnue.forms.uidrivers.gtk2.widgets._base import UIHelper |
from gnue.forms.uidrivers.gtk2.widgets._base import UIHelper |
40 |
|
from gnue.common.apps import GDebug |
41 |
|
|
42 |
# |
# |
43 |
# UIEntry |
# UIEntry |
88 |
newWidget.set_size_request(2 * event.textWidth, event.textHeight) |
newWidget.set_size_request(2 * event.textWidth, event.textHeight) |
89 |
event.container.put(newWidget, object.Char__x * event.widgetWidth, |
event.container.put(newWidget, object.Char__x * event.widgetWidth, |
90 |
(object.Char__y + spacer + (object._gap * spacer)) * event.widgetHeight) |
(object.Char__y + spacer + (object._gap * spacer)) * event.widgetHeight) |
91 |
newWidget.connect('toggled', self.checkboxHandler, newWidget) |
newWidget._clicked_handler = newWidget.connect('clicked', self.checkboxHandler, newWidget) |
92 |
if event.initialize: |
if event.initialize: |
93 |
self._addDefaultEventHandler(newWidget, event.eventHandler,\ |
self._addDefaultEventHandler(newWidget, event.eventHandler,\ |
94 |
self._uiDriver) |
self._uiDriver) |
128 |
if isinstance(widget,gtk.Entry) or isinstance(widget,MultiLineEdit): |
if isinstance(widget,gtk.Entry) or isinstance(widget,MultiLineEdit): |
129 |
widget.set_position(position) |
widget.set_position(position) |
130 |
else: |
else: |
131 |
print "Wrong Place to execute set CursorPosition, widget is a %s" % widget |
print _("Wrong Place to execute set CursorPosition (%s,%s), widget is a %s") % (position,index,widget) |
132 |
|
|
133 |
def setSelectedArea(self, selection1, selection2, index=0): |
def setSelectedArea(self, selection1, selection2, index=0): |
134 |
widget=self.widgets[index] |
widget=self.widgets[index] |
161 |
# this should be passed with the event |
# this should be passed with the event |
162 |
|
|
163 |
# Compatibility layer for 0.5.1 |
# Compatibility layer for 0.5.1 |
164 |
text = newtext.decode('utf-8') |
#text = newtext.decode('utf-8') |
165 |
#text = newtext.decode('utf-8').encode(gConfig('textEncoding')) |
text = newtext.decode('utf-8').encode(gConfig('textEncoding')) |
166 |
|
|
167 |
action = events.Event('requestKEYPRESS', text, text=text, |
action = events.Event('requestKEYPRESS', text, text=text, |
168 |
code=0, _form=object._form) |
code=0, _form=object._form) |
226 |
# |
# |
227 |
|
|
228 |
def checkboxHandler(self,event,widget): |
def checkboxHandler(self,event,widget): |
229 |
buttonStatus=newWidget.get_active() |
buttonStatus=widget.get_active() |
230 |
GDebug.printMesg(1, "buttonStatus: " + str(buttonStatus)) |
GDebug.printMesg(1, "buttonStatus: " + str(buttonStatus)) |
231 |
gfObject = self._uiDriver._WidgetToGFObj[widget] |
gfObject = self._uiDriver._WidgetToGFObj[widget] |
232 |
eventdata = [gfObject, buttonStatus] |
eventdata = [gfObject, buttonStatus] |
233 |
action = events.Event('requestTOGGLECHKBOX', _form=gfObject._form) |
action = events.Event('requestTOGGLECHKBOX', _form=gfObject._form) |
234 |
# TODO: allow veto |
# don't process event further |
235 |
self._eventHandler(action) |
widget.emit_stop_by_name('clicked') # FIXME: won't accept veto |
236 |
|
widget.emit_stop_by_name('released') # FIXME: won't accept veto |
237 |
|
|
238 |
|
#gtk.idle_add(self._eventHandler,action) # our eventHandler will be called later |
239 |
return gtk.TRUE |
return gtk.TRUE |
240 |
|
|
241 |
|
|
242 |
|
# TODO: Add support for READONLY edits with: set_editable |
243 |
|
|
244 |
class MultiLineEdit: |
class MultiLineEdit: |
245 |
def __init__(self,value,eventHandler,uiDriver): |
def __init__(self,value,eventHandler,uiDriver): |
264 |
eventHandler,\ |
eventHandler,\ |
265 |
uiDriver) |
uiDriver) |
266 |
|
|
267 |
|
self.mv_cur_handler = self.baseWidget.connect('move-cursor',\ |
268 |
|
self.moveCursorHandler,\ |
269 |
|
eventHandler,\ |
270 |
|
uiDriver) |
271 |
|
|
272 |
# Return own name to let other objects identify this obj. |
# Return own name to let other objects identify this obj. |
273 |
def get_name(self): |
def get_name(self): |
274 |
return 'MultiLineEdit' |
return 'MultiLineEdit' |
275 |
|
|
276 |
def set_position(self,position): |
def set_position(self,position): |
277 |
|
try: |
278 |
|
self.baseWidget.handler_block(self.mv_cur_handler) |
279 |
|
except: |
280 |
|
pass |
281 |
pos_iter = self.textBuffer.get_iter_at_offset(position) |
pos_iter = self.textBuffer.get_iter_at_offset(position) |
282 |
self.textBuffer.place_cursor(pos_iter) |
self.textBuffer.place_cursor(pos_iter) |
283 |
|
print position |
284 |
|
# take care that the cursor is visible |
285 |
|
cur_mark = self.textBuffer.get_insert() |
286 |
|
self.baseWidget.scroll_mark_onscreen(cur_mark) |
287 |
|
#print "SCROLLED TO ", cur_mark |
288 |
|
try: |
289 |
|
self.baseWidget.handler_unblock(self.mv_cur_handler) |
290 |
|
except: |
291 |
|
pass |
292 |
|
|
293 |
def set_text(self,value): |
def set_text(self,value): |
294 |
try: |
try: |
297 |
except: |
except: |
298 |
pass |
pass |
299 |
self.textBuffer.set_text(value) |
self.textBuffer.set_text(value) |
300 |
|
#print "settext" |
301 |
try: |
try: |
302 |
self.textBuffer.handler_unblock(self.insert_handler) |
self.textBuffer.handler_unblock(self.insert_handler) |
303 |
self.textBuffer.handler_unblock(self.delete_handler) |
self.textBuffer.handler_unblock(self.delete_handler) |
306 |
|
|
307 |
# pass through function calls |
# pass through function calls |
308 |
def __getattr__(self, attr): |
def __getattr__(self, attr): |
309 |
|
#print "doing %s" % attr |
310 |
if self.baseWidget and attr[1] != '_' and hasattr(self.baseWidget,attr): |
if self.baseWidget and attr[1] != '_' and hasattr(self.baseWidget,attr): |
311 |
return getattr(self.baseWidget,attr) |
return getattr(self.baseWidget,attr) |
312 |
else: |
else: |
340 |
cursor_iter = widget.get_iter_at_mark(widget.get_insert()) |
cursor_iter = widget.get_iter_at_mark(widget.get_insert()) |
341 |
|
|
342 |
|
|
343 |
|
action = events.Event('requestDELETERANGE', |
344 |
|
start_pos=start_pos.get_offset(), |
345 |
|
end_pos=end_pos.get_offset(), |
346 |
|
position=cursor_iter.get_offset(), |
347 |
|
_form=object._form) |
348 |
|
|
349 |
|
widget.emit_stop_by_name('delete-range') |
350 |
|
gtk.idle_add(eventHandler,action) |
351 |
|
|
352 |
|
def moveCursorHandler(self,widget,arg1,arg2,arg3,eventHandler,uiDriver): |
353 |
|
print "move Cursor (%s,%s,%s)" % (arg1,arg2,arg3) |
354 |
|
#arg1: movement type (1 = horizontal, 3 = vertikal) |
355 |
|
#arg2: offset: +/- relative movement |
356 |
|
object=uiDriver._WidgetToGFObj[self] |
357 |
|
|
358 |
|
return |
359 |
|
cursor_iter = widget.get_iter_at_mark(widget.get_insert()) |
360 |
|
|
361 |
|
|
362 |
action = events.Event('requestDELETERANGE', |
action = events.Event('requestDELETERANGE', |
363 |
start_pos=start_pos.get_offset(), |
start_pos=start_pos.get_offset(), |
364 |
end_pos=end_pos.get_offset(), |
end_pos=end_pos.get_offset(), |