def loadWorkspace(self,workspace): workspace = workspace data = { 'desc' : "", 'user' : "", 'server': "", 'password' : "", 'http_user' : "", 'http_password' : "", 'extra_args' : "" } data.update(self.config[workspace]) self.current_workspace = GLPIServer( workspace, data['desc'], data['user'], data['password'], data['server'], data['http_user'], data['http_password'], data['extra_args'] ) self.loginWorkspace()
class MainWindow(QtGui.QMainWindow): def __init__(self,config,parent=None): QtGui.QMainWindow.__init__(self,parent) loadUi('lib/ui/mainwindow.ui', self) self.config = config self.packages = [] self.server_dialog = ServerDialog(parent=self) self.packageListWidget = PackageListWidget(parent=self) self.packageListWidget.hide() self.server_view = PackageViewWidget(parent=self) self.server_view.hide() self.packageDelegate = PackageDelegate() self.servers = [] self.current_workspace = None self.loadWorkspaceMenu() self.packagesModel = PackageModel(items = self.packages, server = self.current_workspace) self.packagesModel.setCheckable(False) self.packageListWidget.packagesView.setModel(self.packagesModel) self.setCentralWidget(self.packageListWidget) self.packageListWidget.packagesViewServer.setItemDelegate(self.packageDelegate) self.packageListWidget.show() self.show() def loadWorkspaceMenu(self): if (len(self.config) > 0): #self.servers = [ ServerItem(dict(self.config.items(s))) for s in self.config.sections()] self.servers = [ s for s in self.config] #self.servers = [ s for s in self.config] pprint(self.servers) else: return self.menuLoad.setEnabled(True) self.menuLoad.clear() self.signalMapper = QtCore.QSignalMapper(self) for s in self.servers: self.packageListWidget.serverBox.addItem(s) action = self.menuLoad.addAction(s,self.signalMapper, QtCore.SLOT('map()')) self.signalMapper.setMapping(action,s) self.signalMapper.connect(QtCore.SIGNAL('mapped(QString)'), self, QtCore.SLOT('loadWorkspace(QString)')) @Slot(bool) def on_actionAdd_new_server_triggered(self,checked): self.server_dialog.clear() connect = self.server_dialog.exec_() if connect: self.current_workspace = self.server_dialog.workspace self.saveConfig() @Slot(bool) def on_actionSingle_triggered(self, checked): self.actionBatch.setChecked(False) self.actionSingle.setChecked(True) self.actionSelect_All.setEnabled(False) self.action_Deselect_All.setEnabled(False) self.action_Revert_selection.setEnabled(False) if self.packagesModel is not None: self.packagesModel.setCheckable(False) @Slot(bool) def on_actionBatch_triggered(self, checked): self.actionBatch.setChecked(True) self.actionSingle.setChecked(False) self.actionSelect_All.setEnabled(True) self.action_Deselect_All.setEnabled(True) self.action_Revert_selection.setEnabled(True) if self.packagesModel is not None: self.packagesModel.setCheckable(True) @Slot(bool) def on_action_Quit_triggered(self, checked): self.close() @Slot(bool) def on_actionSelect_All_triggered(self, checked): selection = self.packageListWidget.packagesView.selectionModel() @Slot(bool) def on_action_Deselect_All_triggered(self,checked): selection = self.packageListWidget.packagesViewServer.selectionModel() selection.clearSelection() def loadWorkspace(self,workspace): workspace = workspace data = { 'desc' : "", 'user' : "", 'server': "", 'password' : "", 'http_user' : "", 'http_password' : "", 'extra_args' : "" } data.update(self.config[workspace]) self.current_workspace = GLPIServer( workspace, data['desc'], data['user'], data['password'], data['server'], data['http_user'], data['http_password'], data['extra_args'] ) self.loginWorkspace() def loginWorkspace(self): if self.current_workspace is not None: print("Prepare server_dialog for login") self.server_dialog.setupWorkspace(self.current_workspace) if not self.server_dialog.tryConnection(): print("Login Failed") connect = self.server_dialog.exec_() if connect : self.current_workspace = self.server_dialog.workspace self.saveConfig(update=True) else: return self.refresh_packages() def saveConfig(self,update=False): config = self.current_workspace.getConfig() if not update: self.config[config[0]] = {} for k,v in config[1].items(): pprint( (type(k), type(v)) ) self.config[config[0]][k]=v self.config.write() self.loadWorkspaceMenu() def refresh_packages(self): packages = [ PackageItem(p) for _,p in self.current_workspace.get_package_list().items() ] self.packagesModel = PackageModel(packages) self.packageListWidget.packagesViewServer.setModel(self.packagesModel) self.packageListWidget.packagesViewServer.resizeRowsToContents()