class ServerTab(BaseTab): """ Contents of the Servers tab. Displays the servers retreived from the master server """ 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() # self.pack_start(button,False) def serverlist_loading_finished(self): """ Callback method executed when the search has finished """ #reactivate the search button self.filter.unlock() self.statusbar.lock() self.qm = None
class RecentTab(BaseTab): """ Content of the Recent Servers tab. - serverlist treeview, - detailarea with playerlist, servervars, serverinfo and buttons """ def __init__(self): """ Constructor """ gtk.VBox.__init__(self) self.filter = RecentSeversFilter() 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 = RecentServersList(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() 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) removerecent_button = gtk.Button('Remove Server from List') removeimage = gtk.Image() removeimage.set_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_BUTTON) removerecent_button.set_image(removeimage) buttonbox.pack_start(refresh_button, True, True) buttonbox.pack_start(connect_button, True, True) buttonbox.pack_start(addfav_button, True, True) buttonbox.pack_start(removerecent_button, True, True) refresh_button.connect("clicked", self.onRefreshButtonClicked) connect_button.connect("clicked", self.connect_button_clicked) removerecent_button.connect("clicked", self.onRemoveRecentClicked) addfav_button.connect("clicked", self.onAddFavButtonClicked) self.show_all() def onRemoveRecentClicked(self, widget): """ Callback method for the remove button. Triggers the removal of the recent server entry by calling the gui controller which then removes the recent server (from list in memory and also from file) Also removes the recent server directly from the liststore. @param widget - the widget that emitted the clicked signal - the button """ #remove row from liststore and also the server from the recent list selection = self.serverlist.serverlistview.get_selection() result = selection.get_selected() if result: model, iter = result server = self.serverlist.liststore.get_value(iter, 8) #remove it from the favoriteslist gui = GuiController() gui.removeRecent(server) model.remove(iter) def serverlist_loading_finished(self): """ Callback method executed when the search has finished """ #reactivate the search button self.filter.refresh_button.set_sensitive(True) self.statusbar.lock() self.qm = None
class RecentTab(BaseTab): """ Content of the Recent Servers tab. - serverlist treeview, - detailarea with playerlist, servervars, serverinfo and buttons """ def __init__(self): """ Constructor """ gtk.VBox.__init__(self) self.filter = RecentSeversFilter() 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 = RecentServersList(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() 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) removerecent_button = gtk.Button('Remove Server from List') removeimage = gtk.Image() removeimage.set_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_BUTTON) removerecent_button.set_image(removeimage) buttonbox.pack_start(refresh_button, True, True) buttonbox.pack_start(connect_button, True, True) buttonbox.pack_start(addfav_button, True, True) buttonbox.pack_start(removerecent_button, True, True) refresh_button.connect("clicked", self.onRefreshButtonClicked) connect_button.connect("clicked", self.connect_button_clicked) removerecent_button.connect("clicked", self.onRemoveRecentClicked) addfav_button.connect("clicked", self.onAddFavButtonClicked) self.show_all() def onRemoveRecentClicked(self, widget): """ Callback method for the remove button. Triggers the removal of the recent server entry by calling the gui controller which then removes the recent server (from list in memory and also from file) Also removes the recent server directly from the liststore. @param widget - the widget that emitted the clicked signal - the button """ #remove row from liststore and also the server from the recent list selection = self.serverlist.serverlistview.get_selection() result = selection.get_selected() if result: model, iter = result server = self.serverlist.liststore.get_value(iter, 8) #remove it from the favoriteslist gui = GuiController() gui.removeRecent(server) model.remove(iter) def serverlist_loading_finished(self): """ Callback method executed when the search has finished """ #reactivate the search button self.filter.refresh_button.set_sensitive(True) self.statusbar.lock() self.qm = None
class FavoritesTab(BaseTab): """ UI Element for the content of the favorites tab. """ def __init__(self): """ Constructor """ gtk.VBox.__init__(self) self.filter = FavoritesFilter() 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) removefav_button = gtk.Button('Remove from Favorites') removeimage = gtk.Image() removeimage.set_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_BUTTON) removefav_button.set_image(removeimage) buttonbox.pack_start(refresh_button, True, True) buttonbox.pack_start(connect_button, True, True) buttonbox.pack_start(removefav_button, False, False) refresh_button.connect("clicked", self.onRefreshButtonClicked) removefav_button.connect("clicked", self.onRemoveFavoriteClicked) connect_button.connect("clicked", self.connect_button_clicked) self.show_all() # self.pack_start(button,False) def connect_button_clicked(self, widget): """ Callback of the the connect button """ gui = GuiController() server = self.detailsbox.current_server if server: if server.needsPassword(): passdialog = PasswordDialog(server, PassDialogType\ .SERVER_PASSWORD) passdialog.run() else: gui.connectToServer(server) def onRemoveFavoriteClicked(self, widget): """ Callback method for the remove button. Triggers the removal of the favorite entry by calling the gui controller which then removes the favorite (from list in memory and also from file) Also removes the favorite directly from the liststore. @param widget - the widget that emitted the clicked signal - the button """ #the current selected server displayed in the details server = self.detailsbox.current_server if server: #remove it from the favoriteslist gui = GuiController() gui.removeFavorite(server) #remove row from liststore selection = self.serverlist.serverlistview.get_selection() result = selection.get_selected() if result: model, iter = result model.remove(iter) def onRefreshButtonClicked(self, widget): """ Callback of the refreshbutton. """ selection = self.serverlist.serverlistview.get_selection() model, paths = selection.get_selected_rows() if paths: row = model[paths[0][0]] server = row[8] guicontroller = GuiController() guicontroller.setDetailServer(server, self) def addServer(self, server): """ Add a server to the listview/store. Called by the guicontroller. """ self.serverlist.addServer(server) def clearServerList(self): """ Clears the embeded serverlist treeview """ self.serverlist.clear() 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) def serverlist_loading_finished(self): """ Callback method executed when the search has finished """ #reactivate the search button self.filter.refresh_button.set_sensitive(True) self.statusbar.lock() self.qm = None