2007-03-24 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
* src/MarkupText.py (MarkupBuffer.set_text): better unicode encoding. * src/Editors/_EditPlace.py: source code encoding comment removed; EditPlace._validate_coordinate: proper unicode coding; EditPlace._setup_fields: longitude and latitude entries moved out to glade. * src/Editors/_EditNote.py (EditNote._local_init): redundant method call removed. * src/GrampsWidgets.py: enable custom widget support from glade; MonitoredEntry.connect: enable support for custom data for signal. * src/glade/gramps.glade (place_editor): include ValidatableMaskedEntry for longitude and latitude entries. * src/ManagedWindow.py (ManagedWindow.show): replace window.show() with window.show_all(). svn: r8311
This commit is contained in:
parent
7db878ef61
commit
901f282088
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
|||||||
|
2007-03-24 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
||||||
|
* src/MarkupText.py (MarkupBuffer.set_text): better unicode encoding.
|
||||||
|
* src/Editors/_EditPlace.py: source code encoding comment removed;
|
||||||
|
EditPlace._validate_coordinate: proper unicode coding;
|
||||||
|
EditPlace._setup_fields: longitude and latitude entries moved out to
|
||||||
|
glade.
|
||||||
|
* src/Editors/_EditNote.py (EditNote._local_init): redundant method
|
||||||
|
call removed.
|
||||||
|
* src/GrampsWidgets.py: enable custom widget support from glade;
|
||||||
|
MonitoredEntry.connect: enable support for custom data for signal.
|
||||||
|
* src/glade/gramps.glade (place_editor): include ValidatableMaskedEntry
|
||||||
|
for longitude and latitude entries.
|
||||||
|
* src/ManagedWindow.py (ManagedWindow.show): replace window.show() with
|
||||||
|
window.show_all().
|
||||||
|
|
||||||
2007-03-21 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
2007-03-21 Zsolt Foldvari <zfoldvar@users.sourceforge.net>
|
||||||
* src/MarkupText.py (MarkupBuffer.set_text): convert unicode to byte
|
* src/MarkupText.py (MarkupBuffer.set_text): convert unicode to byte
|
||||||
string for parseString.
|
string for parseString.
|
||||||
|
@ -90,7 +90,6 @@ class EditNote(EditPrimary):
|
|||||||
self.window.set_default_size(width, height)
|
self.window.set_default_size(width, height)
|
||||||
|
|
||||||
self.build_interface()
|
self.build_interface()
|
||||||
self.window.show_all()
|
|
||||||
|
|
||||||
def _setup_fields(self):
|
def _setup_fields(self):
|
||||||
"""Get control widgets and attached them to Note's attributes."""
|
"""Get control widgets and attached them to Note's attributes."""
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# -*- coding: latin-1 -*-
|
#
|
||||||
# Gramps - a GTK+/GNOME based genealogy program
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
#
|
#
|
||||||
# Copyright (C) 2000-2006 Donald N. Allingham
|
# Copyright (C) 2000-2006 Donald N. Allingham
|
||||||
@ -68,7 +68,8 @@ class EditPlace(EditPrimary):
|
|||||||
def _local_init(self):
|
def _local_init(self):
|
||||||
self.top = gtk.glade.XML(const.gladeFile,"place_editor","gramps")
|
self.top = gtk.glade.XML(const.gladeFile,"place_editor","gramps")
|
||||||
|
|
||||||
self.set_window(self.top.get_widget("place_editor"), None, self.get_menu_title())
|
self.set_window(self.top.get_widget("place_editor"), None,
|
||||||
|
self.get_menu_title())
|
||||||
width = Config.get(Config.PLACE_WIDTH)
|
width = Config.get(Config.PLACE_WIDTH)
|
||||||
height = Config.get(Config.PLACE_HEIGHT)
|
height = Config.get(Config.PLACE_HEIGHT)
|
||||||
self.window.resize(width, height)
|
self.window.resize(width, height)
|
||||||
@ -134,37 +135,27 @@ class EditPlace(EditPrimary):
|
|||||||
self.country = MonitoredEntry(
|
self.country = MonitoredEntry(
|
||||||
self.top.get_widget("country"),
|
self.top.get_widget("country"),
|
||||||
mloc.set_country, mloc.get_country, self.db.readonly)
|
mloc.set_country, mloc.get_country, self.db.readonly)
|
||||||
|
|
||||||
table = self.top.get_widget("table66")
|
|
||||||
|
|
||||||
entry = ValidatableMaskedEntry()
|
|
||||||
entry.connect("validate", self._validate_coordinate, "lon")
|
|
||||||
entry.show()
|
|
||||||
table.attach(entry, 3, 4, 1, 2, yoptions=gtk.EXPAND)
|
|
||||||
|
|
||||||
self.longitude = MonitoredEntry(
|
self.longitude = MonitoredEntry(
|
||||||
entry,
|
self.top.get_widget("lon_entry"),
|
||||||
self.obj.set_longitude, self.obj.get_longitude,
|
self.obj.set_longitude, self.obj.get_longitude,
|
||||||
self.db.readonly)
|
self.db.readonly)
|
||||||
|
self.longitude.connect("validate", self._validate_coordinate, "lon")
|
||||||
|
|
||||||
entry = ValidatableMaskedEntry()
|
|
||||||
entry.connect("validate", self._validate_coordinate, "lat")
|
|
||||||
entry.show()
|
|
||||||
table.attach(entry, 1, 2, 1, 2, yoptions=gtk.EXPAND)
|
|
||||||
|
|
||||||
self.latitude = MonitoredEntry(
|
self.latitude = MonitoredEntry(
|
||||||
entry,
|
self.top.get_widget("lat_entry"),
|
||||||
self.obj.set_latitude, self.obj.get_latitude,
|
self.obj.set_latitude, self.obj.get_latitude,
|
||||||
self.db.readonly)
|
self.db.readonly)
|
||||||
|
self.latitude.connect("validate", self._validate_coordinate, "lat")
|
||||||
|
|
||||||
def _validate_coordinate(self, widget, text, typedeg):
|
def _validate_coordinate(self, widget, text, typedeg):
|
||||||
if (typedeg == 'lat') and not conv_lat_lon(text, "0", "ISO-D"):
|
if (typedeg == 'lat') and not conv_lat_lon(text, "0", "ISO-D"):
|
||||||
return ValidationError(_("Invalid latitude (syntax: 18°9'" +
|
return ValidationError(_(u"Invalid latitude (syntax: 18\u00b09'" +
|
||||||
'48.21"S, -18.2412 or -18:9:48.21)'))
|
'48.21"S, -18.2412 or -18:9:48.21)'))
|
||||||
elif (typedeg == 'lon') and not conv_lat_lon("0", text, "ISO-D"):
|
elif (typedeg == 'lon') and not conv_lat_lon("0", text, "ISO-D"):
|
||||||
return ValidationError(_("Invalid longitude (syntax: 18°9'" +
|
return ValidationError(_(u"Invalid longitude (syntax: 18\u00b09'" +
|
||||||
'48.21"E, -18.2412 or -18:9:48.21)'))
|
'48.21"E, -18.2412 or -18:9:48.21)'))
|
||||||
|
|
||||||
def build_menu_names(self,place):
|
def build_menu_names(self,place):
|
||||||
return (_('Edit Place'), self.get_menu_title())
|
return (_('Edit Place'), self.get_menu_title())
|
||||||
|
|
||||||
|
@ -74,6 +74,15 @@ try:
|
|||||||
except:
|
except:
|
||||||
INFO_ICON = gtk.STOCK_DIALOG_INFO
|
INFO_ICON = gtk.STOCK_DIALOG_INFO
|
||||||
|
|
||||||
|
# Enabling custom widgets to be included in Glade
|
||||||
|
def get_custom_handler(glade, function_name, widget_name,
|
||||||
|
str1, str2, int1, int2):
|
||||||
|
if function_name == 'ValidatableMaskedEntry':
|
||||||
|
return ValidatableMaskedEntry()
|
||||||
|
|
||||||
|
gtk.glade.set_custom_handler(get_custom_handler)
|
||||||
|
|
||||||
|
|
||||||
hand_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2)
|
hand_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2)
|
||||||
def realize_cb(widget):
|
def realize_cb(widget):
|
||||||
widget.window.set_cursor(hand_cursor)
|
widget.window.set_cursor(hand_cursor)
|
||||||
@ -349,8 +358,8 @@ class MonitoredEntry:
|
|||||||
def set_text(self, text):
|
def set_text(self, text):
|
||||||
self.obj.set_text(text)
|
self.obj.set_text(text)
|
||||||
|
|
||||||
def connect(self, signal, callback):
|
def connect(self, signal, callback, *data):
|
||||||
self.obj.connect(signal, callback)
|
self.obj.connect(signal, callback, *data)
|
||||||
|
|
||||||
def _on_change(self, obj):
|
def _on_change(self, obj):
|
||||||
self.set_val(unicode(obj.get_text()))
|
self.set_val(unicode(obj.get_text()))
|
||||||
|
@ -369,7 +369,7 @@ class ManagedWindow:
|
|||||||
assert self.window, "ManagedWindow: self.window does not exist!"
|
assert self.window, "ManagedWindow: self.window does not exist!"
|
||||||
self.window.set_transient_for(self.parent_window)
|
self.window.set_transient_for(self.parent_window)
|
||||||
self.opened = True
|
self.opened = True
|
||||||
self.window.show()
|
self.window.show_all()
|
||||||
|
|
||||||
def close(self,*obj):
|
def close(self,*obj):
|
||||||
"""
|
"""
|
||||||
|
@ -272,7 +272,7 @@ class MarkupBuffer(gtk.TextBuffer):
|
|||||||
Also translates Gramps XML markup language to gtk.TextTag's and vice versa.
|
Also translates Gramps XML markup language to gtk.TextTag's and vice versa.
|
||||||
|
|
||||||
Based on 'gourmet-0.13.3' L{http://grecipe-manager.sourceforge.net}
|
Based on 'gourmet-0.13.3' L{http://grecipe-manager.sourceforge.net}
|
||||||
Pango markup format is replaces by custom Gramps XML format.
|
Pango markup format is replaced by custom Gramps XML format.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
texttag_to_xml = {
|
texttag_to_xml = {
|
||||||
@ -297,7 +297,7 @@ class MarkupBuffer(gtk.TextBuffer):
|
|||||||
def set_text(self, xmltext):
|
def set_text(self, xmltext):
|
||||||
"""Set the content of the buffer with markup tags."""
|
"""Set the content of the buffer with markup tags."""
|
||||||
try:
|
try:
|
||||||
parseString(str(xmltext), self.parser)
|
parseString(xmltext.encode('utf-8'), self.parser)
|
||||||
text = self.parser.content
|
text = self.parser.content
|
||||||
except:
|
except:
|
||||||
# if parse fails remove all tags and use clear text instead
|
# if parse fails remove all tags and use clear text instead
|
||||||
|
@ -1708,6 +1708,40 @@
|
|||||||
<property name="y_options"></property>
|
<property name="y_options"></property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="Custom" id="lon_entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="creation_function">ValidatableMaskedEntry</property>
|
||||||
|
<property name="int1">0</property>
|
||||||
|
<property name="int2">0</property>
|
||||||
|
<property name="last_modification_time">Fri, 23 Mar 2007 20:18:43 GMT</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">3</property>
|
||||||
|
<property name="right_attach">4</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
<property name="bottom_attach">2</property>
|
||||||
|
<property name="y_options">fill</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="Custom" id="lat_entry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="creation_function">ValidatableMaskedEntry</property>
|
||||||
|
<property name="int1">0</property>
|
||||||
|
<property name="int2">0</property>
|
||||||
|
<property name="last_modification_time">Fri, 23 Mar 2007 20:17:51 GMT</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="right_attach">2</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
<property name="bottom_attach">2</property>
|
||||||
|
<property name="y_options">fill</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="padding">0</property>
|
<property name="padding">0</property>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user