def initUI(self): vbox = QtGui.QVBoxLayout() vbox.addWidget(QtGui.QLabel("Project options")) projectWidget = QtGui.QWidget() grid = QtGui.QGridLayout() self.__projectTitleField = QtGui.QLineEdit() grid.addWidget(QtGui.QLabel("Project title"), 0, 0) grid.addWidget(self.__projectTitleField, 0, 1) grid.addWidget(QtGui.QLabel("Project folder"), 1, 0) self.__projectFolderField = FileField("Project folder", self.config.get('base', 'projectFolder') ,True) grid.addWidget(self.__projectFolderField, 1, 1) grid.addWidget(QtGui.QLabel("Master template"), 2, 0) self.__masterTemplateField = FileField("Master template", self.config.get('base', 'masterTemplate')) grid.addWidget(self.__masterTemplateField, 2, 1) projectWidget.setLayout(grid) vbox.addWidget(projectWidget) # Add documents vbox.addWidget(QtGui.QLabel("Documents")) self.__documentsEdit = DocumentsEdit(self.config) vbox.addWidget(self.__documentsEdit) vbox.addWidget(self.initOptions()) self.setLayout(vbox) self.setWindowTitle("Kile project creator") self.show()
def __init__(self, config): super(DocumentsEdit, self).__init__() self.__config = config grid = QtGui.QGridLayout() grid.addWidget(QtGui.QLabel("Document title"), 0, 0) self.__documentTitleField = QtGui.QLineEdit() grid.addWidget(self.__documentTitleField, 0, 1) grid.addWidget(QtGui.QLabel("File name"), 1, 0) self.__documentFileNameField = QtGui.QLineEdit() grid.addWidget(self.__documentFileNameField, 1, 1) self.__documentTitleField.textChanged.connect(self.__documentFileNameField.setText) grid.addWidget(QtGui.QLabel("Template"), 2, 0) self.__templateField = FileField("Template") grid.addWidget(self.__templateField, 2, 1) addIcon = QtGui.QIcon.fromTheme("document-new") addButton = QtGui.QPushButton(addIcon, 'Add', self) addButton.clicked.connect(self.__addDocument) grid.addWidget(addButton, 3, 1) self.__documentList = QtGui.QListWidget(self) grid.addWidget(self.__documentList, 4, 0, 1, 2) self.setLayout(grid) self.__loadDocuments()
class KileHelper(QtGui.QWidget): def __init__(self, config): super(KileHelper, self).__init__() self.config = config self.initUI() def initUI(self): vbox = QtGui.QVBoxLayout() vbox.addWidget(QtGui.QLabel("Project options")) projectWidget = QtGui.QWidget() grid = QtGui.QGridLayout() self.__projectTitleField = QtGui.QLineEdit() grid.addWidget(QtGui.QLabel("Project title"), 0, 0) grid.addWidget(self.__projectTitleField, 0, 1) grid.addWidget(QtGui.QLabel("Project folder"), 1, 0) self.__projectFolderField = FileField("Project folder", self.config.get('base', 'projectFolder') ,True) grid.addWidget(self.__projectFolderField, 1, 1) grid.addWidget(QtGui.QLabel("Master template"), 2, 0) self.__masterTemplateField = FileField("Master template", self.config.get('base', 'masterTemplate')) grid.addWidget(self.__masterTemplateField, 2, 1) projectWidget.setLayout(grid) vbox.addWidget(projectWidget) # Add documents vbox.addWidget(QtGui.QLabel("Documents")) self.__documentsEdit = DocumentsEdit(self.config) vbox.addWidget(self.__documentsEdit) vbox.addWidget(self.initOptions()) self.setLayout(vbox) self.setWindowTitle("Kile project creator") self.show() def initOptions(self): widget = QtGui.QWidget() optionsLayout = QtGui.QHBoxLayout() saveOptionsButton = QtGui.QPushButton('Save settings') saveOptionsButton.clicked.connect(self.__saveOptionsClick) optionsLayout.addWidget(saveOptionsButton) generateProjectButton = QtGui.QPushButton('Create project') generateProjectButton.clicked.connect(self.__createProject) optionsLayout.addWidget(generateProjectButton) widget.setLayout(optionsLayout) return widget def __saveOptionsClick(self, e): self.config.set('base', 'projectFolder', self.__projectFolderField.getPath()) if self.__masterTemplateField.getPath(): logging.info("Master template set") self.config.set('base', 'masterTemplate', self.__masterTemplateField.getPath()) for doc in self.__documentsEdit.documents: if not doc.name: continue docSection = doc.name.lower() if not self.config.has_section(docSection): self.config.add_section(docSection) self.config.set('documents', doc.name) self.config.set(docSection, 'name', doc.name) self.config.set(docSection, 'title', doc.title) self.config.set(docSection, 'template', doc.template) def __createProject(self, e): project = Project() project.name = self.__projectTitleField.text() masterDoc = Document() masterDoc.name = 'Master' masterDoc.template = str(self.__masterTemplateField.getPath()) project.setMaster(masterDoc) for doc in self.__documentsEdit.documents: project.addDocument(doc) project.createProject(str(self.__projectFolderField.getPath()))
class DocumentsEdit(QtGui.QWidget): __documentTitleField = None __documentFileNameField = None documents = [] def __init__(self, config): super(DocumentsEdit, self).__init__() self.__config = config grid = QtGui.QGridLayout() grid.addWidget(QtGui.QLabel("Document title"), 0, 0) self.__documentTitleField = QtGui.QLineEdit() grid.addWidget(self.__documentTitleField, 0, 1) grid.addWidget(QtGui.QLabel("File name"), 1, 0) self.__documentFileNameField = QtGui.QLineEdit() grid.addWidget(self.__documentFileNameField, 1, 1) self.__documentTitleField.textChanged.connect(self.__documentFileNameField.setText) grid.addWidget(QtGui.QLabel("Template"), 2, 0) self.__templateField = FileField("Template") grid.addWidget(self.__templateField, 2, 1) addIcon = QtGui.QIcon.fromTheme("document-new") addButton = QtGui.QPushButton(addIcon, 'Add', self) addButton.clicked.connect(self.__addDocument) grid.addWidget(addButton, 3, 1) self.__documentList = QtGui.QListWidget(self) grid.addWidget(self.__documentList, 4, 0, 1, 2) self.setLayout(grid) self.__loadDocuments() def __loadDocuments(self): options = self.__config.options('documents') for option in options: doc = Document() doc.name = self.__config.get(option, 'name') doc.title = self.__config.get(option, 'title') doc.template = self.__config.get(option, 'template') self.documents.append(doc) self.__documentList.addItem(doc.name) logging.debug("Loaded document:") logging.debug("name: %s", doc.name) logging.debug("title: %s", doc.title) logging.debug("template: %s", doc.template) def __addDocument(self, e): doc = Document() doc.name = str(self.__documentFileNameField.text()) doc.title = str(self.__documentTitleField.text()) doc.template = self.__templateField.getPath() self.documents.append(doc) self.__documentList.addItem(self.__documentFileNameField.text())