* src/gramps.glade: Add date_edit dialog.

* src/DateEdit.py (DateEditorDialog): Add class.
* src/Date.py (get_quality): Typo.
* src/AddrEdit.py: Use date editor callback.
* src/EditPerson.py: Use date editor callback.
* src/EventEdit.py: Use date editor callback.

* src/AddrEdit.py: Add date editor callback
* src/EditPerson.py: Add date editor callback
* src/EventEdit.py: Add date editor callback


svn: r3552
This commit is contained in:
Alex Roitman 2004-09-18 03:58:30 +00:00
parent b043f908da
commit 35ba39caf3
7 changed files with 818 additions and 37 deletions

View File

@ -1,11 +1,19 @@
2004-09-17 Alex Roitman <shura@alex.neuro.umn.edu>
* src/gramps.glade: Add date_edit dialog.
* src/DateEdit.py (DateEditorDialog): Add class.
* src/Date.py (get_quality): Typo.
* src/AddrEdit.py: Use date editor callback.
* src/EditPerson.py: Use date editor callback.
* src/EventEdit.py: Use date editor callback.
2004-09-17 Don Allingham <dallingham@users.sourceforge.net>
* src/DateDisplay.py: use locale.nl_langinfo to get month
names without manual encoding
* src/DateParser.py: use locale.nl_langinfo to get month
names without manual encoding
* src/AddrEdit.py: Add date editor callback
* src/EditPerson.py: Add date editor callback
* src/EventEdit.py: Add date editor callback
* src/AddrEdit.py: Add date editor callback
* src/EditPerson.py: Add date editor callback
* src/EventEdit.py: Add date editor callback
* src/gramps.glade: replace LED indicators with buttons
2004-09-16 Don Allingham <dallingham@users.sourceforge.net>

View File

@ -44,7 +44,7 @@ import Date
import RelLib
import Sources
from DateEdit import DateEdit
import DateEdit
from gettext import gettext as _
#-------------------------------------------------------------------------
@ -133,7 +133,7 @@ class AddressEditor:
self.top.get_widget('del_src'))
date_stat = self.top.get_widget("date_stat")
self.date_check = DateEdit(self.addr_start,date_stat)
self.date_check = DateEdit.DateEdit(self.addr_start,date_stat)
self.top.signal_autoconnect({
"on_switch_page" : self.on_switch_page,
@ -150,9 +150,9 @@ class AddressEditor:
self.window.show()
def on_date_edit_clicked(self,obj):
from QuestionDialog import ErrorDialog
ErrorDialog("Not implemented yet",
"The Date Editor has not been implemented yet")
date_dialog = DateEdit.DateEditorDialog(self.addr_start.checkval)
the_date = date_dialog.get_date()
print "The date was built as follows:", the_date
def on_delete_event(self,obj,b):
self.close_child_windows()

View File

@ -215,7 +215,7 @@ class Date:
QUAL_ESTIMATED = estimated
QUAL_CALCULATED = calculated
"""
return self.modifier
return self.quality
def set_quality(self,val):
"""

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2002 Donald N. Allingham
# Copyright (C) 2002-2004 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -18,6 +18,8 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id$
"""
The DateEdit interface provides visual feedback to the user via a pixamp
to indicate if the assocated GtkEntry box contains a valid date. Green
@ -29,6 +31,13 @@ instead of a date.
__author__ = "Donald N. Allingham"
__version__ = "$Revision$"
#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GNOME modules
@ -36,6 +45,7 @@ __version__ = "$Revision$"
#-------------------------------------------------------------------------
import gtk
import gtk.gdk
import gtk.glade
#-------------------------------------------------------------------------
#
@ -44,8 +54,27 @@ import gtk.gdk
#-------------------------------------------------------------------------
import Date
import DateParser
import DateDisplay
import const
#-------------------------------------------------------------------------
#
# Constants
#
#-------------------------------------------------------------------------
MOD_TEXT = (
_('Regular'), _('Before'), _('After'), _('About'),
_('Range'), _('Span'), _('Text only') )
QUAL_TEXT = ( _('Regular'), _('Estimated'), _('Calculated') )
MONTHS_NAMES = (
DateDisplay.DateDisplay._MONS,
DateDisplay.DateDisplay._MONS,
DateDisplay.DateDisplay._hebrew,
DateDisplay.DateDisplay._french,
DateDisplay.DateDisplay._persian,
DateDisplay.DateDisplay._islamic,
)
#-------------------------------------------------------------------------
#
# DateEdit
@ -83,5 +112,132 @@ class DateEdit:
# self.pixmap_obj.set_from_pixbuf(DateEdit.caution)
else:
self.pixmap_obj.set_from_pixbuf(DateEdit.good)
#-------------------------------------------------------------------------
#
# DateEditorDialog
#
#-------------------------------------------------------------------------
class DateEditorDialog:
"""
Dialog allowing to build the date precisely, to correct defficiencies
of parsing.
"""
def __init__(self,date):
"""
Initiate and display the dialog.
"""
self.date = date
self.top = gtk.glade.XML(const.dialogFile, "date_edit","gramps" )
self.top_window = self.top.get_widget('date_edit')
self.calendar_box = self.top.get_widget('calendar_box')
for name in Date.Date.calendar_names:
self.calendar_box.append_text(name)
self.calendar_box.set_active(self.date.get_calendar())
self.quality_box = self.top.get_widget('quality_box')
for name in QUAL_TEXT:
self.quality_box.append_text(name)
self.quality_box.set_active(self.date.get_quality())
self.type_box = self.top.get_widget('type_box')
for name in MOD_TEXT:
self.type_box.append_text(name)
self.type_box.set_active(self.date.get_modifier())
self.type_box.connect('changed',self.switch_type)
self.start_month_box = self.top.get_widget('start_month_box')
self.stop_month_box = self.top.get_widget('stop_month_box')
for name in MONTHS_NAMES[self.date.get_calendar()]:
self.start_month_box.append_text(name)
self.stop_month_box.append_text(name)
self.start_month_box.set_active(self.date.get_month())
self.stop_month_box.set_active(self.date.get_stop_month())
self.start_day = self.top.get_widget('start_day')
self.start_day.set_value(self.date.get_day())
self.start_year = self.top.get_widget('start_year')
self.start_year.set_value(self.date.get_year())
self.stop_day = self.top.get_widget('stop_day')
self.stop_day.set_value(self.date.get_stop_day())
self.stop_year = self.top.get_widget('stop_year')
self.stop_year.set_value(self.date.get_stop_year())
if not self.date.is_compound():
self.stop_day.set_sensitive(0)
self.stop_month_box.set_sensitive(0)
self.stop_year.set_sensitive(0)
if self.date.get_modifier() == Date.MOD_TEXTONLY:
self.start_day.set_sensitive(0)
self.start_month_box.set_sensitive(0)
self.start_year.set_sensitive(0)
self.calendar_box.set_sensitive(0)
self.quality_box.set_sensitive(0)
self.text_entry = self.top.get_widget('date_text_entry')
self.text_entry.set_text(self.date.get_text())
response = self.top_window.run()
if response == gtk.RESPONSE_HELP:
print "Help is not hooked up yet, sorry. Exiting now."
elif response == gtk.RESPONSE_OK:
self.build_date_from_ui()
self.top_window.destroy()
def get_date(self):
return self.date
def build_date_from_ui(self):
if self.type_box.get_active() == Date.MOD_TEXTONLY:
self.date.set_as_text(self.text_entry.get_text())
return
if self.type_box.get_active() in (Date.MOD_RANGE,Date.MOD_SPAN):
date_tuple = (
self.start_day.get_value_as_int(),
self.start_month_box.get_active(),
self.start_year.get_value_as_int(),
False,
self.stop_day.get_value_as_int(),
self.stop_month_box.get_active(),
self.stop_year.get_value_as_int(),
False)
else:
date_tuple = (
self.start_day.get_value_as_int(),
self.start_month_box.get_active(),
self.start_year.get_value_as_int(),
False)
self.date.set(
quality=self.quality_box.get_active(),
modifier=self.type_box.get_active(),
calendar=self.calendar_box.get_active(),
value=date_tuple)
self.date.set_text_value(self.text_entry.get_text())
def switch_type(self,obj):
"""
Disable/enable various date controls depending on the date
type selected via the menu.
"""
if self.type_box.get_active() in (Date.MOD_RANGE,Date.MOD_SPAN):
stop_date_sensitivity = 1
else:
stop_date_sensitivity = 0
self.stop_day.set_sensitive(stop_date_sensitivity)
self.stop_month_box.set_sensitive(stop_date_sensitivity)
self.stop_year.set_sensitive(stop_date_sensitivity)
date_sensitivity = not self.type_box.get_active() == Date.MOD_TEXTONLY
self.start_day.set_sensitive(date_sensitivity)
self.start_month_box.set_sensitive(date_sensitivity)
self.start_year.set_sensitive(date_sensitivity)
self.calendar_box.set_sensitive(date_sensitivity)
self.quality_box.set_sensitive(date_sensitivity)

View File

@ -449,12 +449,14 @@ class EditPerson:
self.window.show()
def on_edit_date_birth_clicked(self,obj):
ErrorDialog("Not implemented yet",
"The Date Editor has not been implemented yet")
date_dialog = DateEdit.DateEditorDialog(self.bdate_check.checkval)
the_date = date_dialog.get_date()
print "The date was built as follows:", the_date
def on_edit_date_death_clicked(self,obj):
ErrorDialog("Not implemented yet",
"The Date Editor has not been implemented yet")
date_dialog = DateEdit.DateEditorDialog(self.ddate_check.checkval)
the_date = date_dialog.get_date()
print "The date was built as follows:", the_date
def close_child_windows(self):
for child_window in self.child_windows.values():

View File

@ -48,7 +48,7 @@ import DateParser
import DateHandler
import ImageSelect
from DateEdit import DateEdit
import DateEdit
from gettext import gettext as _
from QuestionDialog import WarningDialog
@ -136,7 +136,6 @@ class EventEditor:
self.note_field = self.top.get_widget("eventNote")
self.event_menu = self.top.get_widget("personal_events")
self.priv = self.top.get_widget("priv")
self.calendar = self.top.get_widget("calendar")
self.sources_label = self.top.get_widget("sourcesEvent")
self.notes_label = self.top.get_widget("notesEvent")
self.flowed = self.top.get_widget("eventflowed")
@ -144,8 +143,6 @@ class EventEditor:
self.gallery_label = self.top.get_widget("galleryEvent")
self.witnesses_label = self.top.get_widget("witnessesEvent")
self.calendar.show()
if read_only:
self.event_menu.set_sensitive(0)
self.date_field.grab_focus()
@ -197,7 +194,7 @@ class EventEditor:
self.event_menu.child.set_text(def_event)
if def_placename:
self.place_field.set_text(def_placename)
self.date_check = DateEdit(self.date_field,self.top.get_widget("date_stat"))
self.date_check = DateEdit.DateEdit(self.date_field,self.top.get_widget("date_stat"))
if not event:
event = RelLib.Event()
@ -219,28 +216,14 @@ class EventEditor:
"on_date_edit_clicked" : self.on_date_edit_clicked,
})
menu = gtk.Menu()
index = 0
for cobj in Date.Date.calendar:
item = gtk.MenuItem(cobj)
item.set_data("d",index)
item.connect("activate",self.on_menu_changed)
item.show()
menu.append(item)
if self.date.get_calendar() == index:
menu.set_active(index)
self.date_check.set_calendar(index)
index += 1
self.calendar.set_menu(menu)
self.window.set_transient_for(self.parent.window)
self.add_itself_to_menu()
self.window.show()
def on_date_edit_clicked(self,obj):
from QuestionDialog import ErrorDialog
ErrorDialog("Not implemented yet",
"The Date Editor has not been implemented yet")
date_dialog = DateEdit.DateEditorDialog(self.date_check.checkval)
the_date = date_dialog.get_date()
print "The date was built as follows:", the_date
def on_delete_event(self,obj,b):
self.gallery.close()

View File

@ -30727,4 +30727,636 @@ Other</property>
</child>
</widget>
<widget class="GtkDialog" id="date_edit">
<property name="visible">True</property>
<property name="title" translatable="yes">Date selection - GRAMPS</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox86">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox36">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button174">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="button175">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-6</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="button176">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-5</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox87">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label403">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;&lt;big&gt;Date selection&lt;/big&gt;&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox88">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox95">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label404">
<property name="visible">True</property>
<property name="label" translatable="yes">Calendar:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="calendar_box">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table48">
<property name="visible">True</property>
<property name="n_rows">5</property>
<property name="n_columns">8</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<widget class="GtkLabel" id="label405">
<property name="visible">True</property>
<property name="label" translatable="yes">Year</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">7</property>
<property name="right_attach">8</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label406">
<property name="visible">True</property>
<property name="label" translatable="yes">Month</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">6</property>
<property name="right_attach">7</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label407">
<property name="visible">True</property>
<property name="label" translatable="yes">Day</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">5</property>
<property name="right_attach">6</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label408">
<property name="visible">True</property>
<property name="label" translatable="yes">Year</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label409">
<property name="visible">True</property>
<property name="label" translatable="yes">Month</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label410">
<property name="visible">True</property>
<property name="label" translatable="yes">Day</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label411">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Date&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">4</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label412">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Second date&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">8</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkSpinButton" id="start_day">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">True</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">0 0 31 1 10 10</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkSpinButton" id="stop_day">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">True</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">0 0 31 1 10 10</property>
</widget>
<packing>
<property name="left_attach">5</property>
<property name="right_attach">6</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkSpinButton" id="stop_year">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">True</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">0 0 2100 1 10 10</property>
</widget>
<packing>
<property name="left_attach">7</property>
<property name="right_attach">8</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label413">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Quality&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">4</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label414">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Type&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">8</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="stop_month_box">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
</widget>
<packing>
<property name="left_attach">6</property>
<property name="right_attach">7</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="start_month_box">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkSpinButton" id="start_year">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">True</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">0 0 2100 1 10 10</property>
</widget>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_padding">6</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="quality_box">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_padding">6</property>
<property name="y_padding">6</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="type_box">
<property name="visible">True</property>
<property name="items" translatable="yes"></property>
</widget>
<packing>
<property name="left_attach">5</property>
<property name="right_attach">8</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_padding">6</property>
<property name="y_padding">6</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox96">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label415">
<property name="visible">True</property>
<property name="label" translatable="yes">Text comment:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="date_text_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>