diff --git a/data/rig/arm.json b/data/rig/arm.json index e69de29..317bbe8 100644 --- a/data/rig/arm.json +++ b/data/rig/arm.json @@ -0,0 +1,57 @@ +{ + "bindjnts": [ + "bind_s_shoulder_jnt", + "bind_s_elbow_jnt", + "bind_s_wrist_jnt", + "bind_s_wristEnd_jnt" + ], + "fkcontrols": [ + "ctrl_s_fk_shoulder", + "ctrl_s_fk_elbow", + "ctrl_s_fk_wrist" + ], + "fkjnts": [ + "fk_s_shoulder_jnt", + "fk_s_elbow_jnt", + "fk_s_wrist_jnt", + "fk_s_wristEnd_jnt" + ], + "ikcontrols": [ + "ctrl_s_ik_arm, ikh_s_arm", + "ctrl_s_pv_arm" + ], + "ikjnts": [ + "ik_s_shoulder_jnt", + "ik_s_elbow_jnt", + "ik_s_wrist_jnt", + "ik_s_wristEnd_jnt" + ], + "positions": [ + [ + 2.1, + 0.0, + 5.0 + ], + [ + -0.1, + 0.0, + 0.0 + ], + [ + -0.1, + 0.0, + -5.0 + ], + [ + 1.0, + 0.0, + -8.0 + ] + ], + "rigjnt": [ + "rig_s_shoulder_jnt", + "rig_s_elbow_jnt", + "rig_s_wrist_jnt", + "rig_s_wristEnd_jnt" + ] +} \ No newline at end of file diff --git a/layout/test.json b/layout/test.json new file mode 100644 index 0000000..905b5b0 --- /dev/null +++ b/layout/test.json @@ -0,0 +1 @@ +{"fkcontrols": ["ctrl_fk_shoulder", "ctrl_fk_elbow", "ctrl_fk_wrist"], "ikjnts": ["ik_shoulder_jnt", "ik_elbow_jnt", "ik_wrist_jnt", "ik_wristEnd_jnt"], "fkjnts": ["fk_shoulder_jnt", "fk_elbow_jnt", "fk_wrist_jnt", "fk_wristEnd_jnt"], "rigjnt": ["rig_shoulder_jnt", "rig_elbow_jnt", "rig_wrist_jnt", "rig_wristEnd_jnt"], "bindjnts": ["bind_shoulder_jnt", "bind_elbow_jnt", "bind_wrist_jnt", "bind_wristEnd_jnt"], "positions": [[2.1, 0.0, 5.0], [-0.1, 0.0, 0.0], [-0.1, 0.0, -5.0], [1.0, 0.0, -8.0]], "ikcontrols": ["ctrl_ik_arm, ikh_arm", "ctrl_pv_arm"]} \ No newline at end of file diff --git a/rig/Barry_rig_01.ma b/rig/old/Barry_rig_01.ma similarity index 100% rename from rig/Barry_rig_01.ma rename to rig/old/Barry_rig_01.ma diff --git a/rig/__init__.py b/rig/old/__init__.py similarity index 100% rename from rig/__init__.py rename to rig/old/__init__.py diff --git a/rig/barry_rig_arm.py b/rig/old/barry_rig_arm.py similarity index 100% rename from rig/barry_rig_arm.py rename to rig/old/barry_rig_arm.py diff --git a/rig/barry_rig_arm_refactor_v01.py b/rig/old/barry_rig_arm_refactor_v01.py similarity index 82% rename from rig/barry_rig_arm_refactor_v01.py rename to rig/old/barry_rig_arm_refactor_v01.py index 4b507cd..9ae84dd 100644 --- a/rig/barry_rig_arm_refactor_v01.py +++ b/rig/old/barry_rig_arm_refactor_v01.py @@ -5,7 +5,11 @@ ''' -joint_info = [['shoulder_jnt', [2.1, 0.0, 5.0]], ['elbow_jnt', [-0.1, 0.0, 0.0]], ['wrist_jnt', [-0.1, 0.0, -5.0]], ['wristEnd_jnt',[1.0, 0.0, -8.0]]] +ikjnt_list = [['ik_shoulder_jnt', [2.1, 0.0, 5.0]], ['ik_elbow_jnt', [-0.1, 0.0, 0.0]], ['ik_wrist_jnt', [-0.1, 0.0, -5.0]], ['ik_wristEnd_jnt',[1.0, 0.0, -8.0]]] +fkjnt_list = [['fk_shoulder_jnt', [2.1, 0.0, 5.0]], ['fk_elbow_jnt', [-0.1, 0.0, 0.0]], ['fk_wrist_jnt', [-0.1, 0.0, -5.0]], ['fk_wristEnd_jnt',[1.0, 0.0, -8.0]]] +rigjnt_list = [['rig_shoulder_jnt', [2.1, 0.0, 5.0]], ['rig_elbow_jnt', [-0.1, 0.0, 0.0]], ['rig_wrist_jnt', [-0.1, 0.0, -5.0]], ['rig_wristEnd_jnt',[1.0, 0.0, -8.0]]] + + #Creating Empty Dictionary joint_dict = {} diff --git a/rig/rig_arm.py b/rig/old/rig_arm.py similarity index 100% rename from rig/rig_arm.py rename to rig/old/rig_arm.py diff --git a/rig/rig_arm_functions.py b/rig/old/rig_arm_functions.py similarity index 100% rename from rig/rig_arm_functions.py rename to rig/old/rig_arm_functions.py diff --git a/rig/rig_arm_orient.py b/rig/old/rig_arm_orient.py similarity index 100% rename from rig/rig_arm_orient.py rename to rig/old/rig_arm_orient.py diff --git a/rig/rig_arm_rename.py b/rig/old/rig_arm_rename.py similarity index 100% rename from rig/rig_arm_rename.py rename to rig/old/rig_arm_rename.py diff --git a/rig/rig_arm_w3.py b/rig/old/rig_arm_w3.py similarity index 100% rename from rig/rig_arm_w3.py rename to rig/old/rig_arm_w3.py diff --git a/rig/rig_arm_class.py b/rig/rig_arm_class.py deleted file mode 100644 index aa3a0e6..0000000 --- a/rig/rig_arm_class.py +++ /dev/null @@ -1,51 +0,0 @@ -import maya.cmds as cmds -import json -import os -import system.utils as utils - -class Rig_Arm: - - def __init__( self ): - # Get our joint lists from a json file. - data_path = os.environ["RDOJO_DATA"] + 'rig/arm.json' - # Use our readJson function - data = utils.readJson( data_path ) - # Load the json in a dictionary - self.module_info = json.loads( data ) - - def rig_arm( self ): - # Create Ik joints, passing in keys - self.createJoint( self.module_info['ikjnts'] ) - cmds.select( d=True ) - # Create Fk joints - self.createJoint( self.module_info['fkjnts'] ) - cmds.select( d=True ) - # Create Rig joints - self.createJoint( self.moduel_info['rigjnts'] ) - cmds.select( d=True ) - - - def orient_joints( self ) - for i in sel: - cmds.joint(i, edit=True, zeroScaleOrient=True, orientJoint="xyz", secondaryAxisOrient="yup", children=True) - - def calculatePVPosition( jnts ): - "Calculates the Position of jnts" - from maya import cmds, OpenMaya - start = cmds.xform( jnts[0], q=True, ws=True, t=True ) - mid = cmds.xform( jnts[1], q=True, ws=True, t=True ) - end = cmds.xform( jnts[2], q=True, ws=True, t=True ) - startV = OpenMaya.MVector( start[0], start[1], start[2] ) - midV = OpenMaya.MVector( mid[0], mid[1], mid[2] ) - endV = OpenMaya.MVector( end[0], end[1], end[2] ) - startEnd = endV - startV - startMid = midV -startV - dotP = startMid * startEnd - proj = float( dotP ) / float( startEnd.length() ) - startEndN = startEnd.normal() - projV = startEndN * proj - arrowV = startMid - projV - arrowV*= 0.5 - finalV = arrowV + midV - return ( [finalV.x, finalV.y, finalV.z] ) - diff --git a/rig/rig_arm_classes.py b/rig/rig_arm_classes.py index 40ad6b7..5e43d97 100644 --- a/rig/rig_arm_classes.py +++ b/rig/rig_arm_classes.py @@ -3,50 +3,95 @@ import os import system.utils as utils +# Class Attr +classname = 'Rig_Arm' +lytfile = 'arm.json' +numjnts = 4 + + class Rig_Arm: - '''creates instance of arm, default is right arm''' + '''creates instance of arm''' def __init__( self ): # Get our joint lists from a json file. data_path = os.environ["RDOJO_DATA"] + 'rig/arm.json' + #data_path = "C:/Users/Bears/Documents/GitHub/Python_101_S1_2016/data/" + 'rig/arm.json' # Use our readJson function data = utils.readJson( data_path ) # Load the json in a dictionary self.module_info = json.loads( data ) + # stores data to be modified + self.rig_info = {} + + # Allows for seletion of new joints to get new positions from + if len( cmds.ls( sl=True, type='joint' )) == numjnts : + sel = cmds.ls( sl=True, type='joint' ) + positions = [] + for s in sel: + positions.append( cmds.xform( s, q=True, ws=True, t=True )) + self.rig_info['positions'] = positions + + else: + #goes to default + self.rig_info['positions'] = self.module_info['positions'] + + self.instance = '_L_' + # run rig_arm function + self.rig_arm() + + def rig_arm( self ): - # Create Ik joints, passing in keys - self.createJoint( self.module_info['ikjnts'] ) + # de select because of the check in class cmds.select( d=True ) + # Create Ik joints, passing in keys + self.rig_info['ikjnts'] = utils.createJoint( self.module_info['ikjnts'], self.rig_info['positions'], self.instance ) + #cmds.select( d=True ) + # Create Fk joints - self.createJoint( self.module_info['fkjnts'] ) - cmds.select( d=True ) + self.rig_info['fkjnts'] = utils.createJoint( self.module_info['fkjnts'], self.rig_info['positions'], self.instance ) + #cmds.select( d=True ) + # Create Rig joints - self.createJoint( self.moduel_info['rigjnts'] ) - cmds.select( d=True ) - - - def orient_joints( self ): - for i in sel: - cmds.joint(i, edit=True, zeroScaleOrient=True, orientJoint="xyz", secondaryAxisOrient="yup", children=True) - - def calculatePVPosition( self, jnts ): - #Calculates the Position of jnts - from maya import cmds, OpenMaya - start = cmds.xform( jnts[0], q=True, ws=True, t=True ) - mid = cmds.xform( jnts[1], q=True, ws=True, t=True ) - end = cmds.xform( jnts[2], q=True, ws=True, t=True ) - startV = OpenMaya.MVector( start[0], start[1], start[2] ) - midV = OpenMaya.MVector( mid[0], mid[1], mid[2] ) - endV = OpenMaya.MVector( end[0], end[1], end[2] ) - startEnd = endV - startV - startMid = midV -startV - dotP = startMid * startEnd - proj = float( dotP ) / float( startEnd.length() ) - startEndN = startEnd.normal() - projV = startEndN * proj - arrowV = startMid - projV - arrowV*= 0.5 - finalV = arrowV + midV - return ( [finalV.x, finalV.y, finalV.z] ) + self.rig_info['rigjnt'] = utils.createJoint( self.module_info['rigjnt'], self.rig_info['positions'], self.instance ) + #cmds.select( d=True ) + + + # Create Ik Rig + # Ik handle + # "ikcontrols" : ["ctrl_ik_arm, ikh_arm", "ctrl_pv_arm"] + ikhname = self.module_info["ikcontrols"][1].replace( '_s_', self.instance ) + self.rig_info['ikh'] = cmds.ikHandle( n=ikhname, sj=self.rig_info['ikjnts'][0], ee=self.rig_info['ikjnts'][2], sol='ikRPsolver', p=2, w=1) + + self.rig_info['ikcontrol'] = utils.createControl( [[self.module_info['positions'][2], self.module_info["ikcontrols"][0]]] ) + + pvpos = utils.calculatePVPosition( [self.rig_info['ikjnts'][0], self.rig_info['ikjnts'][1], self.rig_info['ikjnts'][2]] ) + + pvctrlinfo = [ [pvpos, self.module_info["ikcontrols"][2]] ] + self.rig_info['pvcontrol'] = utils.createControl(pvctrlinfo) + + # Parent ikh to ctrl + cmds.parent( self.rig_info["ikh"][0], self.rig_info["ikcontrols"][1] ) + + # PV constraint + cmds.poleVectorConstraint( self.rig_info["ikcontrols"][1], self.rig_info["ikjnts"][2], mo=True ) + + # Orient constrain arm ik_wrist to ctrl arm + cmds.orientConstraint( self.rig_info["ikcontrols"][0], self.rig_info['ikjnts'][2], mo=True) + + + # Create FK Rig + self.rig_info['fkcontrols'] = utils.createControl( [[self.module_info["positions"][2], self.module_info["fkcontrols"][2]], + [self.module_info["positions"][1], self.module_info["fkcontrols"][1]], + [self.module_info["positions"][0], self.module_info["fkcontrols"][0]]] ) + + #Parent fk controls` + cmds.parent( self.rig_info['fkcontrols'][2][0], self.rig_info['fkcontrols'][1][1] ) + cmds.parent( self.rig_info['fkcontrols'][1][0], self.rig_info['fkcontrols'][0][1] ) + + # Create Rig jnts by parenting FK and IK to Rig jnts + pass + + + diff --git a/startup.py b/startup.py index d8151e3..c8d13a8 100644 --- a/startup.py +++ b/startup.py @@ -5,13 +5,13 @@ print "Startup" # Change the current time unit to ntsc -cmds.currentUnit( time='ntsc' ) +#cmds.currentUnit( time='ntsc' ) # Change the current linear unit to inches -cmds.currentUnit( linear='cm' ) +#cmds.currentUnit( linear='cm' ) # set a system path to data files. WE can do this with the os modulke -os.environ["RDOJO_DATA"] = 'C:/Users/blam/Documents/GitHub/Python_101_S1_2016/data' +os.environ["RDOJO_DATA"] = 'C:/Users/blam/Documents/GitHub/Python_101_S1_2016/data/' #import ui from ui folder import ui.ui as ui diff --git a/system/utils.py b/system/utils.py index e69de29..c074bee 100644 --- a/system/utils.py +++ b/system/utils.py @@ -0,0 +1,65 @@ +import maya.cmds as cmds +import json +import tempfile + +def writeJson( fileName, data ): + ''' writes a pretty json file''' + + with open(fileName, 'w') as outfile: + json.dump( data, outfile, sort_keys = True, indent = 4, ensure_ascii=False ) + file.close(outfile) + +def readJson( fileName ): + '''reads json file''' + + with open(fileName, 'r') as infile: + data = ( open(infile.name, 'r' ).read()) + return data + +def createJoint( name, position, instance ): + ''' + for i in range(len( jntinfo )): + cmds.joint( n=jntinfo[i], p=self.module_info['positions'][i] ) + ''' + jnt_list = [cmds.joint( n = name[i].replace('_s_', instance), p=position[i]) for i in range(len(name)) ] + cmds.select( d=True ) + return( jnt_list ) + #orient joints + for i in range(len( jntinfo )): + cmds.joint(jntinfo[i], edit=True, zeroScaleOrient=True, orientJoint="xyz", secondaryAxisOrient="yup", children=True) + +def createControl( ctrlinfo ): + for info in ctrlinfo: + # Create ik control + # get ws position of wrist joint + pos = info[0] + # create an empty group + ctrlgrp = cmds.group( em=True, name=info[1] ) + # Create circle control object + ctrl = cmds.circle( n=info[1], nr=(0, 0, 1), c=(0, 0, 0) ) + # Parent the control to the group + cmds.parent( ctrl, ctrlgrp ) + # Move the group to the joint + cmds.xform( ctrlgrp, t=pos, ws=True ) + + + +def calculatePVPosition( jnts ): + #Calculates the pole vector of jnts + from maya import cmds, OpenMaya + start = cmds.xform( jnts[0], q=True, ws=True, t=True ) + mid = cmds.xform( jnts[1], q=True, ws=True, t=True ) + end = cmds.xform( jnts[2], q=True, ws=True, t=True ) + startV = OpenMaya.MVector( start[0], start[1], start[2] ) + midV = OpenMaya.MVector( mid[0], mid[1], mid[2] ) + endV = OpenMaya.MVector( end[0], end[1], end[2] ) + startEnd = endV - startV + startMid = midV -startV + dotP = startMid * startEnd + proj = float( dotP ) / float( startEnd.length() ) + startEndN = startEnd.normal() + projV = startEndN * proj + arrowV = startMid - projV + arrowV*= 0.5 + finalV = arrowV + midV + return ( [finalV.x, finalV.y, finalV.z] ) diff --git a/system/utils_json.py b/system/utils_json.py deleted file mode 100644 index 901643a..0000000 --- a/system/utils_json.py +++ /dev/null @@ -1,13 +0,0 @@ -import maya.cmds as cmds -import json -import tempfile - -def writeJson(fileName, data): - with open(fileName, 'w') as outfile: - json.dump(data, outfile) - file.close(outfile) - -def readJson(fileName): - with open(fileName, 'r') as infile: - data = (open(infile.name, 'r').read()) - return data \ No newline at end of file diff --git a/ui/ui.py b/ui/ui.py index 0ff43fc..9e59b46 100644 --- a/ui/ui.py +++ b/ui/ui.py @@ -1,19 +1,71 @@ import maya.cmds as cmds +''' +print ("This is UI") +''' +class RDojo_UI: -print ("UI") + def __init__( self, *args ): + print 'In RDojo_UI' + mi = cmds.window( 'MayaWindow', ma=True, q=True ) + + #Delete existing menu + for m in mi: + if m == 'RDojo_Menu': + cmds.deleteUI( 'RDojo_Menu', m=True ) -def rigarm(*args): - print "Rig_Arm" - import rig.rig_arm_classes as rig_arm - reload(rig_arm) - #create instance for class - rig_arm = rig_arm.Rig_Arm() - rig_arm.rig_arm + mymenu = cmds.menu( 'RDojo_Menu', label='RDMenu', to=True, p='MayaWindow' ) + cmds.menuItem( label='Rig Tool', parent=mymenu, command=self.ui ) + """Create a dictionary to store UI elements. + This will allow us to access these elements later. """ + self.UIElements = {} + # this dictionary will store all of the avilable riggind modules + self.rigmodlst = [] + rigcontents = os.listdir( os.environ["RDOJO_DATA"] + 'rig/' ) + for mod in rigcontents: + if '.pyc' not in mod or '.__init__' not in mod: + self.rigmodlst.append( mod ) + print self.rigmodlst -#Create menu on the Main Maya window -mymenu = cmds.menu('RDojo_Menu', label='RDMenu', to=True, p='MayaWindow') -cmds.menuItem(label='Rig_Arm', p=mymenu, command=create_jnts) + def ui( self, *args ): + """ Check to see if the UI exists """ + windowName = "Window" + if cmds.window( windowName, exists=True ): + cmds.deleteUI( windowName ) + """ Define width and height for buttons and windows """ + windowWidth = 480 + windowHeight = 80 + buttonWidth = 100 + buttonHeight = 30 + + self.UIElements["window"] = cmds.window ( windowName, width=windowWidth, height=windowHeight, title="RDojo_UI", sizeable=True ) + + self.UIElements["mainColLayout"] = cmds.columnLayout( adjustableColumn=True ) + self.UIElements["guiFramelayout1"] = cmds.frameLayout( label='Layout', borderStyle='in', p=self.UIElements["mainColLayout"]) + self.UIElements["guiFlowLayout1"] = cmds.flowLayout( v=False, width=windowWidth, height=windowHeight/2, wr=True, bgc=[0.2, 0.2, 0.2], p=self.UIElements["guiFramelayout1"]) + + # Menu listing all the layout files + cmds.separator( w=10, hr=True, st='none', p=self.UIElements["guiFlowLayout1"]) + self.UIElements["rig_button"] = cmds.button(label='rig arm', width=buttonWidth, height=buttonHeight, bgc=[0.2, 0.4, 0.2], p=self.UIElements["guiFlowLayout1"], c=self.rigarm) + + """ Show the window """ + cmds.showWindow( windowName ) + def rigarm( self, *args ): + '''rig arm function''' + #print "Rig_Arm" + import rig.rig_arm_classes as rig_arm + reload( rig_arm ) + #create instance for class + rig_arm = rig_arm.Rig_Arm() + rig_arm.rig_arm() + + +''' +#Create menu on the Main Maya window +mymenu = cmds.menu( 'RDojo_Menu', label='RDMenu', to=True, p='MayaWindow' ) +cmds.menuItem( label='Rig_Arm', p=mymenu, command=create_jnts ) +''' +RDojo_UI() diff --git a/ui/ui_01.py b/ui/ui_01.py new file mode 100644 index 0000000..6459584 --- /dev/null +++ b/ui/ui_01.py @@ -0,0 +1,160 @@ +from PySide import QtGui as qg +from PySide import QtCore as qc + +import maya.cmds as mc +import pymel.core as pm + +import maya.OpenMayaUI as mui +import shiboken + +import rig.rig_arm_classes as rig_classes +reload(rig_classes) + +class RDojo_UI(qg.QDialog): + def __init__(self): + qg.QDialog.__init__(self) + self.setWindowFlags(qc.Qt.WindowStaysOnTopHint) + self.setObjectName( 'RDojo_UI v1.00' ) + self.setWindowTitle( 'RDojo_UI v1.00' ) + self.setFixedWidth(314) + + self.setLayout(qg.QVBoxLayout()) + self.layout().setContentsMargins(0,0,0,0) + self.layout().setSpacing(0) + + scroll_area = qg. QScrollArea() + scroll_area.setWidgetResizable( True ) + scroll_area.setFocusPolicy( qc.Qt.NoFocus ) + scroll_area.setHorizontalScrollBarPolicy( qc.Qt.ScrollBarAlwaysOff ) + self.layout().addWidget( scroll_area ) + + main_widget = qg.QWidget() + main_layout = qg.QVBoxLayout() + main_layout.setContentsMargins(5,5,5,5) + main_layout.setAlignment(qc.Qt.AlignTop) + main_widget.setLayout(main_layout) + scroll_area.setWidget(main_widget) + + self.interp_layout = qg.QVBoxLayout() + self.interp_layout.setContentsMargins(0,0,0,0) + self.interp_layout.setSpacing(0) + self.interp_layout.setAlignment(qc.Qt.AlignTop) + main_layout.addLayout(self.interp_layout) + + button_layout = qg.QHBoxLayout() + button_layout.setContentsMargins(0,0,0,0) + button_layout.setAlignment(qc.Qt.AlignRight) + main_layout.addLayout(button_layout) + + # Creating Instance of RDojoWidget() + new_widget = RDojoWidget() + + self.interp_layout.addWidget(new_widget) + + self._interp_widget = [] + self._interp_widget.append(new_widget) + + self._dock_widget = self._dock_name = None + + #------------------------------------------------------------------------------------------# + + def connectDockWidget( self, dock_name, dock_widget ): + self._dock_widget = dock_widget + self._dock_name = dock_name + + def close( self ): + if self._dock_widget: + mc.deleteUI( self._dock_name ) + else: + qg.QDialog.close( self ) + self._dock_widget = self._dock_name = None + +#--------------------------------------------------------------------------------------------------# + + +class RDojoWidget(qg.QFrame): + def __init__(self, *args, **kwargs): + qg.QFrame.__init__(self, *args, **kwargs) + + self.setLayout(qg.QVBoxLayout()) + self.layout().setContentsMargins(5,5,5,5) + self.layout().setSpacing(5) + self.setFrameStyle(qg.QFrame.Panel | qg.QFrame.Raised) + self.setFixedHeight(150) + + + self.main_widget = qg.QWidget() + self.main_widget.setObjectName('mainWidget') + self.main_widget.setLayout(qg.QVBoxLayout()) + self.main_widget.layout().setContentsMargins(2,2,2,2) + self.main_widget.layout().setSpacing(5) + self.layout().addWidget(self.main_widget) + + + + select_layout = qg.QHBoxLayout() + button_layout = qg.QHBoxLayout() + check_layout = qg.QHBoxLayout() + + self.main_widget.layout().addLayout( select_layout ) + self.main_widget.layout().addLayout( button_layout ) + self.main_widget.layout().addLayout( check_layout ) + + + #adds widget to layout + + + rigarm_button = qg.QPushButton( 'Rig Arm' ) + select_layout.addWidget( rigarm_button ) + + #set the height and width of the button + #select_layout.addSpacerItem(qg.QSpacerItem(5, 5, qg.QSizePolicy.Expanding)) + #select_layout.addSpacerItem(qg.QSpacerItem(5, 5, qg.QSizePolicy.Expanding)) + + + # connect modifers + rigarm_button.clicked.connect( rig_classes.Rig_Arm ) + + +#--------------------------------------------------------------------------------------------------# + +dialog = None + +def create(docked=True): + global dialog + + if dialog is None: + dialog = RDojo_UI() + + # docking window if statment + if docked is True: + ptr = mui.MQtUtil.mainWindow() + main_window = shiboken.wrapInstance(long(ptr), qg.QWidget) + + dialog.setParent( main_window ) + size = dialog.size() + #return proper full name + name = mui.MQtUtil.fullName(long(shiboken.getCppPointer(dialog)[0])) + dock = mc.dockControl( + allowedArea =['right', 'left'], + area = 'left', + floating = True, + content = name, + width = size.width(), + height = size.height(), + label = 'RDojo_UI v1.00' ) + + # Convert to Dock widget + widget = mui.MQtUtil.findControl(dock) + dock_widget = shiboken.wrapInstance(long(widget), qc.QObject) + dialog.connectDockWidget( dock, dock_widget ) + + else: + dialog.show() + + +def delete(): + global dialog + if dialog: + dialog.close() + dialog = None