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 __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)
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))