Exemple #1
0
    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")
Exemple #2
0
    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"))
Exemple #4
0
 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.")
Exemple #5
0
 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)
Exemple #7
0
 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"))
Exemple #9
0
    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)