Example #1
0
    def __init__(self, stylesheet, data, preview, snippet, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.scale = .3
        self.data = data
        self.ui = Ui_templates()
        self.ui.setupUi(self)
        self.ui.preview = preview
        self.ui.snippet = snippet
        self.stylesheet = stylesheet
        self.pw = self.stylesheet.ps[0]
        self.ph = self.stylesheet.ps[1]
        self.pageImage = QtGui.QImage(int(self.pw), int(self.ph),
                                      QtGui.QImage.Format_RGB32)

        self.templates = copy(self.stylesheet.pageTemplates)
        self.template = None
        for template in self.templates:
            self.ui.templates.addItem(template)
Example #2
0
    def __init__(self, stylesheet, data, preview, snippet, parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.scale = .3
        self.data = data
        self.ui=Ui_templates()
        self.ui.setupUi(self)
        self.ui.preview = preview
        self.ui.snippet = snippet
        self.stylesheet = stylesheet
        self.pw=self.stylesheet.ps[0]
        self.ph=self.stylesheet.ps[1]
        self.pageImage=QtGui.QImage(int(self.pw),
                                    int(self.ph),
                                    QtGui.QImage.Format_RGB32)

        self.templates = copy(self.stylesheet.pageTemplates)
        self.template = None
        for template in self.templates:
            self.ui.templates.addItem(template)
Example #3
0
class PageTemplates(QtGui.QWidget):
    def __init__(self, stylesheet, data, preview, snippet, parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.scale = .3
        self.data = data
        self.ui=Ui_templates()
        self.ui.setupUi(self)
        self.ui.preview = preview
        self.ui.snippet = snippet
        self.stylesheet = stylesheet
        self.pw=self.stylesheet.ps[0]
        self.ph=self.stylesheet.ps[1]
        self.pageImage=QtGui.QImage(int(self.pw),
                                    int(self.ph),
                                    QtGui.QImage.Format_RGB32)

        self.templates = copy(self.stylesheet.pageTemplates)
        self.template = None
        for template in self.templates:
            self.ui.templates.addItem(template)

    def applyChanges(self):
        # TODO: validate everything
        self.frame=[str(w.text()) for w in [
            self.ui.left,
            self.ui.top,
            self.ui.width,
            self.ui.height
            ]]
        self.template["frames"][self.frameIndex]=self.frame
        self.template['showFooter']=self.ui.footer.isChecked()
        self.template['showHeader']=self.ui.header.isChecked()
        if str(self.ui.background.text()):
            self.template['background']=str(self.ui.background.text())
        self.updatePreview()

    def on_templates_currentIndexChanged(self, text):
        if not isinstance(text,StringTypes): return
        text=str(text)
        self.template=self.templates[text]
        self.ui.frames.clear()
        for i in range(0, len(self.template['frames'])):
            self.ui.frames.addItem('Frame %d'%(i+1))
        self.ui.footer.setChecked(self.template['showFooter'])
        self.ui.header.setChecked(self.template['showHeader'])
        self.ui.background.setText(self.template.get("background",""))
        self.updatePreview()

    def on_frames_currentIndexChanged(self, index):
        if type(index) != int: return
        if not self.template: return
        self.frameIndex=index
        self.frame=self.template['frames'][index]
        self.ui.left.setText(self.frame[0])
        self.ui.top.setText(self.frame[1])
        self.ui.width.setText(self.frame[2])
        self.ui.height.setText(self.frame[3])
        self.updatePreview()


    def on_selectFile_clicked(self,b=None):
        if b is not None: return

        fname=QtGui.QFileDialog.getOpenFileName(self,
                                                'Open Background Image',
                                                os.getcwd()
                                                )
        self.ui.background.setText(fname)
        self.applyChanges()

    def updatePreview(self):
        pm=QtGui.QPixmap(self.pageImage)
        p=QtGui.QPainter(pm)
        # Draw white page
        p.setBrush(QtGui.QBrush(QtGui.QColor("white")))
        p.drawRect(-1,-1,pm.width()+2,pm.height()+2)

        pen = QtGui.QPen()
        pen.setWidth(1/self.scale) # Make it be 1px wide when scaled
        p.setPen(pen)

        # Draw background
        bg=self.template.get("background",None)
        if bg:
            bg=QtGui.QImageReader(bg,)
            bg.setScaledSize(QtCore.QSize(pm.width(),pm.height()))
            p.drawImage(QtCore.QPoint(0,0),bg.read())

        x1=self.stylesheet.lm
        y1=self.stylesheet.tm
        tw=self.stylesheet.pw-self.stylesheet.lm-self.stylesheet.rm
        th=self.stylesheet.ph-self.stylesheet.bm-self.stylesheet.tm

        def drawFrame(frame):
            x=self.stylesheet.adjustUnits(frame[0],tw)
            y=self.stylesheet.adjustUnits(frame[1],th)
            w=self.stylesheet.adjustUnits(frame[2],tw)-1
            h=self.stylesheet.adjustUnits(frame[3],th)-1
            p.drawRect(x1+x,y1+y,w,h)

        p.setBrush(QtGui.QBrush(QtGui.QColor(150,150,150,128)))
        for frame in self.template['frames']:
            drawFrame(frame)
        p.setBrush(QtGui.QBrush(QtGui.QColor(255,255,0,128)))
        drawFrame(self.frame)
        self.ui.preview.setPixmap(pm.scaled(self.pw*self.scale,self.ph*self.scale))
        p.end()
        self.data['pageTemplates']=self.templates
        body=highlight(json.dumps(self.data, indent=2),
            JavascriptLexer(),HtmlFormatter())
        head=HtmlFormatter().get_style_defs('.highlight')
        self.ui.snippet.setHtml(
        '''<HEAD>
             <STYLE type="text/css">
             %s
             </STYLE>
           </HEAD>
           <BODY>
           %s
           </BODY>
        '''%(head,body))