Advertisement
Guest User

QTutils

a guest
Mar 24th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.50 KB | None | 0 0
  1. # import os
  2. # import maya.cmds as cmds
  3. # qc.QDir.setCurrent("F:/kTools/")
  4.  
  5. import pysideuic
  6. import xml.etree.ElementTree as xml
  7. from cStringIO import StringIO
  8.  
  9. from PySide import QtCore as qc
  10. from PySide import QtGui as qg
  11. import shiboken
  12.  
  13. def wrapinstance(ptr, base=None):
  14. # Nathan Horne' wrap instance.
  15. # 'wrap a long pointer as a QtObject'
  16.     if ptr is None:
  17.         return None
  18.     ptr = long(ptr) #Ensure type
  19.     if globals().has_key('shiboken'):
  20.         if base is None:
  21.             qObj = shiboken.wrapInstance(long(ptr), qc.QObject)
  22.             metaObj = qObj.metaObject()
  23.             cls = metaObj.className()
  24.             superCls = metaObj.superClass().className()
  25.             if hasattr(qg, cls):
  26.                 base = getattr(qg, cls)
  27.             elif hasattr(qg, superCls):
  28.                 base = getattr(qg, superCls)
  29.             else:
  30.                 base = qg.QWidget
  31.         return shiboken.wrapInstance(long(ptr), base)
  32.     elif globals().has_key('sip'):
  33.         base = qc.QObject
  34.         return sip.wrapinstance(long(ptr), base)
  35.     else:
  36.         return None
  37.  
  38. def loadUiType(uiFile):
  39.     'load a .ui file in memory'
  40.     parsed = xml.parse(uiFile)
  41.     widget_class = parsed.find('widget').get('class')
  42.     form_class = parsed.find('class').text
  43.  
  44.     with open(uiFile, 'r') as f:
  45.         o = StringIO()
  46.         frame = {}
  47.  
  48.         pysideuic.compileUi(f, o, indent=0)
  49.         pyc = compile(o.getvalue(), '<string>', 'exec')
  50.         exec pyc in frame
  51.  
  52.         # Fetch the base_class and form class based on their type
  53.         # in the xml from designer
  54.         form_class = frame['Ui_%s'%form_class]
  55.         base_class = eval('qg.%s'%widget_class)
  56.  
  57.     return form_class, base_class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement