예제 #1
0
파일: window.py 프로젝트: fabianod/UrTSB
    def on_tab_change(self, notebook, page, page_num):
        """
        Callback method handling tab changes.
        
        @param notebook - the notebook instance
        @param page - notebookpage 
        @param page_num - number of the current page 
        
        """
        #load favorites and recent servers directly if switched to
        #these tabs
        gc = GuiController()
        if 1 == page_num:  #favorites
            #gc.loadFavorites(self.favoritestab)
            gc.executeFavoritesLoading(self.favoritestab)
            self.favoritestab.filter.lock()
        if 2 == page_num:  #recent server
            #gc.loadRecentServer(self.recenttab)
            gc.executeRecentServersLoading(self.recenttab)
            self.recenttab.filter.lock()
        if 3 == page_num:  #buddies tab
            fm = FileManager()
            config = fm.getConfiguration()
            execute = fm.value_as_boolean(config[cfgkey.OPT_BUDDYSEARCH])
            if self.first_switch and execute:
                gc.execute_buddies_loading(self.buddiestab, execute=True)
            else:
                gc.execute_buddies_loading(self.buddiestab)

        self.first_switch = False
예제 #2
0
 def on_tab_change(self, notebook, page, page_num):
     """
     Callback method handling tab changes.
     
     @param notebook - the notebook instance
     @param page - notebookpage 
     @param page_num - number of the current page 
     
     """
     #load favorites and recent servers directly if switched to
     #these tabs 
     gc = GuiController()
     if 1 == page_num: #favorites
         #gc.loadFavorites(self.favoritestab)
         gc.executeFavoritesLoading(self.favoritestab)
         self.favoritestab.filter.lock()
     if 2 == page_num: #recent server
         #gc.loadRecentServer(self.recenttab)
         gc.executeRecentServersLoading(self.recenttab)
         self.recenttab.filter.lock()
     if 3 == page_num: #buddies tab
         fm = FileManager()
         config = fm.getConfiguration()
         execute = fm.value_as_boolean(config[cfgkey.OPT_BUDDYSEARCH])
         if self.first_switch and execute:
             gc.execute_buddies_loading(self.buddiestab, execute=True)
         else:
             gc.execute_buddies_loading(self.buddiestab)
              
     self.first_switch = False
예제 #3
0
 def __init__(self, server, type):
     """
     Constructor
     
     @param server - the server which needs a password
     @param type - value of PassDialogType to specify the type of the dialog
                   two possible values:
                      - SERVER_PASSWOR - enter password for private password
                      - PRIV_SLOT_PASSWORD - enter password for private slots
     """
     gtk.Dialog.__init__(self, 'Server needs a password to connect!', None,\
                           gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
     
     self.server = server
     self.diag_type = type
     #buttons
     okbutton = gtk.Button('OK')
     cancelbutton = gtk.Button('Cancel')
     
     okbutton.connect("clicked", self.on_ok_clicked)
     cancelbutton.connect("clicked", self.on_cancel_clicked)
     
     
     self.action_area.pack_start(cancelbutton, False, False)
     self.action_area.pack_start(okbutton, False, False)
     
     #content area
     desc_label = gtk.Label('Enter Password')
     if PassDialogType.SERVER_PASSWORD == self.diag_type:
         desc_label.set_text('The server you are trying to connect needs a '\
                             +'password')
     elif PassDialogType.PRIV_SLOT_PASSWORD == self.diag_type:
         desc_label.set_text('The server is full. In order to use a private'\
                         + 'slot please enter the private slot password')
     namelabel = gtk.Label('Servername: ' + server.getName())
     addresslabel = gtk.Label('Serveraddress: ' + server.getaddress())
     self.passentry = gtk.Entry()
     self.passentry.set_visibility(False)
     self.passentry.set_text(server.getPassword())
     self.remembercheckbutton = gtk.CheckButton('remember password')
     
     self.vbox.pack_start(desc_label, False, False)
     self.vbox.pack_start(namelabel, False, False)
     self.vbox.pack_start(addresslabel, False, False)
     self.vbox.pack_start(self.passentry, False, False)
     self.vbox.pack_start(self.remembercheckbutton, False, False)
     
     fm = FileManager()
     config = fm.getConfiguration()
     save_password = config[cfgkey.OPT_SAVE_PW]
     if 'True' == save_password:
         self.remembercheckbutton.set_active(True)
     else:
         self.remembercheckbutton.set_active(False)
     
     self.show_all()
예제 #4
0
    def __init__(self, server, type):
        """
        Constructor
        
        @param server - the server which needs a password
        @param type - value of PassDialogType to specify the type of the dialog
                      two possible values:
                         - SERVER_PASSWOR - enter password for private password
                         - PRIV_SLOT_PASSWORD - enter password for private slots
        """
        gtk.Dialog.__init__(self, 'Server needs a password to connect!', None,\
                              gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)

        self.server = server
        self.diag_type = type
        #buttons
        okbutton = gtk.Button('OK')
        cancelbutton = gtk.Button('Cancel')

        okbutton.connect("clicked", self.on_ok_clicked)
        cancelbutton.connect("clicked", self.on_cancel_clicked)

        self.action_area.pack_start(cancelbutton, False, False)
        self.action_area.pack_start(okbutton, False, False)

        #content area
        desc_label = gtk.Label('Enter Password')
        if PassDialogType.SERVER_PASSWORD == self.diag_type:
            desc_label.set_text('The server you are trying to connect needs a '\
                                +'password')
        elif PassDialogType.PRIV_SLOT_PASSWORD == self.diag_type:
            desc_label.set_text('The server is full. In order to use a private'\
                            + 'slot please enter the private slot password')
        namelabel = gtk.Label('Servername: ' + server.getName())
        addresslabel = gtk.Label('Serveraddress: ' + server.getaddress())
        self.passentry = gtk.Entry()
        self.passentry.set_visibility(False)
        self.passentry.set_text(server.getPassword())
        self.remembercheckbutton = gtk.CheckButton('remember password')

        self.vbox.pack_start(desc_label, False, False)
        self.vbox.pack_start(namelabel, False, False)
        self.vbox.pack_start(addresslabel, False, False)
        self.vbox.pack_start(self.passentry, False, False)
        self.vbox.pack_start(self.remembercheckbutton, False, False)

        fm = FileManager()
        config = fm.getConfiguration()
        save_password = config[cfgkey.OPT_SAVE_PW]
        if 'True' == save_password:
            self.remembercheckbutton.set_active(True)
        else:
            self.remembercheckbutton.set_active(False)

        self.show_all()
예제 #5
0
 def setServerdetails(self, server):
     """
     Updates the embedded serverdetails element 
     """
     self.playerlist.clear()
     
     for player in server.getPlayerList():
         self.playerlist.addPlayer(player)
         
     self.detailsbox.setServerDetails(server) 
     # update row in list
     # but only if the corresponding option is True
     fm = FileManager()
     config = fm.getConfiguration()
     if 'True' == config[cfgkey.OPT_UPDATE_SL_ROW]: 
         self.serverlist.update_selected_row(server)
예제 #6
0
    def on_save_clicked(self, widget):
        """
        Callback of the save button
        """

        fm = FileManager()
        config = fm.getConfiguration()
        config[cfgkey.URT_EXE] = self.exe_entry.get_text()
        config[cfgkey.URT_EXE_PATH] = self.path_entry.get_text()
        config[cfgkey.URT_EXE_PARAMS] = self.addcmd_entry.get_text()

        defaulttab = 0
        if self.srvlist_radio.get_active():
            defaulttab = 0
        elif self.favlist_radio.get_active():
            defaulttab = 1
        elif self.reclist_radio.get_active():
            defaulttab = 2
        elif self.buddies_radio.get_active():
            defaulttab = 3

        config[cfgkey.OPT_DEFAULT_TAB] = defaulttab

        if self.filter_basic_radio.get_active():
            config[cfgkey.OPT_FILTER] = cfgvalues.BASIC_FILTER
        elif self.filter_advanced_radio.get_active():
            config[cfgkey.OPT_FILTER] = cfgvalues.ADVANCED_FILTER
        else:  #fallback
            config[cfgkey.OPT_FILTER] = cfgvalues.BASIC_FILTER


        config[cfgkey.OPT_BUDDYSEARCH] =\
                   fm.value_from_boolean(self.checkbox_buddysearch.get_active())

        #refresh the serverlist tab to make changes to the filter available
        #without restart
        window = self.parent.parent.parent
        notebook = window.notebook
        notebook.remove_page(0)
        window.serverlisttab = ServerTab()
        srvlabel = gtk.Label('Serverlist')
        notebook.insert_page(window.serverlisttab, srvlabel, 0)

        fm.saveConfiguration()
예제 #7
0
파일: settingstab.py 프로젝트: sorcsr/urtsb
    def on_save_clicked(self, widget):
        """
        Callback of the save button
        """

        fm = FileManager()
        config = fm.getConfiguration()
        config[cfgkey.URT_EXE] = self.exe_entry.get_text()
        config[cfgkey.URT_EXE_PATH] = self.path_entry.get_text()
        config[cfgkey.URT_EXE_PARAMS] = self.addcmd_entry.get_text()

        defaulttab = 0
        if self.srvlist_radio.get_active():
            defaulttab = 0
        elif self.favlist_radio.get_active():
            defaulttab = 1
        elif self.reclist_radio.get_active():
            defaulttab = 2
        elif self.buddies_radio.get_active():
            defaulttab = 3

        config[cfgkey.OPT_DEFAULT_TAB] = defaulttab

        if self.filter_basic_radio.get_active():
            config[cfgkey.OPT_FILTER] = cfgvalues.BASIC_FILTER
        elif self.filter_advanced_radio.get_active():
            config[cfgkey.OPT_FILTER] = cfgvalues.ADVANCED_FILTER
        else:  # fallback
            config[cfgkey.OPT_FILTER] = cfgvalues.BASIC_FILTER

        config[cfgkey.OPT_BUDDYSEARCH] = fm.value_from_boolean(self.checkbox_buddysearch.get_active())

        # refresh the serverlist tab to make changes to the filter available
        # without restart
        window = self.parent.parent.parent
        notebook = window.notebook
        notebook.remove_page(0)
        window.serverlisttab = ServerTab()
        srvlabel = gtk.Label("Serverlist")
        notebook.insert_page(window.serverlisttab, srvlabel, 0)

        fm.saveConfiguration()
예제 #8
0
    def set_defaults(self):
        """
        Set ui input element values to the values read from configuration
        """
        fm = FileManager()
        config = fm.getConfiguration()

        self.exe_entry.set_text(config[cfgkey.URT_EXE])
        self.path_entry.set_text(config[cfgkey.URT_EXE_PATH])
        self.addcmd_entry.set_text(config[cfgkey.URT_EXE_PARAMS])

        defaulttab = int(config[cfgkey.OPT_DEFAULT_TAB])
        if 0 == defaulttab:
            self.srvlist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 1 == defaulttab:
            self.favlist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 2 == defaulttab:
            self.reclist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 3 == defaulttab:
            self.buddies_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(True)
            self.checkbox_buddysearch.set_active(fm.value_as_boolean(\
                                                config[cfgkey.OPT_BUDDYSEARCH]))
        else:
            self.srvlist_radio.set_active(True)

        if cfgvalues.BASIC_FILTER == config[cfgkey.OPT_FILTER]:
            self.filter_basic_radio.set_active(True)
            self.filter_advanced_radio.set_active(False)
        elif cfgvalues.ADVANCED_FILTER == config[cfgkey.OPT_FILTER]:
            self.filter_basic_radio.set_active(False)
            self.filter_advanced_radio.set_active(True)
        else:  #fallback to basic
            self.filter_basic_radio.set_active(True)
            self.filter_advanced_radio.set_active(False)
예제 #9
0
파일: settingstab.py 프로젝트: sorcsr/urtsb
    def set_defaults(self):
        """
        Set ui input element values to the values read from configuration
        """
        fm = FileManager()
        config = fm.getConfiguration()

        self.exe_entry.set_text(config[cfgkey.URT_EXE])
        self.path_entry.set_text(config[cfgkey.URT_EXE_PATH])
        self.addcmd_entry.set_text(config[cfgkey.URT_EXE_PARAMS])

        defaulttab = int(config[cfgkey.OPT_DEFAULT_TAB])
        if 0 == defaulttab:
            self.srvlist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 1 == defaulttab:
            self.favlist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 2 == defaulttab:
            self.reclist_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(False)
            self.checkbox_buddysearch.set_active(False)
        elif 3 == defaulttab:
            self.buddies_radio.set_active(True)
            self.checkbox_buddysearch.set_sensitive(True)
            self.checkbox_buddysearch.set_active(fm.value_as_boolean(config[cfgkey.OPT_BUDDYSEARCH]))
        else:
            self.srvlist_radio.set_active(True)

        if cfgvalues.BASIC_FILTER == config[cfgkey.OPT_FILTER]:
            self.filter_basic_radio.set_active(True)
            self.filter_advanced_radio.set_active(False)
        elif cfgvalues.ADVANCED_FILTER == config[cfgkey.OPT_FILTER]:
            self.filter_basic_radio.set_active(False)
            self.filter_advanced_radio.set_active(True)
        else:  # fallback to basic
            self.filter_basic_radio.set_active(True)
            self.filter_advanced_radio.set_active(False)
예제 #10
0
파일: servertab.py 프로젝트: fabianod/UrTSB
 def __init__(self):
     """
     Constructor
     """
     gtk.VBox.__init__(self)
     
     fm = FileManager()
     config = fm.getConfiguration()
     
     if cfgvalues.BASIC_FILTER == config[cfgkey.OPT_FILTER]:        
         self.filter = ServerListFilter(self)
     else:
         self.filter = AdvancedFilter(self)
     self.filter.show()
     
     self.pack_start(self.filter, False, False)
     
    
     
     # top pane area 
     paned = gtk.VPaned() 
     paned.show()
     self.pack_start(paned)   
     
     # bottom add a statusbar
     self.statusbar = StatusBar(self)
     self.pack_start(self.statusbar, False, False)
     
     
     # serverlist window
     self.serverlist = ServerList(self)
     paned.pack1(self.serverlist, True, False)
     #paned.add1(self.serverlist)
     
     
     # bottom panearea
     bottompane = gtk.HPaned()
     paned.pack2(bottompane, True, False)
     #paned.add2(bottompane)
     
     #left box
     self.playerlist = PlayerList()
     bottompane.pack1(self.playerlist, False, False)
     
     
     
     #right box
     self.detailsbox = ServerDetailBox()
     vbox = gtk.VBox()
     
     
     bottompane.pack2(vbox, True, False)
     
   
     buttonbox = gtk.HBox()
     
     #self.detailsbox.pack_start(buttonbox, False, False)
     vbox.pack_start(buttonbox, False, False)
     vbox.pack_start(self.detailsbox)
     
     
     refresh_button = gtk.Button('Refresh')
     refreshimage = gtk.Image()
     refreshimage.set_from_stock(gtk.STOCK_REFRESH, gtk.ICON_SIZE_BUTTON)
     refresh_button.set_image(refreshimage)
     
     connect_button = gtk.Button('Connect')
     connectimage = gtk.Image()
     connectimage.set_from_stock(gtk.STOCK_CONNECT, gtk.ICON_SIZE_BUTTON)
     connect_button.set_image(connectimage)
     
     addfav_button = gtk.Button('Add to Favorites')
     favimage = gtk.Image()
     favimage.set_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)
     addfav_button.set_image(favimage)
     
     
     buttonbox.pack_start(refresh_button, True, True)
     buttonbox.pack_start(connect_button, True, True)
     buttonbox.pack_start(addfav_button, True, True)
     refresh_button.connect("clicked", self.onRefreshButtonClicked)
     addfav_button.connect("clicked", self.onAddFavButtonClicked)
     connect_button.connect("clicked", self.connect_button_clicked)
     
     self.show_all()
예제 #11
0
파일: window.py 프로젝트: fabianod/UrTSB
    def __init__(self):
        """
        Constructor. Creating and inititializing the main window of UrTSB.
        """
        gtk.Window.__init__(self)
        Window.instance = self

        #window creation and basic window settings
        fm = FileManager()
        window_sizing = fm.get_window_sizing()

        gc = GuiController()
        self.set_title(gc.appname + ' v.' + gc.appver + ' - ' + gc.appdesc)
        self.set_icon_from_file(Globals.icon_dir + '/logo.png')

        if window_sizing.maximized:
            self.maximize()
        else:
            self.unmaximize()
        self.set_default_size(window_sizing.width, window_sizing.height)
        if None == window_sizing.x and None == window_sizing.y:
            self.set_position(gtk.WIN_POS_CENTER)
        else:
            self.move(window_sizing.x, window_sizing.y)
        self.connect('destroy', gtk.main_quit)

        # add a VBox that will contain the main notebookpane and a statusbar
        mainbox = gtk.VBox()
        self.add(mainbox)

        # the notebook - tabs will be serverlist, favorites,
        # recent servers and settings
        self.notebook = gtk.Notebook()
        self.notebook.set_border_width(2)
        mainbox.pack_start(self.notebook)
        self.notebook.connect('switch-page', self.on_tab_change)

        # add the serverlist tab
        self.serverlisttab = ServerTab()
        srvlabel = gtk.Label('Serverlist')
        self.notebook.append_page(self.serverlisttab, srvlabel)

        # add the favorites tab
        self.favoritestab = FavoritesTab()
        favlabel = gtk.Label('Favorites')
        self.notebook.append_page(self.favoritestab, favlabel)

        # add the recently played tab
        self.recenttab = RecentTab()
        recentlabel = gtk.Label('Recently Played')
        self.notebook.append_page(self.recenttab, recentlabel)

        # add the buddies tab
        self.buddiestab = BuddiesTab()
        buddieslabel = gtk.Label('Buddies')
        self.notebook.append_page(self.buddiestab, buddieslabel)

        # add the settings tab
        self.settingsstab = SettingsTab()
        settingslabel = gtk.Label('Settings')
        self.notebook.append_page(self.settingsstab, settingslabel)

        #set default tab
        fm = FileManager()
        config = fm.getConfiguration()
        defaulttab = int(config[cfgkey.OPT_DEFAULT_TAB])
        #this variable is used to dertermine if the tabswitch is the first
        #after application start
        self.first_switch = True

        self.notebook.set_current_page(defaulttab)

        #connect key press event to be able to create keyboard shortcuts
        self.connect('key-press-event', self.on_key_pressed_event)

        #connect window-state-event to handle maximize/demaximize
        self.connect('window-state-event', self.on_window_state_changed)

        self.show_all()
예제 #12
0
 def __init__(self):
     """
     Constructor. Creating and inititializing the main window of UrTSB.
     """
     gtk.Window.__init__(self)
     Window.instance = self
     
     #window creation and basic window settings
     fm = FileManager()
     window_sizing = fm.get_window_sizing()
     
     gc = GuiController()
     self.set_title(gc.appname + ' v.' + gc.appver + ' - ' + gc.appdesc)
     self.set_icon_from_file(Globals.icon_dir +'/logo.png')
     
     if window_sizing.maximized:
         self.maximize()
     else:
         self.unmaximize()
     self.set_default_size(window_sizing.width, window_sizing.height)
     if None == window_sizing.x and None == window_sizing.y:
         self.set_position(gtk.WIN_POS_CENTER)
     else:
         self.move(window_sizing.x, window_sizing.y)
     self.connect('destroy', gtk.main_quit)
       
       
     # add a VBox that will contain the main notebookpane and a statusbar  
     mainbox = gtk.VBox()  
     self.add(mainbox)  
      
     # the notebook - tabs will be serverlist, favorites,
     # recent servers and settings 
     self.notebook= gtk.Notebook()
     self.notebook.set_border_width(2)
     mainbox.pack_start(self.notebook)
     self.notebook.connect('switch-page', self.on_tab_change)
     
     
     # add the serverlist tab
     self.serverlisttab = ServerTab()
     srvlabel = gtk.Label('Serverlist')        
     self.notebook.append_page(self.serverlisttab, srvlabel)
     
     # add the favorites tab
     self.favoritestab = FavoritesTab()
     favlabel = gtk.Label('Favorites')        
     self.notebook.append_page(self.favoritestab, favlabel)
     
     # add the recently played tab
     self.recenttab = RecentTab()
     recentlabel = gtk.Label('Recently Played')        
     self.notebook.append_page(self.recenttab, recentlabel)
     
     # add the buddies tab
     self.buddiestab = BuddiesTab()
     buddieslabel = gtk.Label('Buddies')
     self.notebook.append_page(self.buddiestab, buddieslabel)
     
     # add the settings tab
     self.settingsstab = SettingsTab()
     settingslabel = gtk.Label('Settings')        
     self.notebook.append_page(self.settingsstab, settingslabel)
     
     #set default tab
     fm = FileManager()
     config = fm.getConfiguration()
     defaulttab = int(config[cfgkey.OPT_DEFAULT_TAB])
     #this variable is used to dertermine if the tabswitch is the first
     #after application start 
     self.first_switch = True
     
     self.notebook.set_current_page(defaulttab)
     
     #connect key press event to be able to create keyboard shortcuts
     self.connect('key-press-event', self.on_key_pressed_event)
    
     #connect window-state-event to handle maximize/demaximize
     self.connect('window-state-event', self.on_window_state_changed)
     
     self.show_all()