def on_copy(self): self.ds_model.sort(DSManagerModel.COLUMN_GROUP_DS) select_data_sources_dialog = QDialog(self) select_data_sources_dialog.resize(400, 400) select_data_sources_dialog.setWindowTitle( self.tr("Choose source service")) layout = QVBoxLayout(select_data_sources_dialog) select_data_sources_dialog.setLayout(layout) list_view = QTreeView(self) layout.addWidget(list_view) list_view.setModel(self.ds_model) #list_view.expandAll() list_view.setColumnHidden(DSManagerModel.COLUMN_VISIBILITY, True) list_view.setAlternatingRowColors(True) if hasattr(list_view.header(), "setResizeMode"): # Qt4 list_view.header().setResizeMode(DSManagerModel.COLUMN_GROUP_DS, QHeaderView.ResizeToContents) else: # Qt5 list_view.header().setSectionResizeMode( DSManagerModel.COLUMN_GROUP_DS, QHeaderView.ResizeToContents) list_view.clicked.connect( lambda index: select_data_sources_dialog.accept() \ if not self.ds_model.isGroup(index) and \ index.column() == DSManagerModel.COLUMN_GROUP_DS \ else None ) if select_data_sources_dialog.exec_() == QDialog.Accepted: data_source = self.ds_model.data(list_view.currentIndex(), Qt.UserRole) data_source.id += "_copy" edit_dialog = DsEditDialog() edit_dialog.setWindowTitle(self.tr('Create service from existing')) edit_dialog.fill_ds_info(data_source) if edit_dialog.exec_() == QDialog.Accepted: self.feel_list() self.ds_model.resetModel()
def on_copy(self): self.ds_model.sort(DSManagerModel.COLUMN_GROUP_DS) select_data_sources_dialog = QDialog(self) select_data_sources_dialog.resize(400, 400) select_data_sources_dialog.setWindowTitle(self.tr("Choose source service")) layout = QVBoxLayout(select_data_sources_dialog) select_data_sources_dialog.setLayout(layout) list_view = QTreeView(self) layout.addWidget(list_view) list_view.setModel(self.ds_model) #list_view.expandAll() list_view.setColumnHidden(DSManagerModel.COLUMN_VISIBILITY, True) list_view.setAlternatingRowColors(True) if hasattr(list_view.header(), "setResizeMode"): # Qt4 list_view.header().setResizeMode(DSManagerModel.COLUMN_GROUP_DS, QHeaderView.ResizeToContents) else: # Qt5 list_view.header().setSectionResizeMode(DSManagerModel.COLUMN_GROUP_DS, QHeaderView.ResizeToContents) list_view.clicked.connect( lambda index: select_data_sources_dialog.accept() \ if not self.ds_model.isGroup(index) and \ index.column() == DSManagerModel.COLUMN_GROUP_DS \ else None ) if select_data_sources_dialog.exec_() == QDialog.Accepted: data_source = self.ds_model.data(list_view.currentIndex(), Qt.UserRole) data_source.id += "_copy" edit_dialog = DsEditDialog() edit_dialog.setWindowTitle(self.tr('Create service from existing')) edit_dialog.fill_ds_info(data_source) if edit_dialog.exec_() == QDialog.Accepted: self.feel_list() self.ds_model.resetModel()
class QvDocumentacio(QDialog): comencaCarrega = pyqtSignal() acabaCarrega = pyqtSignal() '''Diàleg que mostra la documentació de la carpeta de documentació definida a configuracioQvista Mostra una TreeView amb els documents, i delega en el sistema la tasca d'obrir-los''' def __init__(self, parent: QWidget = None): super().__init__(parent) self.setMinimumSize(750, 500) #Layout principal. Tot aquí self.layout = QVBoxLayout(self) #Layout de la capçalera self.layoutCapcalera = QHBoxLayout() self.lblTitol = QLabel(' Documentació') self.layoutCapcalera.addWidget(self.lblTitol) self.qModel = ElMeuModel(self) self.lblExplicacio = QLabel() if os.path.isdir(carpetaDocuments): self.lblExplicacio.setText( 'Esteu visualitzant la documentació corporativa completa') rootPath = self.qModel.setRootPath(carpetaDocuments) else: self.lblExplicacio.setText( 'No teniu accés a la documentació corporativa. Esteu visualitzant una còpia local que pot no estar actualitzada.' ) rootPath = self.qModel.setRootPath(carpetaDocumentsLocal) self.treeView = QTreeView(self) self.treeView.setModel(self.qModel) self.treeView.setRootIndex(rootPath) self.treeView.clicked.connect(self.clicat) self.treeView.doubleClicked.connect(self.obrir) self.layoutBotonera = QHBoxLayout() self.layoutBotonera.addStretch() self.botoObrir = QvPushButton('Obrir', destacat=True) self.botoObrir.setEnabled(False) self.botoObrir.clicked.connect(self.obrir) self.layoutBotonera.addWidget(self.botoObrir) self.botoDescarregar = QvPushButton('Descarregar') self.botoDescarregar.setEnabled(False) self.botoDescarregar.clicked.connect(self.desar) self.layoutBotonera.addWidget(self.botoDescarregar) self.botoSortir = QvPushButton('Sortir') self.botoSortir.clicked.connect(self.close) self.layoutBotonera.addWidget(self.botoSortir) self.layout.addLayout(self.layoutCapcalera) self.layout.addWidget(self.lblExplicacio) self.layout.addWidget(self.treeView) self.layout.addLayout(self.layoutBotonera) self.formata() def formata(self): self.setWindowFlags(Qt.Window | Qt.FramelessWindowHint) self.layout.setAlignment(Qt.AlignCenter) self.lblTitol.setStyleSheet( 'background-color: %s; color: %s; border: 0px' % (QvConstants.COLORFOSCHTML, QvConstants.COLORBLANCHTML)) self.lblTitol.setFont(QvConstants.FONTCAPCALERES) self.lblTitol.setFixedHeight(40) self.lblExplicacio.setWordWrap(True) self.lblExplicacio.setStyleSheet( f'color: {QvConstants.COLORFOSCHTML}; margin: 20px 20px 0px 20px') for i in range(1, 4): self.treeView.header().hideSection(i) self.treeView.setHeaderHidden(True) self.treeView.adjustSize() self.treeView.setAnimated(True) self.treeView.setStyleSheet( 'QTreeView{margin: 20px 2px 0px 20px; border: none;}') self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layoutBotonera.setContentsMargins(10, 10, 10, 10) def clicat(self, index: int): path = self.qModel.fileInfo(index).absoluteFilePath() self.index = index if os.path.isfile(path): self.botoObrir.setEnabled(True) self.botoDescarregar.setEnabled(True) else: self.botoObrir.setEnabled(False) self.botoDescarregar.setEnabled(True) def obrir(self): path = self.qModel.fileInfo(self.index).absoluteFilePath() if os.path.isfile(path): self.comencaCarrega.emit() if '.html' in path: self.visor = QvVisorHTML(path, 'Vídeo de documentació') self.visor.setZoomFactor(1) self.visor.show() else: os.startfile(path) time.sleep(1) self.acabaCarrega.emit() def desar(self): path = self.qModel.fileInfo(self.index).absoluteFilePath() if os.path.isfile(path): nfile, _ = QFileDialog.getSaveFileName( None, 'Desar arxiu', os.path.join(QvMemoria().getDirectoriDesar(), Path(path).name)) if nfile != '': shutil.copy(path, nfile) else: nomCarpeta = Path(path).name nfile = str( QFileDialog.getExistingDirectory(self, "Select Directory")) if nfile != '': shutil.copytree(path, os.path.join(nfile, nomCarpeta)) def mousePressEvent(self, event): self.oldPos = event.globalPos() def mouseMoveEvent(self, event): delta = QPoint(event.globalPos() - self.oldPos) self.move(self.x() + delta.x(), self.y() + delta.y()) self.oldPos = event.globalPos() def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: self.close() if event.key() == Qt.Key_Return: self.obrir()