def load(self): #self.site.load() self.themename = self.site.theme self.themes.clear() for root, dirs, files in os.walk(Generator.themesPath()): for dir in dirs: theme = Theme() theme.name = dir pic_name = os.path.join(Generator.themesPath(), dir, "sample.png") if os.path.exists(pic_name): theme.sample_pic = pic_name html_name = os.path.join(Generator.themesPath(), dir, "sample.html") if os.path.exists(html_name): theme.sample_url = html_name theme.aktiv = self.site.theme == dir self.themes.append(theme) break # delete the previous theme widgets for row in range(self.themeLayout.rowCount()): for col in range(self.themeLayout.columnCount()): item = self.themeLayout.itemAtPosition(row, col) if item: w = item.widget() if w: w.hide() self.themeLayout.removeWidget(w) del w # load the actual themes row = 0 col = 1 for theme in self.themes: tw = ThemeWidget(theme) if theme.aktiv: self.themeLayout.addWidget(tw, 0, 0) else: tw.themeChanged.connect(self.themechanged) self.themeLayout.addWidget(tw, row, col) col = col + 1 if col > 1: row = row + 1 col = 0 vbox = QVBoxLayout() vbox.addStretch() self.themeLayout.addLayout(vbox, row + 1, 0) self.win.statusBar().showMessage("Themes have been loaded")
def __init__(self, win, site, content): AnimateableEditor.__init__(self) self.win = win self.site = site self.content = content self.is_new = False self.editor = None self.undoStack = QUndoStack() self.changed = False self.setAutoFillBackground(True) self.previewLink = HyperLink("") self.vbox = QVBoxLayout() self.layout = QGridLayout() self.titleLabel = QLabel() fnt = self.titleLabel.font() fnt.setPointSize(20) fnt.setBold(True) self.titleLabel.setFont(fnt) self.script = QPushButton("Page Script") self.title = QLineEdit() self.source = QLineEdit() self.source.setPlaceholderText("*.qml") self.excerpt = QLineEdit() self.date = QLineEdit() self.labelPermalink = QLabel("Permalink") self.labelTitle = QLabel("Title") self.labelAuthor = QLabel("Author") self.labelKeyword = QLabel("Keywords") self.labelLayout = QLabel("Layout") self.labelMenu = QLabel("Menu") self.author = QLineEdit() self.keywords = QLineEdit() self.menus = QComboBox() self.layouts = QComboBox() self.layouts.setMaximumWidth(100) for menu in self.site.menus.menus: self.menus.addItem(menu.name) for root, dirs, files in os.walk( os.path.join(self.site.source_path, "layouts")): for file in files: self.layouts.addItem(Path(file).stem) for root, dirs, files in os.walk( os.path.join(Generator.themesPath(), self.site.theme, "layouts")): for file in files: self.layouts.addItem(Path(file).stem) self.close = FlatButton(":/images/close_normal.png", ":/images/close_hover.png") self.close.setToolTip("Close Content Editor") self.undo = FlatButton(":/images/undo_normal.png", ":/images/undo_hover.png", "", ":/images/undo_disabled.png") self.redo = FlatButton(":/images/redo_normal.png", ":/images/redo_hover.png", "", ":/images/redo_disabled.png") self.undo.setToolTip("Undo") self.redo.setToolTip("Redo") self.undo.setEnabled(False) self.redo.setEnabled(False) hbox = QHBoxLayout() hbox.addWidget(self.undo) hbox.addWidget(self.redo) hbox.addWidget(self.close) self.scroll = QScrollArea() self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.scroll.setWidgetResizable(True) self.scroll.installEventFilter(self) self.layout.addWidget(self.titleLabel, 0, 0) self.layout.addWidget(self.previewLink, 0, 1) self.layout.addLayout(hbox, 0, 3) self.layout.addWidget(self.labelTitle, 1, 0) self.layout.addWidget(self.title, 2, 0) self.layout.addWidget(self.labelPermalink, 1, 1) self.layout.addWidget(self.source, 2, 1) self.layout.addWidget(self.labelAuthor, 3, 0) self.layout.addWidget(self.author, 4, 0) self.layout.addWidget(self.labelKeyword, 3, 1) self.layout.addWidget(self.keywords, 4, 1) self.layout.addWidget(self.labelMenu, 3, 2) self.layout.addWidget(self.menus, 4, 2) self.layout.addWidget(self.labelLayout, 3, 3) self.layout.addWidget(self.layouts, 4, 3) self.layout.addWidget(self.scroll, 7, 0, 1, 4) self.layout.addWidget(self.script, 8, 0, 1, 4) self.vbox.addLayout(self.layout) self.setLayout(self.vbox) if self.content.content_type == ContentType.POST: self.previewLink.setText("view post") self.excerptLabel = QLabel("Excerpt") self.layout.addWidget(self.excerptLabel, 5, 0) self.layout.addWidget(self.excerpt, 6, 0, 1, 2) self.datelabel = QLabel("Date") self.layout.addWidget(self.datelabel, 5, 2) self.layout.addWidget(self.date, 6, 2, 1, 2) self.filename = self.site.source_path + "/posts/" + content.source else: self.previewLink.setText("view page") self.filename = self.site.source_path + "/pages/" + content.source self.load() self.close.clicked.connect(self.closeEditor) self.title.editingFinished.connect(self.titleFinished) self.title.textChanged.connect(self.titleChanged) self.source.editingFinished.connect(self.sourceChanged) self.excerpt.editingFinished.connect(self.excerptChanged) self.date.editingFinished.connect(self.dateChanged) self.author.editingFinished.connect(self.authorChanged) self.keywords.editingFinished.connect(self.keywordsChanged) self.menus.currentTextChanged.connect(self.menuChanged) self.layouts.currentTextChanged.connect(self.layoutChanged) self.undoStack.canUndoChanged.connect(self.canUndoChanged) self.undoStack.canRedoChanged.connect(self.canRedoChanged) self.undoStack.undoTextChanged.connect(self.undoTextChanged) self.undoStack.redoTextChanged.connect(self.redoTextChanged) self.undo.clicked.connect(self.undoAction) self.redo.clicked.connect(self.redoAction) self.previewLink.clicked.connect(self.previewPage) self.script.clicked.connect(self.scriptClicked)