Esempio n. 1
0
 def mkview(self):
     """Create and return view object for the model."""
     if self.view is not None:
         return self.view
     v = gtk.TreeView(self.model)
     v.set_reorderable(True)
     v.set_enable_search(False)
     v.set_rules_hint(True)
     v.connect('key-press-event', self.__view_key)
     v.show()
     uiutil.mkviewcoltxt(v, 'No.', COL_EVNO, self.__editcol_cb,
                             editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v, 'Prefix', COL_PREFIX, self.__editcol_cb,
                              expand=True, editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v, 'Info', COL_INFO, self.__editcol_cb,
                             expand=True, editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v, 'Ser', COL_SERIES, self.__editcol_cb,
                              editcb=self.__editstart_cb)
     i = gtk.CellRendererCombo()
     i.set_property('editable', True)
     m = gtk.ListStore(gobject.TYPE_STRING)
     for race in self.racetypes:
         m.append([race])
     i.set_property('model', m)
     i.set_property('text-column', 0)
     i.connect('edited', self.__editcol_cb, COL_TYPE)
     i.connect('editing-started', self.__editstart_cb, 'combo')
     j = gtk.TreeViewColumn('Type', i, text=COL_TYPE)
     j.set_min_width(90)
     v.append_column(j)
     self.view = v
     return self.view
Esempio n. 2
0
    def __init__(self, meet, event, ui=True):
        self.meet = meet
        self.event = event      # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.sportif')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('opening event: ' + str(self.evno))

        # race run time attributes
        self.readonly = not ui
        self.start = None
        self.lstart = None
        self.finish = None
        self.winopen = True
        self.timerstat = 'idle'
        self.minlap = tod.tod('20:00.0')

        self.riders = gtk.ListStore(gobject.TYPE_STRING, # BIB = 0
                                    gobject.TYPE_STRING, # NAMESTR = 1
                                    gobject.TYPE_STRING, # CAT = 2
                                    gobject.TYPE_STRING, # COMMENT = 3
                                    gobject.TYPE_PYOBJECT, # RFTIME = 4
                                    gobject.TYPE_PYOBJECT) # RFSEEN = 5

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'sportif.ui'))

        # !! destroy??
        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()
        self.time_lbl = b.get_object('time_lbl')
        self.time_lbl.modify_font(pango.FontDescription("monospace bold"))

        # results pane
        t = gtk.TreeView(self.riders)
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.show()
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, calign=1.0)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        uiutil.mkviewcoltxt(t, 'Comment', COL_COMMENT,
                                cb=self.editcol_cb, width=120)
        b.get_object('race_result_win').add(t)

        if ui:
            # connect signal handlers
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 3
0
 def mkview(self):
     """Create and return view object for the model."""
     if self.view is not None:
         return self.view
     v = gtk.TreeView(self.model)
     v.set_reorderable(True)
     v.set_enable_search(False)
     v.set_rules_hint(True)
     v.connect('key-press-event', self.__view_key)
     v.show()
     uiutil.mkviewcoltxt(v,
                         'No.',
                         COL_EVNO,
                         self.__editcol_cb,
                         editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v,
                         'Prefix',
                         COL_PREFIX,
                         self.__editcol_cb,
                         expand=True,
                         editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v,
                         'Info',
                         COL_INFO,
                         self.__editcol_cb,
                         expand=True,
                         editcb=self.__editstart_cb)
     uiutil.mkviewcoltxt(v,
                         'Ser',
                         COL_SERIES,
                         self.__editcol_cb,
                         editcb=self.__editstart_cb)
     i = gtk.CellRendererCombo()
     i.set_property('editable', True)
     m = gtk.ListStore(gobject.TYPE_STRING)
     for race in self.racetypes:
         m.append([race])
     i.set_property('model', m)
     i.set_property('text-column', 0)
     i.connect('edited', self.__editcol_cb, COL_TYPE)
     i.connect('editing-started', self.__editstart_cb, 'combo')
     j = gtk.TreeViewColumn('Type', i, text=COL_TYPE)
     j.set_min_width(90)
     v.append_column(j)
     self.view = v
     return self.view
Esempio n. 4
0
    def __init__(self):
        self.io = uscbio()
        self.io.setcb(self.msg_cb)
        self.started = False
        self.running = True

        self.timetick = TIMETICK
        self.fontsize = FONTSIZE
        fnszstr = str(self.fontsize)+'px'

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'rr_announce.ui'))
        self.window = b.get_object('window')

        self.lbl_header = b.get_object('lbl_header')
        self.lbl_header.modify_font(pango.FontDescription('bold '+fnszstr))
        self.lbl_header.set_text('SCBdo road announce ' + scbdo.VERSION)
        self.elap_lbl = b.get_object('elap_lbl')
        self.elap_lbl.set_text('--:--')
        self.elap_lbl.modify_font(pango.FontDescription('monospace bold '+fnszstr))
        self.map_winsz = 0
        self.map_xoft = 0
        self.map_w = 0
        self.map_area = b.get_object('map_area')
        self.map_src = None
        self.map_area.set_size_request(-1, 80)
        self.map_area.show()

        # lap & bunch status values
        self.cur_lap = tod.tod(0)
        self.cur_split = tod.tod(0)
        self.cur_bunchid = 0
        self.cur_bunchcnt = 0

        self.riders = gtk.ListStore(gobject.TYPE_STRING,  # rank
                                    gobject.TYPE_STRING,  # no.
                                    gobject.TYPE_STRING,  # namestr
                                    gobject.TYPE_STRING,  # cat/com
                                    gobject.TYPE_STRING,  # timestr
                                    gobject.TYPE_STRING,  # bunchcnt
                                    gobject.TYPE_STRING,  # colour
                                    gobject.TYPE_PYOBJECT) # rftod

        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(False)
        t.set_rules_hint(False)
        t.set_headers_visible(False)
        self.search_lbl = b.get_object('search_lbl')
        self.search_lbl.modify_font(pango.FontDescription(fnszstr))
        self.search_entry = b.get_object('search_entry')
        self.search_entry.modify_font(pango.FontDescription(fnszstr))
        t.set_search_entry(b.get_object('search_entry'))
        t.set_search_column(1)
        t.modify_font(pango.FontDescription('bold '+fnszstr))
        uiutil.mkviewcoltxt(t, 'Rank', 0,width=60)
        uiutil.mkviewcoltxt(t, 'No.', 1,calign=1.0,width=60)
        uiutil.mkviewcoltxt(t, 'Rider', 2,expand=True,fixed=True)
        uiutil.mkviewcoltxt(t, 'Cat', 3,calign=0.0)
        uiutil.mkviewcoltxt(t, 'Time', 4,calign=1.0,width=100,
                                        fontdesc='monospace bold')
        uiutil.mkviewcoltxt(t, 'Bunch', 5,width=50,bgcol=6,calign=0.5)
        t.show()
        b.get_object('text_scroll').add(t)
        b.connect_signals(self)
Esempio n. 5
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event  # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.evtype = meet.edb.getvalue(event, eventdb.COL_TYPE)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)
        self.log = logging.getLogger('scbdo.points')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('opening event: ' + str(self.evno))

        # race run time attributes
        self.onestart = False
        self.readonly = not ui
        self.winopen = True

        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # 0 bib
            gobject.TYPE_STRING,  # 1 first name
            gobject.TYPE_STRING,  # 2 last name
            gobject.TYPE_STRING,  # 3 club
            gobject.TYPE_STRING,  # 4 comment
            gobject.TYPE_INT,  # 5 total
            gobject.TYPE_PYOBJECT,  # 6 time total
            gobject.TYPE_STRING,  # 7 place
            gobject.TYPE_PYOBJECT)  # event points

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'omnium.ui'))

        self.frame = b.get_object('omnium_vbox')
        self.frame.connect('destroy', self.shutdown)

        # info pane
        self.info_expand = b.get_object('info_expand')
        b.get_object('omnium_info_evno').set_text(self.evno)
        self.showev = b.get_object('omnium_info_evno_show')
        self.prefix_ent = b.get_object('omnium_info_prefix')
        self.prefix_ent.set_text(
            self.meet.edb.getvalue(self.event, eventdb.COL_PREFIX))
        self.prefix_ent.connect('changed', self.editent_cb, eventdb.COL_PREFIX)
        self.info_ent = b.get_object('omnium_info_title')
        self.info_ent.set_text(
            self.meet.edb.getvalue(self.event, eventdb.COL_INFO))
        self.info_ent.connect('changed', self.editent_cb, eventdb.COL_INFO)
        self.update_expander_lbl_cb()

        # riders pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_enable_search(False)
        t.set_rules_hint(True)

        # riders columns
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, calign=1.0)
        uiutil.mkviewcoltxt(t, 'First Name', COL_FIRST, expand=True)
        uiutil.mkviewcoltxt(t, 'Last Name', COL_LAST, expand=True)
        uiutil.mkviewcoltxt(t, 'Club', COL_CLUB)
        uiutil.mkviewcoltxt(t, 'Points', COL_TOTAL, calign=1.0)
        uiutil.mkviewcoltod(t, 'Time', cb=self.todstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE, halign=0.5, calign=0.5)
        t.show()
        b.get_object('omnium_result_win').add(t)

        if ui:
            # connect signal handlers
            b.connect_signals(self)
            # update properties in meet
            self.meet.menu_race_properties.set_sensitive(True)
            self.meet.edb.editevent(event, winopen=True)
            glib.timeout_add_seconds(3, self.delayed_announce)
Esempio n. 6
0
    def __init__(self, meet, event, ui=True):
        """Constructor.

        Parameters:

            meet -- handle to meet object
            event -- event object handle
            ui -- display user interface?

        """
        self.meet = meet
        self.event = event	# Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.evtype = meet.edb.getvalue(event, eventdb.COL_TYPE)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = meet.event_configfile(self.evno)

        self.log = logging.getLogger('scbdo.race')
        self.log.setLevel(logging.DEBUG)        # config may override?
        self.log.debug('Creating new event: ' + str(self.evno))
        self.results = []

        self.readonly = not ui
        self.onestart = False
        self.start = None
        self.lstart = None
        self.finish = None
        self.winopen = True
        self.timerwin = False
        self.timerstat = 'idle'
        self.distance = None
        self.units = 'laps'
        self.timetype = 'start/finish'
        self.topn_places = 0
        self.topn_event = ''
        self.topn_transfer = False

        self.riders = gtk.ListStore(gobject.TYPE_STRING, # 0 bib
                                    gobject.TYPE_STRING, # 1 first name
                                    gobject.TYPE_STRING, # 2 last name
                                    gobject.TYPE_STRING, # 3 club
                                    gobject.TYPE_STRING, # 4 xtra info
                                    gobject.TYPE_BOOLEAN,# 5 DNF/DNS
                                    gobject.TYPE_STRING) # 6 placing

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'race.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # info pane
        self.info_expand = b.get_object('info_expand')
        b.get_object('race_info_evno').set_text(self.evno)
        self.showev = b.get_object('race_info_evno_show')
        self.prefix_ent = b.get_object('race_info_prefix')
        self.prefix_ent.connect('changed', self.editent_cb,
                                 eventdb.COL_PREFIX)
        self.prefix_ent.set_text(self.meet.edb.getvalue(
                   self.event, eventdb.COL_PREFIX))
        self.info_ent = b.get_object('race_info_title')
        self.info_ent.connect('changed', self.editent_cb,
                               eventdb.COL_INFO)
        self.info_ent.set_text(self.meet.edb.getvalue(
                   self.event, eventdb.COL_INFO))

        self.time_lbl = b.get_object('race_info_time')
        self.time_lbl.modify_font(pango.FontDescription("monospace bold"))
        self.type_lbl = b.get_object('race_type')
        self.type_lbl.set_text(self.meet.edb.getvalue(
                                 self.event, eventdb.COL_TYPE).capitalize())

        # ctrl pane
        self.stat_but = b.get_object('race_ctrl_stat_but')
        self.ctrl_places = b.get_object('race_ctrl_places')
        self.ctrl_action_combo = b.get_object('race_ctrl_action_combo')
        self.ctrl_action = b.get_object('race_ctrl_action')
        self.action_model = b.get_object('race_action_model')

        # riders pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_enable_search(False)
        t.set_rules_hint(True)

        # riders columns
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, self.editcol_cb, calign=1.0)
        uiutil.mkviewcoltxt(t, 'First Name', COL_FIRSTNAME,
                               self.editcol_cb, expand=True)
        uiutil.mkviewcoltxt(t, 'Last Name', COL_LASTNAME,
                               self.editcol_cb, expand=True)
        uiutil.mkviewcoltxt(t, 'Club', COL_CLUB, self.editcol_cb)
        uiutil.mkviewcoltxt(t, 'Info', COL_INFO, self.editcol_cb)
        uiutil.mkviewcolbool(t, 'DNF', COL_DNF, self.dnf_cb)
        uiutil.mkviewcoltxt(t, 'Place', COL_PLACE, self.editcol_cb,
                                halign=0.5, calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # start timer and show window
        if ui:
            # connect signal handlers
            b.connect_signals(self)
            self.meet.menu_race_properties.set_sensitive(True)
            self.meet.edb.editevent(event, winopen=True)
            glib.timeout_add_seconds(3, self.delayed_announce)
Esempio n. 7
0
    def __init__(self, meet, event, ui=True):
        self.meet = meet
        self.event = event  # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.sportif')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('opening event: ' + str(self.evno))

        # race run time attributes
        self.readonly = not ui
        self.start = None
        self.lstart = None
        self.finish = None
        self.winopen = True
        self.timerstat = 'idle'
        self.minlap = tod.tod('20:00.0')

        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # BIB = 0
            gobject.TYPE_STRING,  # NAMESTR = 1
            gobject.TYPE_STRING,  # CAT = 2
            gobject.TYPE_STRING,  # COMMENT = 3
            gobject.TYPE_PYOBJECT,  # RFTIME = 4
            gobject.TYPE_PYOBJECT)  # RFSEEN = 5

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'sportif.ui'))

        # !! destroy??
        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()
        self.time_lbl = b.get_object('time_lbl')
        self.time_lbl.modify_font(pango.FontDescription("monospace bold"))

        # results pane
        t = gtk.TreeView(self.riders)
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.show()
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, calign=1.0)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        uiutil.mkviewcoltxt(t,
                            'Comment',
                            COL_COMMENT,
                            cb=self.editcol_cb,
                            width=120)
        b.get_object('race_result_win').add(t)

        if ui:
            # connect signal handlers
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 8
0
    def __init__(self, meet, event, ui=True):
        """Constructor.

        Parameters:

            meet -- handle to meet object
            event -- event object handle
            ui -- display user interface?

        """
        self.meet = meet
        self.event = event  # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.evtype = meet.edb.getvalue(event, eventdb.COL_TYPE)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = meet.event_configfile(self.evno)

        self.log = logging.getLogger('scbdo.race')
        self.log.setLevel(logging.DEBUG)  # config may override?
        self.log.debug('Creating new event: ' + str(self.evno))
        self.results = []

        self.readonly = not ui
        self.onestart = False
        self.start = None
        self.lstart = None
        self.finish = None
        self.winopen = True
        self.timerwin = False
        self.timerstat = 'idle'
        self.distance = None
        self.units = 'laps'
        self.timetype = 'start/finish'
        self.topn_places = 0
        self.topn_event = ''
        self.topn_transfer = False

        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # 0 bib
            gobject.TYPE_STRING,  # 1 first name
            gobject.TYPE_STRING,  # 2 last name
            gobject.TYPE_STRING,  # 3 club
            gobject.TYPE_STRING,  # 4 xtra info
            gobject.TYPE_BOOLEAN,  # 5 DNF/DNS
            gobject.TYPE_STRING)  # 6 placing

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'race.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # info pane
        self.info_expand = b.get_object('info_expand')
        b.get_object('race_info_evno').set_text(self.evno)
        self.showev = b.get_object('race_info_evno_show')
        self.prefix_ent = b.get_object('race_info_prefix')
        self.prefix_ent.connect('changed', self.editent_cb, eventdb.COL_PREFIX)
        self.prefix_ent.set_text(
            self.meet.edb.getvalue(self.event, eventdb.COL_PREFIX))
        self.info_ent = b.get_object('race_info_title')
        self.info_ent.connect('changed', self.editent_cb, eventdb.COL_INFO)
        self.info_ent.set_text(
            self.meet.edb.getvalue(self.event, eventdb.COL_INFO))

        self.time_lbl = b.get_object('race_info_time')
        self.time_lbl.modify_font(pango.FontDescription("monospace bold"))
        self.type_lbl = b.get_object('race_type')
        self.type_lbl.set_text(
            self.meet.edb.getvalue(self.event, eventdb.COL_TYPE).capitalize())

        # ctrl pane
        self.stat_but = b.get_object('race_ctrl_stat_but')
        self.ctrl_places = b.get_object('race_ctrl_places')
        self.ctrl_action_combo = b.get_object('race_ctrl_action_combo')
        self.ctrl_action = b.get_object('race_ctrl_action')
        self.action_model = b.get_object('race_action_model')

        # riders pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_enable_search(False)
        t.set_rules_hint(True)

        # riders columns
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, self.editcol_cb, calign=1.0)
        uiutil.mkviewcoltxt(t,
                            'First Name',
                            COL_FIRSTNAME,
                            self.editcol_cb,
                            expand=True)
        uiutil.mkviewcoltxt(t,
                            'Last Name',
                            COL_LASTNAME,
                            self.editcol_cb,
                            expand=True)
        uiutil.mkviewcoltxt(t, 'Club', COL_CLUB, self.editcol_cb)
        uiutil.mkviewcoltxt(t, 'Info', COL_INFO, self.editcol_cb)
        uiutil.mkviewcolbool(t, 'DNF', COL_DNF, self.dnf_cb)
        uiutil.mkviewcoltxt(t,
                            'Place',
                            COL_PLACE,
                            self.editcol_cb,
                            halign=0.5,
                            calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # start timer and show window
        if ui:
            # connect signal handlers
            b.connect_signals(self)
            self.meet.menu_race_properties.set_sensitive(True)
            self.meet.edb.editevent(event, winopen=True)
            glib.timeout_add_seconds(3, self.delayed_announce)
Esempio n. 9
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event  # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.rhcp')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('Creating new rhcp event: ' + str(self.evno))

        # race run time attributes
        self.limit_tod = None  # Maximum handicap ToD, set on START!
        self.readonly = not ui
        self.winopen = True
        self.timerstat = 'idle'
        self.start = None
        self.lstart = None
        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # 0 bib
            gobject.TYPE_STRING,  # 1 series
            gobject.TYPE_STRING,  # 2 namestr
            gobject.TYPE_STRING,  # 3 cat
            gobject.TYPE_STRING,  # 4 comment
            gobject.TYPE_BOOLEAN,  # 5 inrace?
            gobject.TYPE_PYOBJECT,  # 6 hcap
            gobject.TYPE_PYOBJECT,  # 7 finish
            gobject.TYPE_PYOBJECT,  # 8 c-bunch
            gobject.TYPE_PYOBJECT,  # 9 m-bunch
            gobject.TYPE_STRING)  # 10 place

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'rhcp.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()

        # Control Pane
        # TODO -> ctrl, places, action

        # Result Pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.connect('button_press_event', self.treeview_button_press)

        # TODO: show team name & club but pop up for rider list
        uiutil.mkviewcolbibser(t)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        #uiutil.mkviewcoltxt(t, 'Cat', COL_CAT, self.editcol_cb)
        #!!!
        #uiutil.mkviewcoltod(t, 'Hcap', cb=self.hcapstr, width=60)
        #uiutil.mkviewcoltod(t, 'RFtime', cb=self.rftimestr)
        #uiutil.mkviewcoltod(t, 'Bunch', cb=self.bunchstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE, halign=0.5, calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # show window
        if ui:
            b.connect_signals(self)
            b = gtk.Builder()
            b.add_from_file(os.path.join(scbdo.UI_PATH, 'tod_context.ui'))
            self.context_menu = b.get_object('tod_context')
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 10
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event      # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.evtype = meet.edb.getvalue(event, eventdb.COL_TYPE)
        self.series = meet.edb.getvalue(event, eventdb.COL_SERIES)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)
        self.log = logging.getLogger('scbdo.points')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('opening event: ' + str(self.evno))

        # race run time attributes
        self.onestart = False
        self.readonly = not ui
        self.winopen = True

        self.riders = gtk.ListStore(gobject.TYPE_STRING, # 0 bib
                                    gobject.TYPE_STRING, # 1 first name
                                    gobject.TYPE_STRING, # 2 last name
                                    gobject.TYPE_STRING, # 3 club
                                    gobject.TYPE_STRING, # 4 comment
                                    gobject.TYPE_INT,    # 5 total
                                    gobject.TYPE_PYOBJECT, # 6 time total
                                    gobject.TYPE_STRING, # 7 place
                                    gobject.TYPE_PYOBJECT) # event points

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'omnium.ui'))

        self.frame = b.get_object('omnium_vbox')
        self.frame.connect('destroy', self.shutdown)

        # info pane
        self.info_expand = b.get_object('info_expand')
        b.get_object('omnium_info_evno').set_text(self.evno)
        self.showev = b.get_object('omnium_info_evno_show')
        self.prefix_ent = b.get_object('omnium_info_prefix')
        self.prefix_ent.set_text(self.meet.edb.getvalue(
                   self.event, eventdb.COL_PREFIX))
        self.prefix_ent.connect('changed', self.editent_cb,
                                 eventdb.COL_PREFIX)
        self.info_ent = b.get_object('omnium_info_title')
        self.info_ent.set_text(self.meet.edb.getvalue(
                   self.event, eventdb.COL_INFO))
        self.info_ent.connect('changed', self.editent_cb,
                               eventdb.COL_INFO)
        self.update_expander_lbl_cb()

        # riders pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_enable_search(False)
        t.set_rules_hint(True)

        # riders columns
        uiutil.mkviewcoltxt(t, 'No.', COL_BIB, calign=1.0)
        uiutil.mkviewcoltxt(t, 'First Name', COL_FIRST,
                                expand=True)
        uiutil.mkviewcoltxt(t, 'Last Name', COL_LAST,
                                expand=True)
        uiutil.mkviewcoltxt(t, 'Club', COL_CLUB)
        uiutil.mkviewcoltxt(t, 'Points', COL_TOTAL, calign=1.0)
        uiutil.mkviewcoltod(t, 'Time', cb=self.todstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE,
                                halign=0.5, calign=0.5)
        t.show()
        b.get_object('omnium_result_win').add(t)

        if ui:
            # connect signal handlers
            b.connect_signals(self)
            # update properties in meet
            self.meet.menu_race_properties.set_sensitive(True)
            self.meet.edb.editevent(event, winopen=True)
            glib.timeout_add_seconds(3, self.delayed_announce)
Esempio n. 11
0
 def mkview(self, bib=True, first=True, last=True, club=True,
                  cat=False, series=True, refid=False):
     """Create and return view object for the model."""
     if self.view is not None:
         return self.view
     v = gtk.TreeView(self.model)
     v.set_reorderable(True)
     v.set_enable_search(False)
     v.set_rules_hint(True)
     v.connect('key-press-event', self.__view_key)
     v.show()
     self.colmap = {}
     colcnt = 0
     if bib:
         uiutil.mkviewcoltxt(v, 'No.', COL_BIB, self.__editcol_cb,
                   halign=0.5, calign=0.5, editcb=self.__editstart_cb)
         self.colmap[COL_BIB] = colcnt
         colcnt += 1
     if first:
         uiutil.mkviewcoltxt(v, 'First Name', COL_FIRST, self.__editcol_cb,
                         expand=True, editcb=self.__editstart_cb)
         self.colmap[COL_FIRST] = colcnt
         colcnt += 1
     if last:
         uiutil.mkviewcoltxt(v, 'Last Name', COL_LAST, self.__editcol_cb,
                         expand=True, editcb=self.__editstart_cb)
         self.colmap[COL_LAST] = colcnt
         colcnt += 1
     if club:
         uiutil.mkviewcoltxt(v, 'Club', COL_CLUB, self.__editcol_cb,
                         editcb=self.__editstart_cb)
         self.colmap[COL_CLUB] = colcnt
         colcnt += 1
     if cat:
         uiutil.mkviewcoltxt(v, 'Cat', COL_CAT, self.__editcol_cb,
                         editcb=self.__editstart_cb)
         self.colmap[COL_CAT] = colcnt
         colcnt += 1
     if series:
         uiutil.mkviewcoltxt(v, 'Ser', COL_SERIES, self.__editcol_cb, 
                         editcb=self.__editstart_cb)
         self.colmap[COL_SERIES] = colcnt
         colcnt += 1
     if refid:
         uiutil.mkviewcoltxt(v, 'Refid', COL_REFID, self.__editcol_cb, 
                         editcb=self.__editstart_cb)
         self.colmap[COL_REFID] = colcnt
         colcnt += 1
     self.view = v
     return self.view
Esempio n. 12
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event  # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.irtt')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('Creating new irtt event: ' + str(self.evno))

        # properties

        # race run time attributes
        self.onestart = False
        self.readonly = not ui
        self.winopen = True
        self.timerstat = 'idle'
        self.start = None
        self.lstart = None
        self.start_unload = None
        self.results = tod.todlist('NET')
        self.unstarters = {}
        self.curfintod = None
        self.recent_starts = {}

        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # 0 bib
            gobject.TYPE_STRING,  # 1 series
            gobject.TYPE_STRING,  # 2 namestr
            gobject.TYPE_STRING,  # 3 cat
            gobject.TYPE_STRING,  # 4 comment
            gobject.TYPE_PYOBJECT,  # 5 wstart
            gobject.TYPE_PYOBJECT,  # 6 tstart
            gobject.TYPE_PYOBJECT,  # 7 finish
            gobject.TYPE_STRING)  # 8 place

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'irtt.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()

        # Timer Panes
        mf = b.get_object('race_timer_pane')
        self.sl = timerpane.timerpane('Start Line', doser=True)
        self.sl.disable()
        self.sl.bibent.connect('activate', self.bibent_cb, self.sl)
        self.sl.serent.connect('activate', self.bibent_cb, self.sl)
        self.fl = timerpane.timerpane('Finish Line', doser=True)
        self.fl.disable()
        self.fl.bibent.connect('activate', self.bibent_cb, self.fl)
        self.fl.serent.connect('activate', self.bibent_cb, self.fl)
        mf.pack_start(self.sl.frame)
        mf.pack_start(self.fl.frame)
        mf.set_focus_chain([self.sl.frame, self.fl.frame, self.sl.frame])

        # Result Pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.connect('button_press_event', self.treeview_button_press)

        # TODO: show team name & club but pop up for rider list
        uiutil.mkviewcolbibser(t)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        uiutil.mkviewcoltxt(t, 'Cat', COL_CAT, self.editcol_cb)
        # -> Add in start time field with edit!
        uiutil.mkviewcoltod(t, 'Start', cb=self.wallstartstr, width=90)
        uiutil.mkviewcoltod(t, 'Time', cb=self.elapstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE, halign=0.5, calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # show window
        if ui:
            b.connect_signals(self)
            b = gtk.Builder()
            b.add_from_file(os.path.join(scbdo.UI_PATH, 'tod_context.ui'))
            self.context_menu = b.get_object('tod_context')
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 13
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event      # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.rhcp')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('Creating new rhcp event: ' + str(self.evno))

        # race run time attributes
        self.limit_tod = None	# Maximum handicap ToD, set on START!
        self.readonly = not ui
        self.winopen = True
        self.timerstat = 'idle'
        self.start = None
        self.lstart = None
        self.riders = gtk.ListStore(gobject.TYPE_STRING,   # 0 bib
                                    gobject.TYPE_STRING,   # 1 series
                                    gobject.TYPE_STRING,   # 2 namestr
                                    gobject.TYPE_STRING,   # 3 cat
                                    gobject.TYPE_STRING,   # 4 comment
                                    gobject.TYPE_BOOLEAN,   # 5 inrace?
                                    gobject.TYPE_PYOBJECT, # 6 hcap
                                    gobject.TYPE_PYOBJECT, # 7 finish
                                    gobject.TYPE_PYOBJECT, # 8 c-bunch
                                    gobject.TYPE_PYOBJECT, # 9 m-bunch
                                    gobject.TYPE_STRING)   # 10 place

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'rhcp.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()

        # Control Pane
        # TODO -> ctrl, places, action

        # Result Pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.connect('button_press_event', self.treeview_button_press)
     
        # TODO: show team name & club but pop up for rider list
        uiutil.mkviewcolbibser(t)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        #uiutil.mkviewcoltxt(t, 'Cat', COL_CAT, self.editcol_cb)
#!!!
        #uiutil.mkviewcoltod(t, 'Hcap', cb=self.hcapstr, width=60)
        #uiutil.mkviewcoltod(t, 'RFtime', cb=self.rftimestr)
        #uiutil.mkviewcoltod(t, 'Bunch', cb=self.bunchstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE, halign=0.5, calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # show window
        if ui:
            b.connect_signals(self)
            b = gtk.Builder()
            b.add_from_file(os.path.join(scbdo.UI_PATH, 'tod_context.ui'))
            self.context_menu = b.get_object('tod_context')
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 14
0
 def mkview(self,
            bib=True,
            first=True,
            last=True,
            club=True,
            cat=False,
            series=True,
            refid=False):
     """Create and return view object for the model."""
     if self.view is not None:
         return self.view
     v = gtk.TreeView(self.model)
     v.set_reorderable(True)
     v.set_enable_search(False)
     v.set_rules_hint(True)
     v.connect('key-press-event', self.__view_key)
     v.show()
     self.colmap = {}
     colcnt = 0
     if bib:
         uiutil.mkviewcoltxt(v,
                             'No.',
                             COL_BIB,
                             self.__editcol_cb,
                             halign=0.5,
                             calign=0.5,
                             editcb=self.__editstart_cb)
         self.colmap[COL_BIB] = colcnt
         colcnt += 1
     if first:
         uiutil.mkviewcoltxt(v,
                             'First Name',
                             COL_FIRST,
                             self.__editcol_cb,
                             expand=True,
                             editcb=self.__editstart_cb)
         self.colmap[COL_FIRST] = colcnt
         colcnt += 1
     if last:
         uiutil.mkviewcoltxt(v,
                             'Last Name',
                             COL_LAST,
                             self.__editcol_cb,
                             expand=True,
                             editcb=self.__editstart_cb)
         self.colmap[COL_LAST] = colcnt
         colcnt += 1
     if club:
         uiutil.mkviewcoltxt(v,
                             'Club',
                             COL_CLUB,
                             self.__editcol_cb,
                             editcb=self.__editstart_cb)
         self.colmap[COL_CLUB] = colcnt
         colcnt += 1
     if cat:
         uiutil.mkviewcoltxt(v,
                             'Cat',
                             COL_CAT,
                             self.__editcol_cb,
                             editcb=self.__editstart_cb)
         self.colmap[COL_CAT] = colcnt
         colcnt += 1
     if series:
         uiutil.mkviewcoltxt(v,
                             'Ser',
                             COL_SERIES,
                             self.__editcol_cb,
                             editcb=self.__editstart_cb)
         self.colmap[COL_SERIES] = colcnt
         colcnt += 1
     if refid:
         uiutil.mkviewcoltxt(v,
                             'Refid',
                             COL_REFID,
                             self.__editcol_cb,
                             editcb=self.__editstart_cb)
         self.colmap[COL_REFID] = colcnt
         colcnt += 1
     self.view = v
     return self.view
Esempio n. 15
0
    def __init__(self, meet, event, ui=True):
        """Constructor."""
        self.meet = meet
        self.event = event      # Note: now a treerowref
        self.evno = meet.edb.getvalue(event, eventdb.COL_EVNO)
        self.configpath = os.path.join(self.meet.configpath,
                                       'event_' + self.evno)

        self.log = logging.getLogger('scbdo.irtt')
        self.log.setLevel(logging.DEBUG)
        self.log.debug('Creating new irtt event: ' + str(self.evno))

        # properties

        # race run time attributes
        self.onestart = False
        self.readonly = not ui
        self.winopen = True
        self.timerstat = 'idle'
        self.start = None
        self.lstart = None
        self.start_unload = None
        self.results = tod.todlist('NET')
        self.unstarters = {}
        self.curfintod = None
        self.recent_starts = {}

        self.riders = gtk.ListStore(gobject.TYPE_STRING,   # 0 bib
                                    gobject.TYPE_STRING,   # 1 series
                                    gobject.TYPE_STRING,   # 2 namestr
                                    gobject.TYPE_STRING,   # 3 cat
                                    gobject.TYPE_STRING,   # 4 comment
                                    gobject.TYPE_PYOBJECT, # 5 wstart
                                    gobject.TYPE_PYOBJECT, # 6 tstart
                                    gobject.TYPE_PYOBJECT, # 7 finish
                                    gobject.TYPE_STRING)   # 8 place

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, 'irtt.ui'))

        self.frame = b.get_object('race_vbox')
        self.frame.connect('destroy', self.shutdown)

        # meta info pane
        self.title_namestr = b.get_object('title_namestr')
        self.set_titlestr()

        # Timer Panes
        mf = b.get_object('race_timer_pane')
        self.sl = timerpane.timerpane('Start Line', doser=True)
        self.sl.disable()
        self.sl.bibent.connect('activate', self.bibent_cb, self.sl)
        self.sl.serent.connect('activate', self.bibent_cb, self.sl)
        self.fl = timerpane.timerpane('Finish Line', doser=True)
        self.fl.disable()
        self.fl.bibent.connect('activate', self.bibent_cb, self.fl)
        self.fl.serent.connect('activate', self.bibent_cb, self.fl)
        mf.pack_start(self.sl.frame)
        mf.pack_start(self.fl.frame)
        mf.set_focus_chain([self.sl.frame, self.fl.frame, self.sl.frame])

        # Result Pane
        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(True)
        t.set_rules_hint(True)
        t.connect('button_press_event', self.treeview_button_press)
     
        # TODO: show team name & club but pop up for rider list
        uiutil.mkviewcolbibser(t)
        uiutil.mkviewcoltxt(t, 'Rider', COL_NAMESTR, expand=True)
        uiutil.mkviewcoltxt(t, 'Cat', COL_CAT, self.editcol_cb)
# -> Add in start time field with edit!
        uiutil.mkviewcoltod(t, 'Start', cb=self.wallstartstr, width=90)
        uiutil.mkviewcoltod(t, 'Time', cb=self.elapstr)
        uiutil.mkviewcoltxt(t, 'Rank', COL_PLACE, halign=0.5, calign=0.5)
        t.show()
        b.get_object('race_result_win').add(t)

        # show window
        if ui:
            b.connect_signals(self)
            b = gtk.Builder()
            b.add_from_file(os.path.join(scbdo.UI_PATH, 'tod_context.ui'))
            self.context_menu = b.get_object('tod_context')
            b.connect_signals(self)
            self.meet.edb.editevent(event, winopen=True)
            self.meet.rfu.arm()
Esempio n. 16
0
    def __init__(self):
        self.io = uscbio()
        self.io.setcb(self.msg_cb)
        self.started = False
        self.running = True

        self.timetick = TIMETICK
        self.fontsize = FONTSIZE
        fnszstr = str(self.fontsize) + "px"

        b = gtk.Builder()
        b.add_from_file(os.path.join(scbdo.UI_PATH, "rr_announce.ui"))
        self.window = b.get_object("window")

        self.lbl_header = b.get_object("lbl_header")
        self.lbl_header.modify_font(pango.FontDescription("bold " + fnszstr))
        self.lbl_header.set_text("SCBdo road announce " + scbdo.VERSION)
        self.elap_lbl = b.get_object("elap_lbl")
        self.elap_lbl.set_text("--:--")
        self.elap_lbl.modify_font(pango.FontDescription("monospace bold " + fnszstr))
        self.map_winsz = 0
        self.map_xoft = 0
        self.map_w = 0
        self.map_area = b.get_object("map_area")
        self.map_src = None
        self.map_area.set_size_request(-1, 80)
        self.map_area.show()

        # lap & bunch status values
        self.cur_lap = tod.tod(0)
        self.cur_split = tod.tod(0)
        self.cur_bunchid = 0
        self.cur_bunchcnt = 0

        self.riders = gtk.ListStore(
            gobject.TYPE_STRING,  # rank
            gobject.TYPE_STRING,  # no.
            gobject.TYPE_STRING,  # namestr
            gobject.TYPE_STRING,  # cat/com
            gobject.TYPE_STRING,  # timestr
            gobject.TYPE_STRING,  # bunchcnt
            gobject.TYPE_STRING,  # colour
            gobject.TYPE_PYOBJECT,
        )  # rftod

        t = gtk.TreeView(self.riders)
        self.view = t
        t.set_reorderable(False)
        t.set_rules_hint(False)
        t.set_headers_visible(False)
        self.search_lbl = b.get_object("search_lbl")
        self.search_lbl.modify_font(pango.FontDescription(fnszstr))
        self.search_entry = b.get_object("search_entry")
        self.search_entry.modify_font(pango.FontDescription(fnszstr))
        t.set_search_entry(b.get_object("search_entry"))
        t.set_search_column(1)
        t.modify_font(pango.FontDescription("bold " + fnszstr))
        uiutil.mkviewcoltxt(t, "Rank", 0, width=60)
        uiutil.mkviewcoltxt(t, "No.", 1, calign=1.0, width=60)
        uiutil.mkviewcoltxt(t, "Rider", 2, expand=True, fixed=True)
        uiutil.mkviewcoltxt(t, "Cat", 3, calign=0.0)
        uiutil.mkviewcoltxt(t, "Time", 4, calign=1.0, width=100, fontdesc="monospace bold")
        uiutil.mkviewcoltxt(t, "Bunch", 5, width=50, bgcol=6, calign=0.5)
        t.show()
        b.get_object("text_scroll").add(t)
        b.connect_signals(self)