示例#1
0
    def __init__(self):
        Gtk.Window.__init__(self, title = 'Subte GTFS Builder', type = Gtk.WindowType.TOPLEVEL)
        self.set_icon_name('subte')

        GTGui.instance = weakref.ref(self)

        self.connect('delete-event', self.on_quit)

        # load up our database
        self.db = libsubte.Database()

        # setup a controller
        self.controller = Controller(self)

        vbox = Gtk.VBox(False)

        # a tool bar

        toolbar = self._build_tool_bar()
        vbox.pack_start(toolbar, False, True, 0)

        # a horizontal pane
        self.main_pane = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
        self.info_frame = Gtk.Frame()
        self.map_frame = Gtk.Frame()

        self.main_pane.pack1(self.info_frame)
        self.main_pane.pack2(self.map_frame)

        # info frame
        box = Gtk.VBox(False)
        notebook = Gtk.Notebook()
        box.pack_start(notebook, True, True, 5)

        self.stop_list_widget = StopListGui()
        notebook.append_page(self.stop_list_widget.get_widget(), Gtk.Label('Stops'))
        self.trip_list_widget = TripRouteListGui()
        notebook.append_page(self.trip_list_widget.get_widget(), Gtk.Label('Trips'))
        self.path_list_widget = PathListGui()
        notebook.append_page(self.path_list_widget.get_widget(), Gtk.Label('Paths'))

        self.info_frame.add(box)

        # map frame
        box = Gtk.VBox(False)
        self.map_widget = GTMap()        
        box.pack_start(self.map_widget, True, True, 5)
        self.map_frame.add(box)

        vbox.pack_start(self.main_pane, True, True, 15)

        self.add(vbox)

        # initialize the controller
        self.controller.initialize()
        
        # some signals
        self.map_widget.view.connect('button-release-event', self.controller.on_map_click, self.map_widget)
        self.stop_list_widget.treeview.connect('cursor-changed', self.controller.on_stop_list_selected)
        self.trip_list_widget.treeview.connect('cursor-changed', self.controller.on_route_trip_list_selected)
示例#2
0
文件: GTGui.py 项目: line72/subte
class GTGui(Gtk.Window):
    instance = None
    def __init__(self):
        Gtk.Window.__init__(self, title = 'Subte GTFS Builder', type = Gtk.WindowType.TOPLEVEL)
        self.set_icon_name('subte')

        GTGui.instance = weakref.ref(self)

        self.connect('delete-event', self.on_quit)

        # load up our database
        self.db = libsubte.Database()

        # setup a controller
        self.controller = Controller(self)

        vbox = Gtk.VBox(False)

        # a tool bar

        toolbar = self._build_tool_bar()
        vbox.pack_start(toolbar, False, True, 0)

        # a horizontal pane
        self.main_pane = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
        self.info_frame = Gtk.Frame()
        self.map_frame = Gtk.Frame()

        self.main_pane.pack1(self.info_frame)
        self.main_pane.pack2(self.map_frame)

        # info frame
        box = Gtk.VBox(False)
        notebook = Gtk.Notebook()
        box.pack_start(notebook, True, True, 5)

        self.stop_list_widget = StopListGui()
        notebook.append_page(self.stop_list_widget.get_widget(), Gtk.Label(_('Stops')))
        self.trip_list_widget = TripRouteListGui()
        notebook.append_page(self.trip_list_widget.get_widget(), Gtk.Label(_('Trips')))
        self.path_list_widget = PathListGui()
        notebook.append_page(self.path_list_widget.get_widget(), Gtk.Label(_('Paths')))

        self.info_frame.add(box)

        # map frame
        box = Gtk.VBox(False)
        self.map_widget = GTMap()        
        box.pack_start(self.map_widget, True, True, 5)
        self.map_frame.add(box)

        vbox.pack_start(self.main_pane, True, True, 15)

        self.add(vbox)

        # initialize the controller
        self.controller.initialize()
        
        # some signals
        #!lukstafi -- changed button-release to button-press
        self.map_widget.view.connect('button-press-event', self.controller.on_map_click, self.map_widget)
        #!lukstafi -- for some reason AddTripRoute dialogs behave as modal
        # although they should be modeless, and these or similar signals
        # are not sent when AddTripRoute dialogs are open
        self.stop_list_widget.treeview.connect('cursor-changed', self.controller.on_stop_list_selected)
        self.trip_list_widget.treeview.connect('cursor-changed', self.controller.on_route_trip_list_selected)

    def on_quit(self, widget, evt, data = None):
        # try to save
        if self.controller.clear_project(True) == False: # they cancelled, stay in
            return True

        GTGui.instance = None
        Gtk.main_quit()

        return True
        
    def _build_tool_bar(self):
        toolbar = Gtk.Toolbar()
        toolbar.set_icon_size(Gtk.IconSize.LARGE_TOOLBAR)
        #toolbar.set_style(Gtk.ToolbarStyle.BOTH_HORIZ)

        ## LOAD/SAVE/CLOSE DB
        load_db = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)
        load_db.set_tooltip_text(_('Load a project'))
        load_db.connect('clicked', self.controller.on_load_project_clicked)
        toolbar.add(load_db)
        
        save_db = Gtk.ToolButton.new_from_stock(Gtk.STOCK_SAVE)
        save_db.set_tooltip_text(_('Save a project'))
        save_db.connect('clicked', self.controller.on_save_project_clicked)
        toolbar.add(save_db)
        
        close_db = Gtk.ToolButton.new_from_stock(Gtk.STOCK_CLOSE)
        close_db.set_tooltip_text(_('Close a project'))
        close_db.connect('clicked', self.controller.on_close_project_clicked)
        toolbar.add(close_db)

        toolbar.add(Gtk.SeparatorToolItem())

        ## STOPS
        #!mwd - how do I add a frakin' label?
        #stop_lbl = Gtk.ToolButton()
        #stop_lbl.set_label('Stops:')
        #stop_lbl.set_label_widget(Gtk.Label('Stops:'))
        #toolbar.add(stop_lbl)

        add_stop = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ADD)
        add_stop.set_tooltip_text(_('Add a new stop'))
        add_stop.connect('clicked', self.controller.on_add_stop_clicked)
        toolbar.add(add_stop)

        edit_stop = Gtk.ToolButton.new_from_stock(Gtk.STOCK_EDIT)
        edit_stop.set_tooltip_text(_('Edit a new stop'))
        edit_stop.connect('clicked', self.controller.on_edit_stop_clicked)
        toolbar.add(edit_stop)

        remove_stop = Gtk.ToolButton.new_from_stock(Gtk.STOCK_REMOVE)
        remove_stop.set_tooltip_text(_('Remove a stop'))
        remove_stop.connect('clicked', self.controller.on_remove_stop_clicked)
        toolbar.add(remove_stop)

        merge_stop = Gtk.ToolButton()
        merge_stop.set_icon_name('gtk-copy')
        merge_stop.set_tooltip_text(_('Merge two stops'))
        merge_stop.connect('clicked', self.controller.on_merge_stops_clicked)
        toolbar.add(merge_stop)

        toolbar.add(Gtk.SeparatorToolItem())

        ## TRIPS
        add_trip = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ADD)
        add_trip.set_tooltip_text(_('Add a new trip'))
        add_trip.connect('clicked', self.controller.on_add_trip_clicked)
        toolbar.add(add_trip)

        edit_trip = Gtk.ToolButton.new_from_stock(Gtk.STOCK_EDIT)
        edit_trip.set_tooltip_text(_('Edit a trip'))
        edit_trip.connect('clicked', self.controller.on_edit_trip_clicked)
        toolbar.add(edit_trip)

        remove_trip = Gtk.ToolButton.new_from_stock(Gtk.STOCK_REMOVE)
        remove_trip.set_tooltip_text(_('Remove a trip'))
        remove_trip.connect('clicked', self.controller.on_remove_trip_clicked)
        toolbar.add(remove_trip)

        copy_trip = Gtk.ToolButton()
        copy_trip.set_icon_name('gtk-copy')
        copy_trip.set_tooltip_text(_('Copy a trip'))
        copy_trip.connect('clicked', self.controller.on_copy_trip_clicked)
        toolbar.add(copy_trip)

        toolbar.add(Gtk.SeparatorToolItem())

        ## PICTURES
        add_picture = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ADD)
        add_picture.set_tooltip_text(_('Add a new picture'))
        add_picture.connect('clicked', self.controller.on_add_picture_clicked)
        toolbar.add(add_picture)
        
        # remove_picture = Gtk.ToolButton.new_from_stock(Gtk.STOCK_REMOVE)
        # remove_picture.set_tooltip_text('Remove a picture')
        # remove_picture.connect('clicked', self.controller.on_remove_picture_clicked)
        # toolbar.add(remove_picture)
        
        toolbar.add(Gtk.SeparatorToolItem())


        ## PATHS
        add_path = Gtk.ToolButton.new_from_stock(Gtk.STOCK_ADD)
        add_path.set_tooltip_text(_('Add a new path from a .kml (or .kmz) file'))
        add_path.connect('clicked', self.controller.on_add_path_clicked)
        toolbar.add(add_path)

        remove_path = Gtk.ToolButton.new_from_stock(Gtk.STOCK_REMOVE)
        remove_path.set_tooltip_text(_('Remove a path'))
        remove_path.connect('clicked', self.controller.on_remove_path_clicked)
        toolbar.add(remove_path)

        toolbar.add(Gtk.SeparatorToolItem())

        ## Import
        import_gtfs = Gtk.ToolButton('Import')
        import_gtfs.set_icon_name('document-import')
        import_gtfs.set_tooltip_text(_('Import GTFS'))
        import_gtfs.connect('clicked', self.controller.on_import_gtfs)
        toolbar.add(import_gtfs)

        ## EXPORT
        export = Gtk.ToolButton('Export')
        export.set_icon_name('document-send')
        export.set_tooltip_text(_('Export to GTFS'))
        export.connect('clicked', self.controller.on_export_gtfs)
        toolbar.add(export)

        export = Gtk.ToolButton('Export')
        export.set_icon_name('document-send')
        export.set_tooltip_text(_('Export to KML/JS/HTML'))
        export.connect('clicked', self.controller.on_export_kml)
        toolbar.add(export)

        toolbar.add(Gtk.SeparatorToolItem())

        return toolbar