def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self.scene(), self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem(para1, Colors.contentFont(), Colors.heading, 500, self.scene(), self, DemoTextItem.STATIC_TEXT) self.description2 = DemoTextItem(self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self.scene(), self, DemoTextItem.STATIC_TEXT) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos( 0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos( 0, self.description1.pos().y() + self.description1.boundingRect().height() + 15)
def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self.scene(), self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self.scene(), self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QtGui.QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self.scene(), self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10)
def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10)
def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem(para1, Colors.contentFont(), Colors.heading, 500, self, DemoTextItem.STATIC_TEXT) self.description2 = DemoTextItem(self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self, DemoTextItem.STATIC_TEXT) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos(0, self.description1.pos().y() + self.description1.boundingRect().height() + 15)
class ExampleContent(DemoItem): def __init__(self, name, parent=None): super(ExampleContent, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if id == DemoItemAnimation.ANIM_OUT: # Free up some memory. self.heading = None self.description = None self.screenshot = None self._prepared = False def loadDescription(self): contents = self._menu_manager.getHtml(self.name).data().decode('utf8') if contents == '': paragraphs = [] else: exampleDoc = parseString(contents) paragraphs = exampleDoc.getElementsByTagName('p') if len(paragraphs) < 1: Colors.debug( "- ExampleContent.loadDescription(): Could not load description:", self._menu_manager.info[self.name].get('docfile')) description = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." for p in paragraphs: description = self.extractTextFromParagraph(p) if self.isSummary(description): break return Colors.contentColor + description def isSummary(self, text): re = QRegExp( "(In )?((The|This) )?(%s )?.*(tutorial|example|demo|application)" % self.name, Qt.CaseInsensitive) return ('[' not in text) and (re.indexIn(text) >= 0) def extractTextFromParagraph(self, parentNode): description = '' node = parentNode.firstChild while node is not None: if node.nodeType == node.TEXT_NODE: description += Colors.contentColor + node.nodeValue elif node.hasChildNodes(): if node.nodeName == 'b': beginTag = '<b>' endTag = '</b>' elif node.nodeName == 'a': beginTag = Colors.contentColor endTag = '</font>' elif node.nodeName == 'i': beginTag = '<i>' endTag = '</i>' elif node.nodeName == 'tt': beginTag = '<tt>' endTag = '</tt>' else: beginTag = endTag = '' description += beginTag + self.extractTextFromParagraph( node) + endTag node = node.nextSibling return description def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem( QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos( 0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos( 0, self.description.pos().y() + self.description.boundingRect().height() + 10) def boundingRect(self): return QRectF(0, 0, 500, 100)
class ExampleContent(DemoItem): def __init__(self, name, scene=None, parent=None): super(ExampleContent, self).__init__(scene, parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None def prepare(self): if not self.prepared: self.prepared = True self.createContent() def animationStopped(self, id): if id == DemoItemAnimation.ANIM_OUT: # Free up some memory. self.heading = None self.description = None self.screenshot = None self.prepared = False def loadDescription(self): ba = self._menu_manager.getHtml(self.name) exampleDoc = QtXml.QDomDocument() exampleDoc.setContent(ba, False) paragraphs = exampleDoc.elementsByTagName('p') if paragraphs.length() < 1: Colors.debug("- ExampleContent.loadDescription(): Could not load description:", self._menu_manager.info[self.name].get('docfile')) description = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." for p in range(paragraphs.length()): description = self.extractTextFromParagraph(paragraphs.item(p)) if self.isSummary(description): break return Colors.contentColor + description def isSummary(self, text): re = QtCore.QRegExp("(In )?((The|This) )?(%s )?.*(tutorial|example|demo|application)" % self.name, QtCore.Qt.CaseInsensitive) return ('[' not in text) and (re.indexIn(text) >= 0) def extractTextFromParagraph(self, parentNode): description = '' node = parentNode.firstChild() while not node.isNull(): if node.isText(): description += Colors.contentColor + node.nodeValue() elif node.hasChildNodes(): if node.nodeName() == 'b': beginTag = '<b>' endTag = '</b>' elif node.nodeName() == 'a': beginTag = Colors.contentColor endTag = '</font>' elif node.nodeName() == 'i': beginTag = '<i>' endTag = '</i>' elif node.nodeName() == 'tt': beginTag = '<tt>' endTag = '</tt>' else: beginTag = endTag = '' description += beginTag + self.extractTextFromParagraph(node) + endTag node = node.nextSibling() return description def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self.scene(), self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self.scene(), self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QtGui.QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self.scene(), self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10) def boundingRect(self): return QtCore.QRectF(0, 0, 500, 100)
class ExampleContent(DemoItem): def __init__(self, name, parent=None): super(ExampleContent, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if id == DemoItemAnimation.ANIM_OUT: # Free up some memory. self.heading = None self.description = None self.screenshot = None self._prepared = False def loadDescription(self): contents = self._menu_manager.getHtml(self.name).data().decode("utf8") if contents == "": paragraphs = [] else: exampleDoc = parseString(contents) paragraphs = exampleDoc.getElementsByTagName("p") if len(paragraphs) < 1: Colors.debug( "- ExampleContent.loadDescription(): Could not load description:", self._menu_manager.info[self.name].get("docfile"), ) description = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." for p in paragraphs: description = self.extractTextFromParagraph(p) if self.isSummary(description): break return Colors.contentColor + description def isSummary(self, text): re = QRegExp("(In )?((The|This) )?(%s )?.*(tutorial|example|demo|application)" % self.name, Qt.CaseInsensitive) return ("[" not in text) and (re.indexIn(text) >= 0) def extractTextFromParagraph(self, parentNode): description = "" node = parentNode.firstChild while node is not None: if node.nodeType == node.TEXT_NODE: description += Colors.contentColor + node.nodeValue elif node.hasChildNodes(): if node.nodeName == "b": beginTag = "<b>" endTag = "</b>" elif node.nodeName == "a": beginTag = Colors.contentColor endTag = "</font>" elif node.nodeName == "i": beginTag = "<i>" endTag = "</i>" elif node.nodeName == "tt": beginTag = "<tt>" endTag = "</tt>" else: beginTag = endTag = "" description += beginTag + self.extractTextFromParagraph(node) + endTag node = node.nextSibling return description def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10) def boundingRect(self): return QRectF(0, 0, 500, 100)
class MenuContentItem(DemoItem): def __init__(self, el, parent=None): super(MenuContentItem, self).__init__(parent) self.name = el.getAttribute('name') self.heading = None self.description1 = None self.description2 = None readme_dir = QFileInfo(__file__).dir() readme_dir.cdUp() readme_dir.cd(el.getAttribute('dirname')) self.readmePath = readme_dir.absoluteFilePath('README') self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if self.name == Colors.rootMenuName: # Optimization hack. return if id == DemoItemAnimation.ANIM_OUT: # Free up some memory self.heading = None self.description1 = None self.description2 = None self._prepared = False def loadDescription(self, startPara, nrPara): readme = QFile(self.readmePath) if not readme.open(QFile.ReadOnly): Colors.debug("- MenuContentItem.loadDescription: Could not load:", self.readmePath) return "" in_str = QTextStream(readme) # Skip a certain number of paragraphs. while startPara: if not in_str.readLine(): startPara -= 1 # Read in the number of wanted paragraphs. result = '' line = in_str.readLine() while True: result += line + " " line = in_str.readLine() if not line: nrPara -= 1 line = "<br><br>" + in_str.readLine() if nrPara == 0 or in_str.atEnd(): break return Colors.contentColor + result def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem(para1, Colors.contentFont(), Colors.heading, 500, self, DemoTextItem.STATIC_TEXT) self.description2 = DemoTextItem(self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self, DemoTextItem.STATIC_TEXT) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos( 0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos( 0, self.description1.pos().y() + self.description1.boundingRect().height() + 15) def boundingRect(self): return QRectF(0, 0, 500, 350)
class MenuContentItem(DemoItem): def __init__(self, el, parent=None): super(MenuContentItem, self).__init__(parent) self.name = el.getAttribute("name") self.heading = None self.description1 = None self.description2 = None readme_dir = QFileInfo(__file__).dir() readme_dir.cdUp() readme_dir.cd(el.getAttribute("dirname")) self.readmePath = readme_dir.absoluteFilePath("README") self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if self.name == Colors.rootMenuName: # Optimization hack. return if id == DemoItemAnimation.ANIM_OUT: # Free up some memory self.heading = None self.description1 = None self.description2 = None self._prepared = False def loadDescription(self, startPara, nrPara): readme = QFile(self.readmePath) if not readme.open(QFile.ReadOnly): Colors.debug("- MenuContentItem.loadDescription: Could not load:", self.readmePath) return "" in_str = QTextStream(readme) # Skip a certain number of paragraphs. while startPara: if not in_str.readLine(): startPara -= 1 # Read in the number of wanted paragraphs. result = "" line = in_str.readLine() while True: result += line + " " line = in_str.readLine() if not line: nrPara -= 1 line = "<br><br>" + in_str.readLine() if nrPara == 0 or in_str.atEnd(): break return Colors.contentColor + result def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem( para1, Colors.contentFont(), Colors.heading, 500, self, DemoTextItem.STATIC_TEXT ) self.description2 = DemoTextItem( self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self, DemoTextItem.STATIC_TEXT ) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos(0, self.description1.pos().y() + self.description1.boundingRect().height() + 15) def boundingRect(self): return QRectF(0, 0, 500, 350)