def testuniqueId(self): doc = QDomDocument() documentElement = doc.createElement('ComposerItemClipboard') self.mComposition.writeXML(documentElement, doc) self.mComposition.addItemsFromXML(documentElement, doc, 0, False) # test if both composer maps have different ids newMap = QgsComposerMap() mapList = self.mComposition.composerMapItems() for mapIt in mapList: if mapIt != self.mComposerMap: newMap = mapIt break oldId = self.mComposerMap.id() newId = newMap.id() self.mComposition.removeComposerItem(newMap) myMessage = 'old: %s new: %s' % (oldId, newId) assert oldId != newId, myMessage
def testuniqueId(self): doc = QDomDocument() documentElement = doc.createElement("ComposerItemClipboard") self.mComposition.writeXML(documentElement, doc) self.mComposition.addItemsFromXML(documentElement, doc, 0, False) # test if both composer maps have different ids newMap = QgsComposerMap() mapList = self.mComposition.composerMapItems() for mapIt in mapList: if mapIt != self.mComposerMap: newMap = mapIt break oldId = self.mComposerMap.id() newId = newMap.id() self.mComposition.removeComposerItem(newMap) myMessage = "old: %s new: %s" % (oldId, newId) assert oldId != newId, myMessage
class UiInspector: def __init__(self): self.ui_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../src/ui/*.ui')) self.printMsg("Loading UI files " + self.ui_dir) # list of widget classes we want to follow self.follow = [ QWidget, QDialog, QCheckBox, QComboBox, QDial, QPushButton, QLabel, QLCDNumber, QLineEdit, QRadioButton, QScrollBar, QSlider, QSpinBox, QTextEdit, QDateEdit, QTimeEdit, QDateTimeEdit, QListView, QProgressBar, QTableView, QTabWidget, QTextBrowser, QDialogButtonBox, QScrollArea, QGroupBox, QStackedWidget, ] def printMsg(self, msg): sys.stderr.write(msg + "\n") def widgetXml(self, element, widget, level=0, label=None): #print tostring ( element ) #self.printMsg ( "class: " + str( type ( widget ) ) ) #self.printMsg ( "objectName: " + widget.objectName() ) #self.printMsg ( "windowTitle: " + widget.windowTitle() ) if not widget.objectName(): return lab = label if hasattr(widget, 'text'): lab = widget.text() if widget.windowTitle(): label = widget.windowTitle() if not lab: lab = '' subElement = self.doc.createElement('widget') subElement.setAttribute('class', widget.__class__.__name__) subElement.setAttribute('objectName', widget.objectName()) subElement.setAttribute('label', lab) element.appendChild(subElement) #print str ( widget.children () ) # tab widget label is stored in QTabWidget->QTabBarPrivate->tabList->QTab .. if type(widget) in [QTabWidget]: children = list({'widget': widget.widget(i), 'label': widget.tabText(i)} for i in range(0, widget.count())) else: children = list({'widget': c, 'label': None} for c in widget.children()) for child in children: w = child['widget'] if w.isWidgetType() and (type(w) in self.follow): self.widgetXml(subElement, w, level + 1, child['label']) def xml(self): self.doc = QDomDocument() element = self.doc.createElement("qgiswidgets") self.doc.appendChild(element) for p in glob.glob(self.ui_dir): self.printMsg("Loading " + p) # qgsrasterlayerpropertiesbase.ui is giving: No module named qwt_plot try: widget = loadUi(p) #print dir ( ui ) self.widgetXml(element, widget) except Exception, e: #except IOError, e: self.printMsg(str(e)) return self.doc.toString(2)