def __init__(self): QMainWindow.__init__(self) self.site = None self.editor = "" self.install_directory = os.getcwd() self.content_after_animation = "" self.default_path = "" self.method_after_animation = "" Generator.install_directory = self.install_directory self.initUndoRedo() self.initGui() self.readSettings() self.loadPlugins() if self.default_path: if self.loadProject(self.default_path + "/Site.qml"): # if site has never been generated (after install) # then generate the site site = QDir(Generator.sitesPath() + "/" + self.site.title) if site.exists(): gen = Generator() gen.generateSite(self, self.site) self.dashboard.setExpanded(True) self.showDashboard() self.statusBar().showMessage("Ready")
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): QMainWindow.__init__(self) self.site = None self.editor = "" self.install_directory = os.getcwd() self.content_after_animation = "" self.default_path = "" self.method_after_animation = "" Generator.install_directory = self.install_directory self.initUndoRedo() self.initGui() self.readSettings() self.loadPlugins() if self.default_path: if self.loadProject(os.path.join(self.default_path, "Site.qml")): gen = Generator() gen.generateSite(self, self.site) self.dashboard.setExpanded(True) self.showDashboard() self.statusBar().showMessage( QCoreApplication.translate("MainWindow", "Ready"))
def save(self): if self.site.title != self.title.text(): oldTitle = self.site.title self.site.title = self.title.text() self.site.save() os.rename(Generator.sitesPath() + "/" + oldTitle, Generator.sitesPath() + "/" + self.site.title) self.win.statusBar().showMessage("Site settings have been saved. Site should be rebuilded. Output path has been renamed to " + self.title.text()) else: self.site.author = self.author.text() self.site.copyright = self.copyright.text() self.site.description = self.description.text() self.site.keywords = self.keywords.text() self.site.publisher = self.publisher.currentData() self.site.logo = self.logo.text() self.site.save() self.win.statusBar().showMessage("Site settings have been saved. Site should be rebuilded on the dashboard.")
def load(self): oldTitle = self.site.title self.title.setText(self.site.title) self.description.setText(self.site.description) self.copyright.setText(self.site.copyright) self.keywords.setText(self.site.keywords) self.author.setText(self.site.author) self.logo.setText(self.site.logo) if self.site.logo: self.image.setImage(QImage(os.path.join(self.site.source_path, "assets", "images", self.site.logo))) index = self.publisher.findData(self.site.publisher) self.publisher.setCurrentIndex(index) if oldTitle != self.site.title: os.rename(Generator.sitesPath() + "/" + oldTitle, Generator.sitesPath() + "/" + self.site.title) print("renaming1: " + Generator.sitesPath() + "/" + oldTitle) self.win.statusBar().showMessage("Site settings have been loaded. Site should be rebuilded. Output path has been renamed to " + self.site.title())
def undo(self): if os.path.exists(self.content_editor.filename): os.remove(self.content_editor.filename) shutil.copy(self.temp_filename, self.content_editor.filename) self.content_editor.load() gen = Generator() gen.generateSite(self.win, self.content_editor.site, self.content_editor.content)
def buildSite(self): self.site.loadMenus() if len(self.site.pages) == 0 and len(self.site.posts) == 0: self.statusBar().showMessage( "Site has no pages or posts to build.") else: gen = Generator() gen.generateSite(self, self.site) self.statusBar().showMessage(self.site.title + " has been generated")
def buildSite(self): self.site.loadMenus() self.site.loadPages() self.site.loadPosts() if len(self.site.pages) == 0 and len(self.site.posts) == 0: self.statusBar().showMessage( QCoreApplication.translate( "MainWindow", "Site has no pages or posts to build.")) else: gen = Generator() gen.generateSite(self, self.site) self.statusBar().showMessage( self.site.title + " " + QCoreApplication.translate("MainWindow", "has been generated"))
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)
def title(self, title): self._title = title self.deploy_path = os.path.join(Generator.sitesPath(), title)