def update(self): if self.watch: Connector().unwatch(self.watch) self.watch = None enum = Connector().enum() self.mountBtn.setEnabled(enum.isRemovable(self.mountId)) if enum.isMounted(self.mountId): doc = enum.doc(self.mountId) self.mountBtn.setText("Unmount") self.storeBtn.setDocument(doc) self.watch = StoreWidget.StoreWatch(doc, self.update) Connector().watch(self.watch) self.mounted = True else: self.mountBtn.setText("Mount") self.storeBtn.setText(enum.name(self.mountId)) self.mounted = False
def __init__(self, parent=None): super(SyncEditor, self).__init__(parent) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.__changed = False self.__buttons = [] self.__rules = SyncRules() enum = Connector().enum() stores = zip(itertools.count(1), [enum.doc(s) for s in enum.allStores() if not enum.isSystem(s) and enum.isMounted(s)]) mainLayout = QtGui.QVBoxLayout() layout = QtGui.QGridLayout() layout.addWidget(QtGui.QLabel("From \\ To"), 0, 0) for (pos, store) in stores: button = DocButton(store, True) self.__buttons.append(button) layout.addWidget(button, 0, pos) button = DocButton(store, True) self.__buttons.append(button) layout.addWidget(button, pos, 0) for (row, store) in stores: for (col, peer) in stores: if store==peer: continue box = QtGui.QComboBox() box.addItems([SyncEditor.MAP[m] for m in SyncEditor.MODES]) box.setCurrentIndex(SyncEditor.MODES.index(self.__rules.mode(store, peer))) box.currentIndexChanged.connect( lambda i, store=store, peer=peer: self.__setRule(store, peer, i)) layout.addWidget(box, row, col) mainLayout.addLayout(layout) buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel); buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Synchronization rules")