aboutsummaryrefslogtreecommitdiff
path: root/Documentation/build/_modules/Interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/build/_modules/Interfaces')
-rw-r--r--Documentation/build/_modules/Interfaces/ART_AddModuleToCanvas.html423
-rw-r--r--Documentation/build/_modules/Interfaces/ART_AddModuleUI.html448
-rw-r--r--Documentation/build/_modules/Interfaces/ART_AddOrRemoveInfluences.html457
-rw-r--r--Documentation/build/_modules/Interfaces/ART_AimModeUI.html326
-rw-r--r--Documentation/build/_modules/Interfaces/ART_AnimationUI.html2251
-rw-r--r--Documentation/build/_modules/Interfaces/ART_BakeOffsetsUI.html369
-rw-r--r--Documentation/build/_modules/Interfaces/ART_BoneCounter.html440
-rw-r--r--Documentation/build/_modules/Interfaces/ART_BuildProgressUI.html931
-rw-r--r--Documentation/build/_modules/Interfaces/ART_ChangeModuleNameUI.html461
-rw-r--r--Documentation/build/_modules/Interfaces/ART_ChangeModuleParentUI.html340
-rw-r--r--Documentation/build/_modules/Interfaces/ART_DebugRigs.html298
-rw-r--r--Documentation/build/_modules/Interfaces/ART_EditRigUI.html666
-rw-r--r--Documentation/build/_modules/Interfaces/ART_ExportMeshes.html1829
-rw-r--r--Documentation/build/_modules/Interfaces/ART_ExportMotionUI.html1302
14 files changed, 10541 insertions, 0 deletions
diff --git a/Documentation/build/_modules/Interfaces/ART_AddModuleToCanvas.html b/Documentation/build/_modules/Interfaces/ART_AddModuleToCanvas.html
new file mode 100644
index 0000000..93c615e
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_AddModuleToCanvas.html
@@ -0,0 +1,423 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_AddModuleToCanvas &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_AddModuleToCanvas</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># import statements</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_AddModuleToCanvas"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas">[docs]</a><span class="k">class</span> <span class="nc">ART_AddModuleToCanvas</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This tool presents a UI that lists all modules not currently on the animation picker canvas, and allows the user</span>
+<span class="sd"> to choose modules from the list to add to the animation picker canvas. This is an animator-facing tool.</span>
+
+<span class="sd"> .. image:: /images/addModuleToCanvas.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_AddModuleToCanvas.__init__"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">animPickerUI</span><span class="p">,</span> <span class="n">modulesToAdd</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> initialize the class, get the QSettings for the tool, and call on buildUI.</span>
+
+<span class="sd"> :param animPickerUI: the instance of the animation picker class that launched this class.</span>
+<span class="sd"> :param modulesToAdd: A list of the modules to add, which is a list of modules currently not on the animPickerUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_AddModuleToCanvas</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;scriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span> <span class="o">=</span> <span class="n">animPickerUI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modules</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modulesToAdd</span> <span class="o">=</span> <span class="n">modulesToAdd</span>
+
+ <span class="c1"># assign close event</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeEvent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">closeWin</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.buildUI"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.buildUI">[docs]</a> <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the interface for the tool, showing a list of modules not currently displayed on the picker.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/animPicker.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">400</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Add Module To Canvas&quot;</span><span class="p">)</span>
+
+ <span class="c1"># label, listWidget, button</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Available Modules:&quot;</span><span class="p">)</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;boldFont&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">230</span><span class="p">,</span> <span class="mi">300</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">230</span><span class="p">,</span> <span class="mi">300</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="p">)</span>
+
+ <span class="c1"># add modules to listWidget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addModulesToList</span><span class="p">()</span>
+
+ <span class="c1"># create add button</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Add Selected To Canvas&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">button</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addSelectedToCanvas</span><span class="p">)</span>
+
+ <span class="c1"># show ui</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.addModulesToList"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.addModulesToList">[docs]</a> <span class="k">def</span> <span class="nf">addModulesToList</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Take the modules passed into the class, and if the modules do not already exist on the canvas, add them to</span>
+<span class="sd"> the list widget.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">existing</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getExistingModules</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">modulesToAdd</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">module</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">existing</span><span class="p">:</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add to listWIdget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">modName</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">,</span> <span class="p">[</span><span class="n">module</span><span class="p">,</span> <span class="n">characterNode</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.addSelectedToCanvas"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.addSelectedToCanvas">[docs]</a> <span class="k">def</span> <span class="nf">addSelectedToCanvas</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Takes the selected module in the list widget and adds it to the picker canvas. The picker UI is contained in</span>
+<span class="sd"> the self.pickerUI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">selected</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get inst</span>
+ <span class="n">modType</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">mod</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">&quot;RigModules.&quot;</span> <span class="o">+</span> <span class="n">modType</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">[</span><span class="n">modType</span><span class="p">])</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+
+ <span class="c1"># get the class name from that module file (returns RigModules.ART_Root.ART_Root for example)</span>
+ <span class="n">moduleClass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">mod</span><span class="o">.</span><span class="n">className</span><span class="p">)</span>
+
+ <span class="c1"># find the instance of that module</span>
+ <span class="n">moduleInst</span> <span class="o">=</span> <span class="n">moduleClass</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modules</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">moduleInst</span><span class="p">)</span>
+
+ <span class="n">scene</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentCanvasTab</span><span class="p">()</span>
+
+ <span class="c1"># find out if charNode has a namespace</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">):</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+ <span class="c1"># pass in the network node and the namespace</span>
+ <span class="n">picker</span> <span class="o">=</span> <span class="n">moduleInst</span><span class="o">.</span><span class="n">pickerUI</span><span class="p">(</span><span class="n">scene</span><span class="o">.</span><span class="n">sceneRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="p">,</span> <span class="n">module</span><span class="p">,</span> <span class="n">namespace</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">selectionScriptJobs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">picker</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #mirror the module&#39;s pickerBorderItem if needed</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="k">if</span> <span class="n">picker</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span>
+ <span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">setTransform</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QTransform</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">))</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">picker</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">children</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorChildren</span><span class="p">(</span><span class="n">children</span><span class="p">)</span>
+
+ <span class="n">row</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">row</span><span class="p">(</span><span class="n">selected</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">takeItem</span><span class="p">(</span><span class="n">row</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.mirrorChildren"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.mirrorChildren">[docs]</a> <span class="k">def</span> <span class="nf">mirrorChildren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">children</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Take the passed in children and mirror the item so the text is not backwards. When a module is added to the</span>
+<span class="sd"> canvas, if it was a right side module, it will be mirrored. This then unmirrors the text.</span>
+
+<span class="sd"> :param children: List of QGraphicsSimpleTextItems that need to be mirrored.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># for mirroring text on any child items of a pickerBorderItem</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsSimpleTextItem</span><span class="p">:</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">setTransform</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QTransform</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="mf">0.0</span><span class="p">))</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">children</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorChildren</span><span class="p">(</span><span class="n">children</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AddModuleToCanvas.getCurrentCanvasTab"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.getCurrentCanvasTab">[docs]</a> <span class="k">def</span> <span class="nf">getCurrentCanvasTab</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Get the current tab of the current character of the animation picker.</span>
+<span class="sd"> :return: returns the QGraphicsScene that items can then be added to.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="k">return</span> <span class="n">scene</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.getExistingModules"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.getExistingModules">[docs]</a> <span class="k">def</span> <span class="nf">getExistingModules</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Find all existing modules on the canvas and return those modules as a list.</span>
+<span class="sd"> :return: List of modules whose picker exists on the canvas.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+ <span class="n">characterNodeModules</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.rigModules&quot;</span><span class="p">)</span>
+
+ <span class="n">namespace</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">):</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span>
+
+ <span class="n">returnData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">selectedTab</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the gfxScene</span>
+ <span class="n">itemsInScene</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemsInScene</span><span class="p">:</span>
+ <span class="c1"># if we find our top level picker item (the borderItem), get it&#39;s data</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerBorderItem</span> <span class="ow">or</span> <span class="n">item</span><span class="o">.</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">namespace</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">module</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">returnData</span><span class="p">:</span>
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="n">module</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">returnData</span><span class="p">:</span>
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">namespace</span> <span class="o">+</span> <span class="n">module</span><span class="p">)</span>
+
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">selectedTab</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnData</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModuleToCanvas.closeWin"><a class="viewcode-back" href="../../addModuleToPicker.html#Interfaces.ART_AddModuleToCanvas.ART_AddModuleToCanvas.closeWin">[docs]</a> <span class="k">def</span> <span class="nf">closeWin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> deletes the UI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_AddModuleUI.html b/Documentation/build/_modules/Interfaces/ART_AddModuleUI.html
new file mode 100644
index 0000000..e58ae55
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_AddModuleUI.html
@@ -0,0 +1,448 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_AddModuleUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_AddModuleUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="n">windowTitle</span> <span class="o">=</span> <span class="s2">&quot;Add Module&quot;</span>
+<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">&quot;pyArtAddModuleUi&quot;</span>
+
+
+<div class="viewcode-block" id="ART_AddModule_UI"><a class="viewcode-back" href="../../addModuleUI.html#Interfaces.ART_AddModuleUI.ART_AddModule_UI">[docs]</a><span class="k">class</span> <span class="nc">ART_AddModule_UI</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class builds a UI used by the rig creator, and is called when a user pushed a module button to add to their</span>
+<span class="sd"> rig. This UI presents options like prefix, suffix, and ability to specify the parent module bone.</span>
+
+<span class="sd"> .. image:: /images/addModuleUI.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_AddModule_UI.__init__"><a class="viewcode-back" href="../../addModuleUI.html#Interfaces.ART_AddModuleUI.ART_AddModule_UI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="n">className</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Initialize the class, taking in the base name of the module to be added, the name of the class of the module</span>
+<span class="sd"> to be added, and the instance of the rig creator UI. Then build the interface for the tool.</span>
+
+<span class="sd"> :param baseName: The base name of the module to be added, defined in the module class file at the top.</span>
+<span class="sd"> :param className: The class name of the module to be added, so we can then initialize that module.</span>
+<span class="sd"> :param rigUiInst: The instance of the rig creator UI, from which this function was called.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_AddModule_UI</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create class variables</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">baseName</span> <span class="o">=</span> <span class="n">baseName</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">className</span> <span class="o">=</span> <span class="n">className</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span> <span class="o">=</span> <span class="n">rigUiInst</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="n">windowObject</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">windowTitle</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">220</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">520</span><span class="p">))</span>
+
+ <span class="c1"># create the background</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">column2Layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">column2Layout</span><span class="p">)</span>
+
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">label</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Choose Parent Bone&quot;</span><span class="p">)</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignCenter</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column2Layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column2Layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="s2">&quot;Search...&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">searchList</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column2Layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="p">)</span>
+
+ <span class="c1"># add items to listWidget</span>
+ <span class="n">parents</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">getViableParents</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">parents</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">==</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">parents</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">setCurrentRow</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># create the prefix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Prefix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">)</span>
+
+ <span class="c1"># create the suffix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Suffix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Module Name: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">baseName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignHCenter</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="p">)</span>
+
+ <span class="c1"># set preview font</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="n">spacerItem1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem1</span><span class="p">)</span>
+
+ <span class="c1"># special cases (arms and legs)</span>
+ <span class="n">specialCaseModules</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;ART_Leg_Standard&quot;</span><span class="p">,</span> <span class="s2">&quot;ART_Arm_Standard&quot;</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">className</span> <span class="ow">in</span> <span class="n">specialCaseModules</span><span class="p">:</span>
+ <span class="c1"># spacer</span>
+ <span class="n">groupBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">groupBox</span><span class="p">)</span>
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">groupBox</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">radioButtonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">radioButtonLayout</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightRadioBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRadioButton</span><span class="p">(</span><span class="s2">&quot;Right Side&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftRadioBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRadioButton</span><span class="p">(</span><span class="s2">&quot;Left Side&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">radioButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rightRadioBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">radioButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">leftRadioBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftRadioBtn</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># spacer</span>
+ <span class="n">spacerItem2</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem2</span><span class="p">)</span>
+
+ <span class="c1"># create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;CREATE&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">column1layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot on create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createModule</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">setFocus</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModule_UI.updatePreview"><a class="viewcode-back" href="../../addModuleUI.html#Interfaces.ART_AddModuleUI.ART_AddModule_UI.updatePreview">[docs]</a> <span class="k">def</span> <span class="nf">updatePreview</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Read the prefix and suffix QLineEdits, append an underscore, and update the previewName QLabel with the</span>
+<span class="sd"> prefix, basename, and suffix to show what the final module name will be.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+
+ <span class="n">string</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">baseName</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModule_UI.createModule"><a class="viewcode-back" href="../../addModuleUI.html#Interfaces.ART_AddModuleUI.ART_AddModule_UI.createModule">[docs]</a> <span class="k">def</span> <span class="nf">createModule</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiate our module class to create with the user specified name, creating the network node, building</span>
+<span class="sd"> the Skeleton Settings UI for the module, adding the joint mover for that module (importing the joint mover</span>
+<span class="sd"> file), and adding the joint mover to the outliner.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">mod</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">&quot;RigModules.&quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">className</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">className</span><span class="p">])</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+
+ <span class="c1"># get the class name from that module file (returns RigModules.ART_Root.ART_Root for example)</span>
+ <span class="n">moduleClass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">mod</span><span class="o">.</span><span class="n">className</span><span class="p">)</span>
+ <span class="n">jmPath</span> <span class="o">=</span> <span class="n">mod</span><span class="o">.</span><span class="n">jointMover</span>
+
+ <span class="c1"># find the instance of that module and call on the skeletonSettings_UI function</span>
+ <span class="n">userSpecName</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="c1"># check to see if a module already has that name</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">validName</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="n">userSpecName</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">confirmDialog</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">&quot;Name Exists&quot;</span><span class="p">,</span>
+ <span class="n">message</span><span class="o">=</span><span class="s2">&quot;A module with that name already exists. Please enter a unique name.&quot;</span><span class="p">,</span>
+ <span class="n">icon</span><span class="o">=</span><span class="s2">&quot;critical&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="c1"># call functions to create network node, skeleton settings UI</span>
+ <span class="n">moduleInst</span> <span class="o">=</span> <span class="n">moduleClass</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="p">,</span> <span class="n">userSpecName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">moduleInst</span><span class="p">)</span> <span class="c1"># add this instance to the ui&#39;s list of module instances</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">moduleInst</span><span class="o">.</span><span class="n">buildNetwork</span><span class="p">()</span>
+
+ <span class="c1"># figure out side</span>
+ <span class="n">specialCaseModules</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;ART_Leg_Standard&quot;</span><span class="p">,</span> <span class="s2">&quot;ART_Arm_Standard&quot;</span><span class="p">]</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">className</span> <span class="ow">in</span> <span class="n">specialCaseModules</span><span class="p">:</span>
+ <span class="n">side</span> <span class="o">=</span> <span class="s2">&quot;Left&quot;</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rightRadioBtn</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="n">side</span> <span class="o">=</span> <span class="s2">&quot;Right&quot;</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.side&quot;</span><span class="p">,</span> <span class="s2">&quot;Right&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># build new jmPath name</span>
+ <span class="n">jmPath</span> <span class="o">=</span> <span class="n">jmPath</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;.ma&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">side</span> <span class="o">+</span> <span class="s2">&quot;.ma&quot;</span>
+
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">jointMover_Build</span><span class="p">(</span><span class="n">jmPath</span><span class="p">)</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">addJointMoverToOutliner</span><span class="p">()</span>
+
+ <span class="c1"># update the created joints attribute on the network node with the new names</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="n">createdBones</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+
+ <span class="n">attrString</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">createdBones</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">attrString</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">bone</span> <span class="o">+</span> <span class="n">suffix</span> <span class="o">+</span> <span class="s2">&quot;::&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">attrString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># update the self.currentParent label and the parentModuleBone attr on the network node</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># parent the joint mover to the offset mover of the parent</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">parent</span> <span class="o">==</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># find the parent mover name to parent to</span>
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">userSpecName</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">userSpecName</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the connection geo between the two</span>
+ <span class="n">globalMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findGlobalMoverFromName</span><span class="p">(</span><span class="n">userSpecName</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">globalMover</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setToolTo</span><span class="p">(</span><span class="s2">&quot;moveSuperContext&quot;</span><span class="p">)</span>
+
+ <span class="n">utils</span><span class="o">.</span><span class="n">fitViewAndShade</span><span class="p">()</span>
+
+ <span class="c1"># delete the UI</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">windowObject</span><span class="p">)</span>
+
+ <span class="c1"># obey the current UI visibility toggles</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">setMoverVisibility</span><span class="p">()</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">updateBoneCount</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">populateNetworkList</span><span class="p">()</span>
+
+ <span class="c1"># turn on aim mode</span>
+ <span class="n">moduleInst</span><span class="o">.</span><span class="n">aimMode</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddModule_UI.searchList"><a class="viewcode-back" href="../../addModuleUI.html#Interfaces.ART_AddModuleUI.ART_AddModule_UI.searchList">[docs]</a> <span class="k">def</span> <span class="nf">searchList</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Get the search text from the QLineEdit and search the items in the QListWidget for any matches. Anything that</span>
+<span class="sd"> does not match will be hidden in the QListWidget.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">searchText</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">lwItem</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hierarchyTree</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">lwItem</span><span class="o">.</span><span class="n">text</span><span class="p">()</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">searchText</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">lwItem</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">lwItem</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_AddOrRemoveInfluences.html b/Documentation/build/_modules/Interfaces/ART_AddOrRemoveInfluences.html
new file mode 100644
index 0000000..6d37e65
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_AddOrRemoveInfluences.html
@@ -0,0 +1,457 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_AddOrRemoveInfluences &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_AddOrRemoveInfluences</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">maya.mel</span> <span class="k">as</span> <span class="nn">mel</span>
+
+<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences">[docs]</a><span class="k">class</span> <span class="nc">ART_AddOrRemoveInfluences</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class is used to list influences in or out of the current skinCluster, and then remove or add said</span>
+<span class="sd"> influences given current selection.</span>
+
+<span class="sd"> It is called from this button, found after finalizing your setup:</span>
+<span class="sd"> .. image:: /images/addRemoveInfsButton.png</span>
+
+<span class="sd"> This is what the full interface looks like:</span>
+<span class="sd"> .. image:: /images/addRemoveInfs.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.__init__"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, taking in the instance of the rig creator skin tools interface. Get settings values</span>
+<span class="sd"> from QSettings. Build the interface.</span>
+
+<span class="sd"> :param mainUI: Instance of the skin tools interface.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildInterface</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.buildInterface"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.buildInterface">[docs]</a> <span class="k">def</span> <span class="nf">buildInterface</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the interface for the tool, finding all joints that compose the asset, comparing them to joints in the</span>
+<span class="sd"> skinCluster, then separating the initial list into joints in the cluster, and joints not in the cluster.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_addRemoveInfsWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_addRemoveInfsWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_addRemoveInfsWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Add/Remove Influences&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the ui</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">450</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">450</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">450</span><span class="p">))</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the main layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_frame</span><span class="p">)</span>
+
+ <span class="c1"># two layouts needed for the widget layout. left side = vertical layout for filters,</span>
+ <span class="c1"># search, and list. right layout = vertical layout for buttons</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_leftSideLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_leftSideLayout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="p">)</span>
+
+ <span class="c1"># left side: filters, search, list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_leftSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Show Influences In Skin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Show Influences Not In Skin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span><span class="o">.</span><span class="n">currentIndexChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_ShowInfsFilter</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_search</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_leftSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_search</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_search</span><span class="o">.</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="s2">&quot;Search...&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_search</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_Search</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_leftSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+
+ <span class="c1"># right side: add button, remove button, prune weights, remove unused button</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Refresh&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_RefreshSelection</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_refreshSelBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">300</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Add&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_addInf</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_addInfBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Remove&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_addInf</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeInfBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Remove Unused&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_addInf</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_removeUnusedInfBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Prune Weights&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_rightSideLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">110</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_prune</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_pruneBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># populate infList</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_RefreshSelection</span><span class="p">()</span>
+
+ <span class="c1"># show window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.addOrRemoveInfs_RefreshSelection"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.addOrRemoveInfs_RefreshSelection">[docs]</a> <span class="k">def</span> <span class="nf">addOrRemoveInfs_RefreshSelection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Regenerate the lists comparing all joints of the rig to joints in the skin cluster and joints not in the</span>
+<span class="sd"> skinCluster. Clear the listWidgets and refresh with new data.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+
+ <span class="c1"># get selection, find skin cluster, find influences in skinCluster, and populate listWidget</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">skinCluster</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">findRelatedSkinCluster</span><span class="p">(</span><span class="n">selection</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">skinCluster</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">skinInfs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inf</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">inf</span> <span class="ow">in</span> <span class="n">skinInfs</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">inf</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.addOrRemoveInfs_ShowInfsFilter"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.addOrRemoveInfs_ShowInfsFilter">[docs]</a> <span class="k">def</span> <span class="nf">addOrRemoveInfs_ShowInfsFilter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Change what is displayed in the QListWidget based on the QComboBox setting of which joints to show: those in</span>
+<span class="sd"> the skinCluster, or those not in the skinCluster.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="n">currentIndex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_filters</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">skinCluster</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">findRelatedSkinCluster</span><span class="p">(</span><span class="n">selection</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">skinCluster</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">skinInfs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inf</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="c1"># if filter set to show infs in cluster:</span>
+ <span class="k">if</span> <span class="n">currentIndex</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">skinInfs</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># if filter set to show non-skinned infs</span>
+ <span class="k">if</span> <span class="n">currentIndex</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="c1"># get full path</span>
+ <span class="n">dagPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">skinInfs</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">long</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">rootJoint</span> <span class="o">=</span> <span class="n">dagPath</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">currentSelection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># get all joints</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">rootJoint</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">skeleton</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span>
+
+ <span class="c1"># compare all joints to infs list</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">skeleton</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">skinInfs</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">each</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.addOrRemoveInfs_Search"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.addOrRemoveInfs_Search">[docs]</a> <span class="k">def</span> <span class="nf">addOrRemoveInfs_Search</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Hides all items in the QListWidget, then compares the QLineEdit search text with each item in the QListWidget,</span>
+<span class="sd"> and if the search text is found in the text of an item, show that QListWidgetItem.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">searchKey</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_search</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the joint list</span>
+ <span class="n">allItems</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">itemName</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">allItems</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">item</span><span class="p">,</span> <span class="n">itemName</span><span class="p">])</span>
+
+ <span class="c1"># hide all items in list</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">allItems</span><span class="p">:</span>
+ <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># find items in list with search key and show item</span>
+ <span class="k">if</span> <span class="n">searchKey</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;*&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">matchedItems</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">searchKey</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchFlag</span><span class="o">.</span><span class="n">MatchWildcard</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">matchedItems</span><span class="p">:</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">matchedItems</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">searchKey</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchFlag</span><span class="o">.</span><span class="n">MatchContains</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">matchedItems</span><span class="p">:</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.addOrRemoveInfs_addInf"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.addOrRemoveInfs_addInf">[docs]</a> <span class="k">def</span> <span class="nf">addOrRemoveInfs_addInf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">add</span><span class="p">,</span> <span class="n">removeUnused</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Either add, or remove, selected influences from the QListWidget to/from the skinCluster. (the main function)</span>
+
+<span class="sd"> :param add: Whether or not to add or remove.</span>
+<span class="sd"> :param removeUnused: If this flag is set, remove any unweighted influences in the skinCluster.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get current selection in scene</span>
+ <span class="n">currentSelection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get selected items in infList</span>
+ <span class="n">selectedItems</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addRemoveInfsWin_infList</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+
+ <span class="c1"># find the skinCluster</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">skinCluster</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">findRelatedSkinCluster</span><span class="p">(</span><span class="n">selection</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="c1"># removed unused influences</span>
+ <span class="k">if</span> <span class="n">removeUnused</span><span class="p">:</span>
+ <span class="n">weightedInfs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">weightedInfluence</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">allInfs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">inf</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">inf</span> <span class="ow">in</span> <span class="n">allInfs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">inf</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">weightedInfs</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ri</span><span class="o">=</span><span class="n">inf</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_RefreshSelection</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_ShowInfsFilter</span><span class="p">()</span>
+ <span class="k">return</span>
+
+ <span class="c1"># add selectedItems to the skinCluster</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">selectedItems</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">add</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ai</span><span class="o">=</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span> <span class="n">wt</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">add</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">skinCluster</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ri</span><span class="o">=</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="c1"># refresh list</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_RefreshSelection</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_ShowInfsFilter</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AddOrRemoveInfluences.addOrRemoveInfs_prune"><a class="viewcode-back" href="../../addRemoveInfs.html#Interfaces.ART_AddOrRemoveInfluences.ART_AddOrRemoveInfluences.addOrRemoveInfs_prune">[docs]</a> <span class="k">def</span> <span class="nf">addOrRemoveInfs_prune</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Calls on Maya&#39;s built in prune skin weights tool.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">mel</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="s2">&quot;PruneSmallWeightsOptions;&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get current selection in scene</span>
+ <span class="n">currentSelection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># refresh lists</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">currentSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_RefreshSelection</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addOrRemoveInfs_ShowInfsFilter</span><span class="p">()</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_AimModeUI.html b/Documentation/build/_modules/Interfaces/ART_AimModeUI.html
new file mode 100644
index 0000000..3e4e42d
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_AimModeUI.html
@@ -0,0 +1,326 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_AimModeUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_AimModeUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_AimMode"><a class="viewcode-back" href="../../aimModeUI.html#Interfaces.ART_AimModeUI.ART_AimMode">[docs]</a><span class="k">class</span> <span class="nc">ART_AimMode</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class creates a tool that allows a rigger to toggle aim mode for a given selection of modules. Aim mode</span>
+<span class="sd"> ensures that the parent joints in a joint mover are always aiming at their children.</span>
+
+<span class="sd"> This tool can be called from the toolbar on the Rig Creator UI from the following button:</span>
+<span class="sd"> .. image:: /images/aimModeButton.png</span>
+
+<span class="sd"> The full interface looks like this:</span>
+<span class="sd"> .. image:: /images/aimMode.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_AimMode.__init__"><a class="viewcode-back" href="../../aimModeUI.html#Interfaces.ART_AimModeUI.ART_AimMode.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings for the tool, and building the Aim Mode interface.</span>
+
+<span class="sd"> :param mainUI: The instance of the Rig Creator UI this tool was called from.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildAimModeUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AimMode.buildAimModeUI"><a class="viewcode-back" href="../../aimModeUI.html#Interfaces.ART_AimModeUI.ART_AimMode.buildAimModeUI">[docs]</a> <span class="k">def</span> <span class="nf">buildAimModeUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the Aim Mode interface, finding all modules that have the ability to aim, and listing those modules</span>
+<span class="sd"> as well as their current aim status.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_AimModeWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_AimModeWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_AimModeWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Aim Mode&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">))</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_frame</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_widgetLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+
+ <span class="c1"># add the QListWidget Frame</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">275</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">275</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># create the list widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleListFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">MultiSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+
+ <span class="c1"># add the layout for the buttons</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_buttonLayoutAll</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_buttonLayoutAll</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_buttonLayoutAll</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
+
+ <span class="c1"># add the selection buttons</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_buttonLayoutAll</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Select All&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">selectAll</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectAllButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Clear Selection&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectNoneButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># spacer</span>
+ <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span>
+
+ <span class="c1"># add the buttons for reset settings and reset transforms</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;On&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Turn on Aim Mode for selected modules.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeUI_Toggle</span><span class="p">,</span> <span class="kc">True</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOnAim</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Off&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Turn off Aim Mode for selected modules.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aimModeUI_Toggle</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_turnOffAim</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># populate the list widget</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="c1"># get module name</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+
+ <span class="c1"># figure out if the module supports aimMode</span>
+ <span class="n">canAim</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.canAim&quot;</span><span class="p">):</span>
+ <span class="n">canAim</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.canAim&quot;</span><span class="p">)</span>
+
+ <span class="c1"># see if it is currently in aimMode</span>
+ <span class="n">aimMode</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.aimMode&quot;</span><span class="p">)</span>
+
+ <span class="c1"># if it does, add it to the listwidget</span>
+ <span class="k">if</span> <span class="n">canAim</span><span class="p">:</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># create the listWidgetItem</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="n">pixmapOff</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+ <span class="n">pixmapOff</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="n">iconOff</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pixmapOff</span><span class="p">)</span>
+
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">iconOff</span><span class="p">,</span> <span class="n">moduleName</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">headerFont</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setTextAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignCenter</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">,</span> <span class="p">[</span><span class="n">icon</span><span class="p">,</span> <span class="n">iconOff</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">aimMode</span><span class="p">:</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AimMode.aimModeUI_Toggle"><a class="viewcode-back" href="../../aimModeUI.html#Interfaces.ART_AimModeUI.ART_AimMode.aimModeUI_Toggle">[docs]</a> <span class="k">def</span> <span class="nf">aimModeUI_Toggle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Calls on each selected module&#39;s aimMode function and sets the aimMode based on the passed in state.</span>
+
+<span class="sd"> :param state: Whether to turn aim mode on or off.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+ <span class="n">items</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="k">if</span> <span class="n">state</span><span class="p">:</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">state</span><span class="p">:</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="c1"># call on each selected module&#39;s aimMode function</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">name</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">aimMode</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
+
+ <span class="c1"># clear selection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">aimModeWin_moduleList</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">()</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_AnimationUI.html b/Documentation/build/_modules/Interfaces/ART_AnimationUI.html
new file mode 100644
index 0000000..c2dea37
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_AnimationUI.html
@@ -0,0 +1,2251 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_AnimationUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_AnimationUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># import statements</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="c1"># maya 2016&lt; maya2017&gt; compatability</span>
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken</span> <span class="k">as</span> <span class="nn">shiboken</span>
+<span class="k">except</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken2</span> <span class="k">as</span> <span class="nn">shiboken</span>
+
+<span class="n">_instances</span> <span class="o">=</span> <span class="p">[]</span>
+
+
+<div class="viewcode-block" id="getMainWindow"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.getMainWindow">[docs]</a><span class="k">def</span> <span class="nf">getMainWindow</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Get Maya&#39;s window as a QWidget and return the item in memory.</span>
+
+<span class="sd"> :return: a QWidget of Maya&#39;s window</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get maya&#39;s window as QWidget</span>
+ <span class="kn">import</span> <span class="nn">maya.OpenMayaUI</span> <span class="k">as</span> <span class="nn">mui</span>
+ <span class="n">pointer</span> <span class="o">=</span> <span class="n">mui</span><span class="o">.</span><span class="n">MQtUtil</span><span class="o">.</span><span class="n">mainWindow</span><span class="p">()</span>
+ <span class="c1"># pyside QMainWindow takes in a QWidget rather than QObject</span>
+ <span class="k">return</span> <span class="n">shiboken</span><span class="o">.</span><span class="n">wrapInstance</span><span class="p">(</span><span class="n">long</span><span class="p">(</span><span class="n">pointer</span><span class="p">),</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="ART_AnimationUI"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI">[docs]</a><span class="k">class</span> <span class="nc">ART_AnimationUI</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class creates the main animation interface that houses the control picker and the buttons for the animation</span>
+<span class="sd"> tools. This is the main interface that animators will interact with.</span>
+
+<span class="sd"> .. image:: /images/animationUI.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_AnimationUI.__init__"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings, writing the stylesheets, and calling on the method to build</span>
+<span class="sd"> the interface.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">_instances</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_AnimationUI</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;scriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QPointF</span><span class="p">(</span><span class="mf">210.000000</span><span class="p">,</span> <span class="mf">287.500000</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scale</span> <span class="o">=</span> <span class="mf">1.0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectionScriptJobs</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># assign close event</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeEvent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">closeEvent</span>
+
+ <span class="c1"># write out qss based on user settings</span>
+ <span class="n">stylesheetDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span><span class="p">,</span> <span class="s2">&quot;Interfaces/StyleSheets/&quot;</span><span class="p">)</span>
+ <span class="n">stylesheets</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">sheet</span> <span class="ow">in</span> <span class="n">stylesheets</span><span class="p">:</span>
+ <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">writeQSS</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">,</span> <span class="n">sheet</span><span class="p">))</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.buildUI"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.buildUI">[docs]</a> <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the animation UI that houses the area for control pickers and a sidebar for animation tools.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/animPicker.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">550</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">550</span><span class="p">,</span> <span class="mi">750</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">550</span><span class="p">,</span> <span class="mi">750</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pyART_AnimTools_Win&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Animation Tools&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #create the menu bar</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">menuBar</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMenuBar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">menuBar</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">menuBar</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #create the picker toolbar layout</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">setDirection</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QBoxLayout</span><span class="o">.</span><span class="n">RightToLeft</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addStretch</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #picker toolbar buttons</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Edit&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">90</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">90</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">editPicker</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Make module pickers editable (move, scale, rotate)&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Create&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">90</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">90</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Create a new picker for the given character.&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createPickerBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">createNewPicker</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/removeModule.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeModuleFromPickerUI</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Remove a module&#39;s picker from the canvas.&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/movePicker.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">movePickerToTab</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Move a picker from one tab to another.&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/moduleList.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addModuleToPickerUI</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Add a module&#39;s picker to the current canvas.&quot;</span><span class="p">)</span>
+
+ <span class="c1"># background image button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Change the background of the current picker tab.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">changeBackground</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+
+ <span class="n">buttonGrp</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QButtonGroup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="p">)</span>
+ <span class="n">buttonGrp</span><span class="o">.</span><span class="n">setExclusive</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/normalSelect_On.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Change picker selection mode to normal selection&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toggleDragState</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/dragSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Change picker selection mode to drag selection&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toggleDragState</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/commentMode.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Add Comment Box Mode&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toggleDragState</span><span class="p">)</span>
+
+ <span class="n">buttonGrp</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="p">)</span>
+ <span class="n">buttonGrp</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="p">)</span>
+ <span class="n">buttonGrp</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="p">)</span>
+
+ <span class="c1"># self.toolbarLayout.addSpacerItem(QtWidgets.QSpacerItem(10, 0))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/save.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">savePicker</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveTemplateBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Save a picker file&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/load.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolbarLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">loadPicker</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadTemplateBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Load a picker file&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #create the horizontal layout, with the left column giving us the picker canvas area,</span>
+ <span class="c1"># and the right a toolbar for animation tools</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLeftColumnLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainLeftColumnLayout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainRightColumnLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainRightColumnLayout</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #left column - picker canvas</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> the picker canvas will consist of a tab layout at the top, one per character in scene,</span>
+<span class="sd"> and in each of those tabs, another tab layout to hold the pages of the picker</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;epic&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLeftColumnLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">470</span><span class="p">,</span> <span class="mi">700</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">470</span><span class="p">,</span> <span class="mi">700</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pickerMainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;tabVariant&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">450</span><span class="p">,</span> <span class="mi">670</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">450</span><span class="p">,</span> <span class="mi">670</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">75</span><span class="p">))</span>
+
+ <span class="c1"># look for characters in scene to create character tabs</span>
+ <span class="n">charactersFound</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findCharacters</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">charactersFound</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No characters found in scene.&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #right column - toolbar</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;epic2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainRightColumnLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">80</span><span class="p">,</span> <span class="mi">750</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">80</span><span class="p">,</span> <span class="mi">750</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">animToolsFrame</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">75</span><span class="p">))</span>
+
+ <span class="c1"># Select Controls</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/animSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selectAllCtrls</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectCtrlBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Select All Controls&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Export Motion</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/export.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMotion</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMotionBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Export Motion&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Import Motion</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/import.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">importMotion</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importMotionBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Import Motion&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Match Over Frame Range</span>
+
+ <span class="n">movie</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QMovie</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/matchRange.gif&quot;</span><span class="p">))</span>
+ <span class="n">movie</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">matchOverRange</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Match Over Frame Range&quot;</span><span class="p">)</span>
+
+ <span class="n">movie</span><span class="o">.</span><span class="n">frameChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">setButtonIcon</span><span class="p">,</span> <span class="n">movie</span><span class="p">))</span>
+ <span class="n">movie</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">movie</span><span class="o">.</span><span class="n">loopCount</span><span class="p">()</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">movie</span><span class="o">.</span><span class="n">finished</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">movie</span><span class="o">.</span><span class="n">start</span><span class="p">())</span>
+
+ <span class="c1"># Reset Module</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/animReset.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">65</span><span class="p">,</span> <span class="mi">65</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;toolbar&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetRigCtrls</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">resetModuleBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Reset modules tool&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">animToolsLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">600</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.setButtonIcon"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.setButtonIcon">[docs]</a> <span class="k">def</span> <span class="nf">setButtonIcon</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">movie</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Sets the icon of the matchRangeBtn to the next frame in the passed in movie. Note: This was a test function</span>
+<span class="sd"> to see if animated gifs could be used as buttons.</span>
+
+<span class="sd"> :param movie: The movie whose frame to change.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">matchRangeBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">movie</span><span class="o">.</span><span class="n">currentPixmap</span><span class="p">()))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.findCharacters"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.findCharacters">[docs]</a> <span class="k">def</span> <span class="nf">findCharacters</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds all assets in the scene built with ARTv2, and creates a picker tab for each one in the animation UI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="n">characterNodes</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">allNodes</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;rigModules&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">characterNodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">characterNodes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">False</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># go through each node, find the character name, the namespace on the node, and the picker attribute</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">characterNodes</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.name&quot;</span><span class="p">)</span>
+
+ <span class="n">picker</span> <span class="o">=</span> <span class="kc">False</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.pickerFile&quot;</span><span class="p">):</span>
+ <span class="n">pickerFile</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.pickerFile&quot;</span><span class="p">)</span>
+ <span class="n">pickerPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Pickers/&quot;</span><span class="p">)</span>
+
+ <span class="n">picker</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="c1"># create the tab for the given namespace</span>
+ <span class="n">characterWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="n">characterWidget</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
+ <span class="n">characterWidget</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">720</span><span class="p">)</span>
+ <span class="n">characterWidget</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">720</span><span class="p">)</span>
+ <span class="n">characterWidget</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;namespace&quot;</span><span class="p">,</span> <span class="n">namespace</span><span class="p">)</span>
+
+ <span class="c1"># add the icon found on the node&#39;s icon path attribute to the tab</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.iconPath&quot;</span><span class="p">)</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">iconPath</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">iconPath</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="n">characterWidget</span><span class="p">,</span> <span class="n">icon</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">characterWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setTabToolTip</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">namespace</span><span class="p">)</span>
+
+ <span class="c1"># if a picker file existed, load it. Otherwise, display an image telling the user to either</span>
+ <span class="c1"># load a file or create a picker</span>
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">(</span><span class="n">characterWidget</span><span class="p">)</span>
+ <span class="n">frame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">720</span><span class="p">)</span>
+ <span class="n">frame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">720</span><span class="p">)</span>
+ <span class="n">frame</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span>
+ <span class="s2">&quot;background-image: url(&quot;</span> <span class="o">+</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/noPicker.png&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;);&quot;</span><span class="p">)</span>
+
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">150</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">241</span><span class="p">)</span>
+
+ <span class="c1"># add help gif</span>
+ <span class="n">movie_screen</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
+ <span class="n">movie_screen</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background: transparent;&quot;</span><span class="p">)</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">movie_screen</span><span class="p">)</span>
+ <span class="n">moviePath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;Help/createPicker.gif&quot;</span><span class="p">)</span>
+ <span class="n">movie</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QMovie</span><span class="p">(</span><span class="n">moviePath</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QByteArray</span><span class="p">())</span>
+ <span class="n">movie</span><span class="o">.</span><span class="n">setCacheMode</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QMovie</span><span class="o">.</span><span class="n">CacheAll</span><span class="p">)</span>
+ <span class="n">movie</span><span class="o">.</span><span class="n">setSpeed</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
+ <span class="n">movie_screen</span><span class="o">.</span><span class="n">setMovie</span><span class="p">(</span><span class="n">movie</span><span class="p">)</span>
+
+ <span class="n">movie</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">picker</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">loadPicker</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">pickerPath</span><span class="p">,</span> <span class="n">pickerFile</span><span class="p">))</span>
+
+ <span class="k">return</span> <span class="kc">True</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.createNewPicker"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.createNewPicker">[docs]</a> <span class="k">def</span> <span class="nf">createNewPicker</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bypass</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Create a new control picker for the given character tab. This will remove the help gif and replace it with a</span>
+<span class="sd"> blank canvas that module pickers can be added to (using ART_AddModuleToCanvas).</span>
+
+<span class="sd"> :param bypass: Whether or not to bypass the QMessageBox confirming the creation of a new picker.</span>
+<span class="sd"> This is used when loading a picker from file. bypass will be set to True.</span>
+
+<span class="sd"> :return: returns the QTabWidget for this character&#39;s picker.</span>
+
+<span class="sd"> .. seealso:: ART_AddModuleToCanvas</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">closeWidget</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="c1"># get the tab text</span>
+ <span class="n">character</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">tabToolTip</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">bypass</span><span class="p">:</span>
+ <span class="c1"># display a message confirming new picker creation for given character</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Create a New Picker for &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">character</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; ?&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Question</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Yes&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">YesRole</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Cancel&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">NoRole</span><span class="p">)</span>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="c1"># if the user selected &quot;Yes&quot;, delete the old widget</span>
+ <span class="k">if</span> <span class="n">ret</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">closeWidget</span><span class="p">:</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">ret</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="k">return</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">closeWidget</span><span class="p">:</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
+
+ <span class="c1"># now add a new tab widget to our character tabs, with a new tab named &quot;Main&quot;</span>
+ <span class="n">pickerTabs</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">(</span><span class="n">widget</span><span class="p">)</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">currentChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pickerTabChange</span><span class="p">)</span>
+
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">444</span><span class="p">,</span> <span class="mi">632</span><span class="p">)</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">444</span><span class="p">,</span> <span class="mi">632</span><span class="p">)</span>
+
+ <span class="c1"># add &#39;add tab&#39; button</span>
+ <span class="n">addTabBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Add Tab&quot;</span><span class="p">)</span>
+ <span class="n">addTabBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">addTabBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Add Picker Tab&quot;</span><span class="p">)</span>
+ <span class="n">addTabBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addTab</span><span class="p">,</span> <span class="n">pickerTabs</span><span class="p">))</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">setCornerWidget</span><span class="p">(</span><span class="n">addTabBtn</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">TopRightCorner</span><span class="p">)</span>
+
+ <span class="c1"># style sheet</span>
+ <span class="n">stylesheet</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QTabBar::tab</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(19,132,183), stop:1 rgb(30,30,30));</span>
+<span class="s2"> width: 100px;</span>
+<span class="s2"> padding-left: -10px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:selected</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: rgb(14,100,143);</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:hover</span>
+<span class="s2"> {</span>
+<span class="s2"> background: rgb(19,132,183);</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:!selected</span>
+<span class="s2"> {</span>
+<span class="s2"> margin-top: 5px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabWidget::pane</span>
+<span class="s2"> {</span>
+<span class="s2"> border-top: 2px solid rgb(19,132,183);</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the qWidget for this tab of the picker</span>
+ <span class="n">pickerCanvas</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="n">pickerCanvas</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">600</span><span class="p">)</span>
+ <span class="n">pickerCanvas</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">600</span><span class="p">)</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="n">pickerCanvas</span><span class="p">,</span> <span class="s2">&quot;Main&quot;</span><span class="p">)</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">stylesheet</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for this page</span>
+ <span class="n">pageLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">pickerCanvas</span><span class="p">)</span>
+
+ <span class="c1"># create the graphicsView</span>
+ <span class="n">gfxView</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">()</span>
+ <span class="n">pageLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">gfxView</span><span class="p">)</span>
+
+ <span class="c1"># create the qgraphicsScene</span>
+ <span class="n">gfxScene</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsScene</span><span class="p">()</span>
+ <span class="n">gfxScene</span><span class="o">.</span><span class="n">setSceneRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">420</span><span class="p">,</span> <span class="mi">575</span><span class="p">)</span>
+ <span class="n">gfxView</span><span class="o">.</span><span class="n">setScene</span><span class="p">(</span><span class="n">gfxScene</span><span class="p">)</span>
+ <span class="n">gfxView</span><span class="o">.</span><span class="n">setDragMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">NoDrag</span><span class="p">)</span>
+
+ <span class="c1"># set background image</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/canvas.png&quot;</span><span class="p">))</span>
+ <span class="n">gfxItem</span> <span class="o">=</span> <span class="n">gfxScene</span><span class="o">.</span><span class="n">addPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+ <span class="n">gfxItem</span><span class="o">.</span><span class="n">setZValue</span><span class="p">(</span><span class="o">-</span><span class="mi">20</span><span class="p">)</span>
+
+ <span class="c1"># show the picker tabs</span>
+ <span class="n">pickerTabs</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="c1"># enable module list button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">bypass</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addModuleToPickerUI</span><span class="p">()</span>
+
+ <span class="c1"># =======================================================</span>
+ <span class="c1"># #enable edit button</span>
+ <span class="c1"># =======================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">pickerTabs</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.toggleDragState"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.toggleDragState">[docs]</a> <span class="k">def</span> <span class="nf">toggleDragState</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Toggles selection interaction modes within the QGraphicsScene. The three different modes are normal select,</span>
+<span class="sd"> drag select, and comment box mode. This will set the dragMode of the QGraphicsView to the currently selected</span>
+<span class="sd"> state, along with switching icons to show selection status.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">views</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">selectedTab</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">views</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
+
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">selectedTab</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">views</span><span class="p">:</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">mousePressEvent</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">gfxViewMousePress</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">mouseMoveEvent</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">gfxViewMouseMove</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">mouseReleaseEvent</span> <span class="o">=</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">gfxViewMouseRelease</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span>
+
+ <span class="c1"># normal singular select mode</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">for</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">views</span><span class="p">:</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">setDragMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">NoDrag</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/normalSelect_On.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/dragSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/commentMode.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="c1"># drag select mode</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">for</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">views</span><span class="p">:</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">setDragMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">RubberBandDrag</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/normalSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/dragSelect_On.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/commentMode.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="c1"># create UE4-style comment box mode</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">for</span> <span class="n">view</span> <span class="ow">in</span> <span class="n">views</span><span class="p">:</span>
+ <span class="n">view</span><span class="o">.</span><span class="n">setDragMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">RubberBandDrag</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/normalSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/dragSelect.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/commentMode_on.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.gfxViewMousePress"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.gfxViewMousePress">[docs]</a> <span class="k">def</span> <span class="nf">gfxViewMousePress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Override event that captures a mouse press when in the passed in QGraphicsView and displays the QRubberBand</span>
+<span class="sd"> if in drag select or comment box mode.</span>
+
+<span class="sd"> :param view: the QGraphicsView to detect mouse press events in.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">origin</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRubberBand</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRubberBand</span><span class="o">.</span><span class="n">Rectangle</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">()))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">origin</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRubberBand</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QRubberBand</span><span class="o">.</span><span class="n">Rectangle</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">()))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.gfxViewMouseMove"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.gfxViewMouseMove">[docs]</a> <span class="k">def</span> <span class="nf">gfxViewMouseMove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Override event that captures a mouse move when in the passed in QGraphicsView and changes the</span>
+<span class="sd"> displayed size of the QRubberBand based on the origin position and the current position, drawing a QRect (if</span>
+<span class="sd"> in drag select or comment box mode.). It also finds any items inside of that QRect (picker buttons, etc).</span>
+
+<span class="sd"> :param view: the QGraphicsView to detect mouse move events in and check for items in.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">())</span><span class="o">.</span><span class="n">normalized</span><span class="p">())</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">itemsInRect</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">items</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">())</span><span class="o">.</span><span class="n">normalized</span><span class="p">())</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">())</span><span class="o">.</span><span class="n">normalized</span><span class="p">())</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">itemsInRect</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">items</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QRect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">origin</span><span class="p">,</span> <span class="n">event</span><span class="o">.</span><span class="n">pos</span><span class="p">())</span><span class="o">.</span><span class="n">normalized</span><span class="p">())</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.gfxViewMouseRelease"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.gfxViewMouseRelease">[docs]</a> <span class="k">def</span> <span class="nf">gfxViewMouseRelease</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Override event that captures a mouse release when in the passed in QGraphicsView and hides the QRubberBand</span>
+<span class="sd"> if it was visible. If in comment box mode, this release event will also create the comment box with the</span>
+<span class="sd"> dimensions and position of the start point of the mouse press, and the QRect from the mouse move.</span>
+
+<span class="sd"> :param view: the QGraphicsView to detect mouse release events and to add comment boxes to.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">hide</span><span class="p">()</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">itemsInRect</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">classType</span> <span class="o">==</span> <span class="s2">&quot;pickerButton&quot;</span><span class="p">:</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">mousePressEventCustom</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QGraphicsSceneMouseEvent</span><span class="p">())</span>
+
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentButton</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">hide</span><span class="p">()</span>
+
+ <span class="n">geo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rubberband</span><span class="o">.</span><span class="n">geometry</span><span class="p">()</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+ <span class="n">box</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">commentBoxItem</span><span class="p">(</span><span class="n">geo</span><span class="o">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">y</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">scene</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">box</span><span class="p">)</span>
+ <span class="n">box</span><span class="o">.</span><span class="n">setZValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toggleDragState</span><span class="p">()</span>
+
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="o">.</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.addTab"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.addTab">[docs]</a> <span class="k">def</span> <span class="nf">addTab</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tabWidget</span><span class="p">,</span> <span class="n">bypass</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tabName</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Adds a tab to the QTabWidget for a given character to add more module control pickers to. These are sometimes</span>
+<span class="sd"> referred to as &quot;canvases&quot;.</span>
+
+<span class="sd"> :param tabWidget: The QTabWidget to add a tab to.</span>
+<span class="sd"> :param bypass: If not creating the &quot;Main&quot; tab or loading a picker from file, a tab name must be entered.</span>
+<span class="sd"> :param tabName: If creating the &quot;Main&quot; tab or loading a picker from file, the name given to the tab that</span>
+<span class="sd"> will be created.</span>
+
+<span class="sd"> :return: Index of the created tab in the QTabWidget.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">bypass</span><span class="p">:</span>
+ <span class="n">tabName</span><span class="p">,</span> <span class="n">ok</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QInputDialog</span><span class="o">.</span><span class="n">getText</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;Tab Name&quot;</span><span class="p">,</span> <span class="s2">&quot;Enter Tab Name:&quot;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">ok</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="n">tabName</span> <span class="o">=</span> <span class="n">tabName</span>
+ <span class="k">if</span> <span class="n">ok</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">tabName</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="c1"># create the qWidget for this tab of the picker</span>
+ <span class="n">pickerCanvas</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="n">pickerCanvas</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">600</span><span class="p">)</span>
+ <span class="n">pickerCanvas</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">442</span><span class="p">,</span> <span class="mi">600</span><span class="p">)</span>
+ <span class="n">tabWidget</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="n">pickerCanvas</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">tabName</span><span class="p">))</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">pickerCanvas</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for this page</span>
+ <span class="n">pageLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">pickerCanvas</span><span class="p">)</span>
+
+ <span class="c1"># create the graphicsView</span>
+ <span class="n">gfxView</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">()</span>
+ <span class="n">pageLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">gfxView</span><span class="p">)</span>
+
+ <span class="c1"># create the qgraphicsScene</span>
+ <span class="n">gfxScene</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsScene</span><span class="p">()</span>
+ <span class="n">gfxScene</span><span class="o">.</span><span class="n">setSceneRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">420</span><span class="p">,</span> <span class="mi">575</span><span class="p">)</span>
+ <span class="n">gfxView</span><span class="o">.</span><span class="n">setScene</span><span class="p">(</span><span class="n">gfxScene</span><span class="p">)</span>
+
+ <span class="c1"># set background image</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/canvas.png&quot;</span><span class="p">))</span>
+ <span class="n">gfxScene</span><span class="o">.</span><span class="n">addPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">index</span></div>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AnimationUI.closeEvent"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.closeEvent">[docs]</a> <span class="k">def</span> <span class="nf">closeEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Closes the interface.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="n">_instances</span><span class="p">:</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyART_animToolsDock&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_AnimTools_Win&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AnimationUI.addModuleToPickerUI"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.addModuleToPickerUI">[docs]</a> <span class="k">def</span> <span class="nf">addModuleToPickerUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an instance of ART_AddModuleToCanvas to bring up that tool, passing in modules valid to add.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modulesToAdd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comparePickerToRig</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">ART_AddModuleToCanvas</span> <span class="k">as</span> <span class="nn">am2c</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">am2c</span><span class="p">)</span>
+ <span class="n">am2c</span><span class="o">.</span><span class="n">ART_AddModuleToCanvas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modulesToAdd</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.removeModuleFromPickerUI"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.removeModuleFromPickerUI">[docs]</a> <span class="k">def</span> <span class="nf">removeModuleFromPickerUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an instance of the ART_RemoveModuleFromCanvas tool, passing in modules valid to remove.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modulesToAdd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comparePickerToRig</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="kn">import</span> <span class="nn">ART_RemoveModuleFromCanvas</span> <span class="k">as</span> <span class="nn">arfc</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">arfc</span><span class="p">)</span>
+ <span class="n">arfc</span><span class="o">.</span><span class="n">ART_RemoveModuleFromCanvas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modulesToAdd</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.movePickerToTab"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.movePickerToTab">[docs]</a> <span class="k">def</span> <span class="nf">movePickerToTab</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an instance of the ART_MovePickerToTabUI tool, passing in all valid module pickers that could be moved.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modulesToAdd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findAllPickerItems</span><span class="p">()</span>
+ <span class="kn">import</span> <span class="nn">ART_MovePickerToTabUI</span> <span class="k">as</span> <span class="nn">mp2t</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">mp2t</span><span class="p">)</span>
+ <span class="n">mp2t</span><span class="o">.</span><span class="n">ART_MovePickerToTab</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modulesToAdd</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.pickerTabChange"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.pickerTabChange">[docs]</a> <span class="k">def</span> <span class="nf">pickerTabChange</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Called on when a tab is changed on a given character&#39;s picker, if the remove modules from canvas UI is open,</span>
+<span class="sd"> it will be closed.</span>
+
+<span class="sd"> .. todo:: This function could eventually be changed to simply refresh that UI with the new information.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">title</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">title</span> <span class="o">==</span> <span class="s2">&quot;Remove Module From Canvas&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_AddToCanvasWIN&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.editPicker"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.editPicker">[docs]</a> <span class="k">def</span> <span class="nf">editPicker</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Makes all picker items editable again, making them selectable, movable, scalable, and rotatable.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getPickerTabs</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getComments</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;item&quot;</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsMovable</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsSelectable</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsFocusable</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemSendsGeometryChanges</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">comment</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;item&quot;</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsMovable</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsSelectable</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.savePicker"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.savePicker">[docs]</a> <span class="k">def</span> <span class="nf">savePicker</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Save the picker data to a .picker file. The main picker data is actually gathered by self.getPickerTabs,</span>
+<span class="sd"> self.getComments, and self.getButtonColors.</span>
+
+<span class="sd"> .. seealso:: ART_AnimationUI.getPickerTabs, ART_AnimationUI.getComments, ART_AnimationUI.getButtonColors</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get info from current character tab</span>
+ <span class="n">pickerData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getPickerTabs</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">commentData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getComments</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">buttonData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getButtonColors</span><span class="p">()</span>
+
+ <span class="n">jsonData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">jsonData</span><span class="p">[</span><span class="s2">&quot;pickerData&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pickerData</span>
+ <span class="n">jsonData</span><span class="p">[</span><span class="s2">&quot;commentData&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">commentData</span>
+ <span class="n">jsonData</span><span class="p">[</span><span class="s2">&quot;buttonData&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">buttonData</span>
+
+ <span class="c1"># character name</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.pickerFile&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;pickerFile&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># ask for the file name to give the picker</span>
+ <span class="n">startingDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Pickers&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">startingDir</span><span class="p">):</span>
+ <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">startingDir</span><span class="p">)</span>
+
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">okc</span><span class="o">=</span><span class="s2">&quot;Save Picker&quot;</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="n">startingDir</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.picker&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># create the picker file</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span>
+
+ <span class="c1"># dump the data with json</span>
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">jsonData</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># write picker file location to character node</span>
+ <span class="n">niceFileName</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">filename</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">pickerFile</span> <span class="o">=</span> <span class="n">niceFileName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Pickers/&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;/&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;:.pickerFile&quot;</span><span class="p">,</span> <span class="n">pickerFile</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># disable module list button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.comparePickerToRig"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.comparePickerToRig">[docs]</a> <span class="k">def</span> <span class="nf">comparePickerToRig</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unused</span><span class="p">,</span> <span class="n">used</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Compares the modules that are on the picker to all modules that make up the character.</span>
+
+<span class="sd"> :param unused: Whether or not we want a list returned of modules that are not on the picker yet.</span>
+<span class="sd"> :param used: Whether or not we want a list returned of modules that are on the picker.</span>
+<span class="sd"> :return: Returns a list of the modules based on either used or unused args.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get info from current character tab</span>
+ <span class="n">jsonData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getPickerTabs</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+
+ <span class="n">rigModules</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.rigModules&quot;</span><span class="p">)</span>
+ <span class="n">returnModules</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">pickerModules</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">jsonData</span><span class="p">:</span>
+ <span class="n">pickerModules</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;module&quot;</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">unused</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">rigModules</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">module</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pickerModules</span><span class="p">:</span>
+ <span class="n">returnModules</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">used</span><span class="p">:</span>
+ <span class="n">returnModules</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">pickerModules</span><span class="p">))</span>
+
+ <span class="k">return</span> <span class="n">returnModules</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.findAllPickerItems"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.findAllPickerItems">[docs]</a> <span class="k">def</span> <span class="nf">findAllPickerItems</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds all modules on the picker. Used mostly be the load picker function.</span>
+<span class="sd"> :return: Returns a list of picker data that includes for each item, the module the picker is for, the item in</span>
+<span class="sd"> memory, and the nice name.</span>
+
+<span class="sd"> .. seealso:: ART_AnimationUI.loadPicker</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">returnData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the gfxScene</span>
+ <span class="n">itemsInScene</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemsInScene</span><span class="p">:</span>
+ <span class="c1"># if we find our top level picker item (the borderItem), get it&#39;s data</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerBorderItem</span> <span class="ow">or</span> <span class="n">item</span><span class="o">.</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+ <span class="n">niceName</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">module</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">niceName</span><span class="p">])</span>
+
+ <span class="k">return</span> <span class="n">returnData</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.loadPicker"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.loadPicker">[docs]</a> <span class="k">def</span> <span class="nf">loadPicker</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Loads a .picker file and builds the picker according to the file data.</span>
+<span class="sd"> :param filename: The path of the picker file to gather data from.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">startingDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Pickers&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">startingDir</span><span class="p">):</span>
+
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">okc</span><span class="o">=</span><span class="s2">&quot;Load Picker&quot;</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="n">startingDir</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.picker&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">filename</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="n">borderItems</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #load the data</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="n">json_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">json_file</span><span class="p">)</span>
+ <span class="n">json_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #get character node</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="n">tabIndex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">characterWidget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">tabIndex</span><span class="p">)</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">characterWidget</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;charNode&quot;</span><span class="p">)</span>
+ <span class="n">characterNodeModules</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.rigModules&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">):</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.name&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create new picker</span>
+ <span class="n">tabWidget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">createNewPicker</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #create all tabs</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="n">existingTabs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">subPickers</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tabWidget</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tabName</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">existingTabs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tabName</span><span class="p">)</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #go through data</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="n">subPickers</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">pickerData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;pickerData&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">pickerData</span><span class="p">:</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;module&quot;</span><span class="p">)</span>
+ <span class="n">moduleNiceName</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;module&quot;</span><span class="p">)</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tab&quot;</span><span class="p">)</span>
+ <span class="n">transforms</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;transforms&quot;</span><span class="p">)</span>
+ <span class="n">subPicker</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;subPicker&quot;</span><span class="p">)</span>
+ <span class="n">mirrored</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;mirrored&quot;</span><span class="p">)</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">module</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># if there is a namespace (if the add character for animation tool was used):</span>
+ <span class="k">if</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">characterNodeModules</span><span class="p">:</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">namespace</span> <span class="o">+</span> <span class="n">module</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">subPicker</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
+ <span class="n">subPickers</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">module</span><span class="p">,</span> <span class="n">tab</span><span class="p">,</span> <span class="n">transforms</span><span class="p">,</span> <span class="n">mirrored</span><span class="p">,</span> <span class="n">moduleNiceName</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">tab</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">existingTabs</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="n">tabWidget</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">tab</span><span class="p">)</span>
+ <span class="n">existingTabs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tab</span><span class="p">)</span>
+
+ <span class="c1"># ===========================================================</span>
+ <span class="c1"># #add the picker to the correct tab</span>
+ <span class="c1"># ===========================================================</span>
+ <span class="n">buildPicker</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">tabChildren</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="c1"># get a list of the tabs with their names and index</span>
+ <span class="n">tabInfo</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tabChildren</span><span class="p">)):</span>
+ <span class="n">tabName</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">tabInfo</span><span class="p">[</span><span class="n">tabName</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span>
+
+ <span class="c1"># now find a matching entry in that list to our tab variable</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">tabInfo</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tab</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">index</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="c1"># set out tab widget to that index</span>
+ <span class="n">tabWidget</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">subPicker</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">buildPicker</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="c1"># ===========================================================</span>
+ <span class="c1"># #now that the tab is correct, build the picker for the module</span>
+ <span class="c1"># ===========================================================</span>
+ <span class="k">if</span> <span class="n">buildPicker</span><span class="p">:</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentScene</span><span class="p">()</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># create picker for the given module</span>
+ <span class="n">inst</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getModuleInst</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
+ <span class="n">pickerData</span> <span class="o">=</span> <span class="n">inst</span><span class="o">.</span><span class="n">pickerUI</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">module</span><span class="p">,</span> <span class="n">namespace</span><span class="p">)</span>
+ <span class="n">picker</span> <span class="o">=</span> <span class="n">pickerData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">picker</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectionScriptJobs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pickerData</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="n">borderItems</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">picker</span><span class="p">,</span> <span class="n">moduleNiceName</span><span class="p">,</span> <span class="n">module</span><span class="p">])</span>
+
+ <span class="c1"># mirror the module&#39;s pickerBorderItem if needed</span>
+ <span class="k">if</span> <span class="n">pickerData</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">picker</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setTransform</span><span class="p">(</span>
+ <span class="n">QtGui</span><span class="o">.</span><span class="n">QTransform</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">picker</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">))</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">picker</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">children</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorChildTextItems</span><span class="p">(</span><span class="n">children</span><span class="p">)</span>
+
+ <span class="c1"># set transformations on the picker</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">picker</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setScale</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="c1"># when loading a picker, set data(1) to be the scale factor that was possibly saved out.</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="n">picker</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">picker</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setRotation</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="n">picker</span><span class="o">.</span><span class="n">setPos</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QPointF</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]))</span>
+
+ <span class="n">picker</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsMovable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsSelectable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsFocusable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemSendsGeometryChanges</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================</span>
+ <span class="c1"># #enable edit button</span>
+ <span class="c1"># =======================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editPickerBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================</span>
+ <span class="c1"># #disable canvas, move, and remove buttons</span>
+ <span class="c1"># =======================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">backgroundImgBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleListBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moveModBtn</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">normalSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">dragSelectButton</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+
+ <span class="n">widget</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">widgetChildren</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">widgetChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">gfxView</span> <span class="o">=</span> <span class="n">child</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">path</span><span class="p">)):</span>
+
+ <span class="c1"># set background image</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">()</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">gfxView</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+ <span class="n">gfxItem</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">addPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+ <span class="n">gfxItem</span><span class="o">.</span><span class="n">setZValue</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;customImg&quot;</span><span class="p">,</span> <span class="n">gfxItem</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;filePath&quot;</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Tried to load custom background image: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span>
+ <span class="n">path</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;, but file not found on disk.&quot;</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #Handle Sub-Pickers</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">subPickers</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">info</span> <span class="ow">in</span> <span class="n">subPickers</span><span class="p">:</span>
+
+ <span class="n">module</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">transforms</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">mirrored</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
+ <span class="n">pickerItems</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findAllPickerItems</span><span class="p">()</span>
+
+ <span class="c1"># each item in pickerItems has module, item, niceName. use niceName to see if we have a winner</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">pickerItems</span><span class="p">:</span>
+ <span class="n">pickerModule</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">pickerItem</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">pickerNiceName</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">pickerModule</span> <span class="o">==</span> <span class="n">module</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pickerNiceName</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># now find a matching entry in that list to our tab variable</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">tabInfo</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tab</span><span class="p">)</span>
+
+ <span class="c1"># set our tab widget to that index</span>
+ <span class="n">tabWidget</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># find current scene</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentScene</span><span class="p">()</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">pickerItem</span><span class="p">)</span>
+
+ <span class="c1"># set transformations on the picker</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">pickerItem</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setScale</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="c1"># when loading a picker, set data(1) to be the scale factor that was possibly saved out.</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">pickerItem</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setRotation</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setPos</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QPointF</span><span class="p">(</span><span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]))</span>
+
+ <span class="k">if</span> <span class="n">mirrored</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">pickerItem</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setTransform</span><span class="p">(</span>
+ <span class="n">QtGui</span><span class="o">.</span><span class="n">QTransform</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">scene</span><span class="o">.</span><span class="n">sceneRect</span><span class="p">()</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="mf">0.0</span><span class="p">))</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">pickerItem</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+
+ <span class="c1"># lock down pickers</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsMovable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsSelectable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsFocusable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">pickerItem</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemSendsGeometryChanges</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #Add Comment data</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="n">commentData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;commentData&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">commentData</span><span class="p">:</span>
+ <span class="n">rect</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;rect&quot;</span><span class="p">)</span>
+ <span class="n">color</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;color&quot;</span><span class="p">)</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;label&quot;</span><span class="p">)</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tab&quot;</span><span class="p">)</span>
+
+ <span class="n">tabChildren</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="c1"># get a list of the tabs with their names and index</span>
+ <span class="n">tabInfo</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tabChildren</span><span class="p">)):</span>
+ <span class="n">tabName</span> <span class="o">=</span> <span class="n">tabWidget</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">tabInfo</span><span class="p">[</span><span class="n">tabName</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span>
+
+ <span class="c1"># now find a matching entry in that list to our tab variable</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">tabInfo</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tab</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">index</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="c1"># set out tab widget to that index</span>
+ <span class="n">tabWidget</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentView</span><span class="p">()</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentScene</span><span class="p">()</span>
+
+ <span class="n">box</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">commentBoxItem</span><span class="p">(</span><span class="n">rect</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">rect</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">rect</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">rect</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">scene</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+ <span class="n">box</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">setColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="o">.</span><span class="n">fromRgb</span><span class="p">(</span><span class="n">color</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
+ <span class="n">box</span><span class="o">.</span><span class="n">textLabel</span><span class="o">.</span><span class="n">setPlainText</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">box</span><span class="p">)</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #Find button color data</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">buttonData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s2">&quot;buttonData&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">border</span> <span class="ow">in</span> <span class="n">borderItems</span><span class="p">:</span>
+ <span class="n">pickerModule</span> <span class="o">=</span> <span class="n">border</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">picker</span> <span class="o">=</span> <span class="n">border</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">border</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">button</span> <span class="ow">in</span> <span class="n">buttonData</span><span class="p">:</span>
+ <span class="n">module</span> <span class="o">=</span> <span class="n">button</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;module&quot;</span><span class="p">)</span>
+ <span class="n">color</span> <span class="o">=</span> <span class="n">button</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;color&quot;</span><span class="p">)</span>
+ <span class="n">control</span> <span class="o">=</span> <span class="n">button</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;control&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">pickerModule</span> <span class="o">==</span> <span class="n">module</span><span class="p">:</span>
+
+ <span class="c1"># then we have the correct border item parent and now need to get its button</span>
+ <span class="n">childItems</span> <span class="o">=</span> <span class="n">picker</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">childItems</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButton</span><span class="p">:</span>
+
+ <span class="c1"># delete the existing scriptJob</span>
+ <span class="n">scriptJob</span> <span class="o">=</span> <span class="n">picker</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">kill</span><span class="o">=</span><span class="n">scriptJob</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectionScriptJobs</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">scriptJob</span><span class="p">)</span>
+
+ <span class="c1"># set the button color</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">setColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="o">.</span><span class="n">fromRgb</span><span class="p">(</span><span class="n">color</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">3</span><span class="p">]))</span>
+
+ <span class="n">inst</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getModuleInst</span><span class="p">(</span><span class="n">networkNode</span><span class="p">)</span>
+
+ <span class="c1"># create the new scriptJob</span>
+ <span class="n">newColor</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="o">.</span><span class="n">fromRgb</span><span class="p">(</span><span class="n">color</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">color</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
+ <span class="n">scriptJob</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;SelectionChanged&quot;</span><span class="p">,</span>
+ <span class="n">partial</span><span class="p">(</span><span class="n">inst</span><span class="o">.</span><span class="n">selectionScriptJob_animUI</span><span class="p">,</span>
+ <span class="p">[[</span><span class="n">child</span><span class="p">,</span> <span class="n">control</span><span class="p">,</span> <span class="n">newColor</span><span class="p">]])],</span>
+ <span class="n">kws</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">picker</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">scriptJob</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">selectionScriptJobs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">scriptJob</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="c1"># ===============================================================</span>
+ <span class="c1"># #write picker file location to character node</span>
+ <span class="c1"># ===============================================================</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.pickerFile&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;pickerFile&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">niceFileName</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+ <span class="n">pickerFile</span> <span class="o">=</span> <span class="n">niceFileName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Pickers/&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;/&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.pickerFile&quot;</span><span class="p">,</span> <span class="n">pickerFile</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.mirrorChildTextItems"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.mirrorChildTextItems">[docs]</a> <span class="k">def</span> <span class="nf">mirrorChildTextItems</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">children</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Mirrors any QGraphicsSimpleTextItems text if the parent picker was mirrored, so that the text is correct.</span>
+<span class="sd"> :param children: List of child items (QGraphicsSimpleTextItems) of a pickerBorderItem or a pickerButton.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># for mirroring text on any child items of a pickerBorderItem or a pickerButton</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsSimpleTextItem</span><span class="p">:</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">setTransformOriginPoint</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">center</span><span class="p">())</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">setTransform</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QTransform</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="mf">0.0</span><span class="p">))</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">children</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mirrorChildTextItems</span><span class="p">(</span><span class="n">children</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.getCurrentScene"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getCurrentScene">[docs]</a> <span class="k">def</span> <span class="nf">getCurrentScene</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gets the QGraphicsScene of the current QGraphicsView, which is gotten by calling on self.getCurrentView.</span>
+
+<span class="sd"> :return: Returns the QGraphicsScene under the current QGraphicsView.</span>
+
+<span class="sd"> .. seealso:: ART_AnimationUI.getCurrentView</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getCurrentView</span><span class="p">()</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">scene</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AnimationUI.getCurrentView"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getCurrentView">[docs]</a> <span class="k">def</span> <span class="nf">getCurrentView</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gets the current QGraphicsView based on the currently selected character tab, and the currently selected</span>
+<span class="sd"> picker tab of said character.</span>
+
+<span class="sd"> :return: Returns the QGraphicsView that is currently active.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># search through the children of the widget until we find the gfxScene</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+
+ <span class="k">return</span> <span class="n">view</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.getPickerTabs"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getPickerTabs">[docs]</a> <span class="k">def</span> <span class="nf">getPickerTabs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">saving</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds and returns all picker item data, like transforms, scale, x/y coordinates, mirrored status, parent tab,</span>
+<span class="sd"> and controlled module.</span>
+
+<span class="sd"> :param saving: Whether or not this function is being called by savePicker, in which case if it is, it will then</span>
+<span class="sd"> make sure that the picker items are no longer editable.</span>
+
+<span class="sd"> :rtype: A list of lists, where each inner list has the following data for a picker item:</span>
+<span class="sd"> :return [0]: Name of tab the picker item belongs to</span>
+<span class="sd"> :return [1]: Picker item transforms</span>
+<span class="sd"> :return [2]: Name of module picker belongs to (which module controls it interfaces with)</span>
+<span class="sd"> :return [3]: Whether or not the picker item is mirrored.</span>
+<span class="sd"> :return [4]: Whether or not the picker is a sub-picker, like fingers or toes.</span>
+<span class="sd"> :return [5]: And if not saving, the memory address of the picker item.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">returnData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">selectedTab</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the gfxScene</span>
+ <span class="n">itemsInScene</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemsInScene</span><span class="p">:</span>
+ <span class="c1"># if we find our top level picker item (the borderItem), get it&#39;s data</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerBorderItem</span> <span class="ow">or</span> <span class="n">item</span><span class="o">.</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
+
+ <span class="c1"># item.data(1)could have data that is the scale factor, however, if this is</span>
+ <span class="c1"># a fresh picker, it will not.</span>
+ <span class="n">scaleFactor</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">scaleFactor</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">scaleFactor</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">scale</span>
+
+ <span class="c1"># get position, rotation, and find out if the pickerBorderItem has been mirrored</span>
+ <span class="n">position</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">pos</span><span class="p">()</span>
+ <span class="n">position</span> <span class="o">=</span> <span class="p">[</span><span class="n">position</span><span class="o">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">position</span><span class="o">.</span><span class="n">y</span><span class="p">()]</span>
+ <span class="n">rotation</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">rotation</span><span class="p">()</span>
+ <span class="n">mirrored</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">transform</span><span class="p">()</span><span class="o">.</span><span class="n">m11</span><span class="p">()</span>
+ <span class="n">itemData</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="c1"># add data to dictionary</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;tab&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;transforms&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">position</span><span class="p">,</span> <span class="n">rotation</span><span class="p">,</span> <span class="n">scaleFactor</span><span class="p">]</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;module&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;mirrored&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mirrored</span>
+
+ <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;subPicker&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;subPicker&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">saving</span><span class="p">:</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;item&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span>
+
+ <span class="k">if</span> <span class="n">saving</span><span class="p">:</span>
+ <span class="c1"># set flags to False so borderItem is no longer moveable, selectable, etc.</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsMovable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsSelectable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemIsFocusable</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFlag</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsItem</span><span class="o">.</span><span class="n">ItemSendsGeometryChanges</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">itemData</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsPixmapItem</span><span class="p">:</span>
+ <span class="n">customImg</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;customImg&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span> <span class="o">==</span> <span class="n">customImg</span><span class="p">:</span>
+ <span class="n">filePath</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;filePath&quot;</span><span class="p">)</span>
+ <span class="n">itemData</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;tab&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;path&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">filePath</span>
+
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">itemData</span><span class="p">)</span>
+
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">selectedTab</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnData</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.getComments"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getComments">[docs]</a> <span class="k">def</span> <span class="nf">getComments</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">saving</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gets any comment boxes that were created on any picker tabs and returns a list of those items.</span>
+<span class="sd"> :param saving: Whether or not this function is being called from savePicker, in which case, it will disable</span>
+<span class="sd"> edits.</span>
+
+<span class="sd"> :rtype: A list of lists where the inner list contains the following data for each comment box found:</span>
+<span class="sd"> :return [0]: The QRect of the comment box, which contains the box dimensions and the x/y coordinates.</span>
+<span class="sd"> :return [1]: The color of the comment box</span>
+<span class="sd"> :return [2]: The name of the tab the comment box is under.</span>
+<span class="sd"> :return [3]: The text label of the comment box.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">returnData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">selectedTab</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the gfxScene</span>
+ <span class="n">itemsInScene</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemsInScene</span><span class="p">:</span>
+
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">commentBoxItem</span><span class="p">:</span>
+
+ <span class="n">itemData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">saving</span><span class="p">:</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;item&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span>
+
+ <span class="c1"># get comment box position and color</span>
+ <span class="n">geo</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">boundingRect</span><span class="p">()</span>
+ <span class="n">color</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">color</span><span class="p">()</span><span class="o">.</span><span class="n">getRgb</span><span class="p">()</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;rect&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">geo</span><span class="o">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">y</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">geo</span><span class="o">.</span><span class="n">height</span><span class="p">()]</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;color&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;tab&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+
+ <span class="c1"># get comment box text</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsTextItem</span><span class="p">:</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">toPlainText</span><span class="p">()</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;label&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">label</span>
+
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">itemData</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnData</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.getButtonColors"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getButtonColors">[docs]</a> <span class="k">def</span> <span class="nf">getButtonColors</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gets joint module picker button colors, which can be edited by the user.</span>
+
+<span class="sd"> .. note:: Currently, only the joint module supports users being able to change the button color.</span>
+
+<span class="sd"> :rtype: A list of lists where the inner list contains the following data for each joint module found:</span>
+<span class="sd"> :return [0]: The name of the module this picker interfaces with.</span>
+<span class="sd"> :return [1]: The color of the picker button.</span>
+<span class="sd"> :return [2]: The name of the control this button selects.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the current tab index and the widget</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+ <span class="n">returnData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, search for the gfxScene</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">selectedTab</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasIndex</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">canvasWidget</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">canvasIndex</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvasWidget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">canvasChild</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">canvasChild</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">view</span> <span class="o">=</span> <span class="n">canvasChild</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+
+ <span class="c1"># get all items in the gfxScene</span>
+ <span class="n">itemsInScene</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemsInScene</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerBorderItem</span> <span class="ow">or</span> <span class="n">item</span><span class="o">.</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
+ <span class="n">childButtons</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">childItems</span><span class="p">()</span>
+
+ <span class="c1"># if the picker button is from a leaf module, get color data (only leaf for now)</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">childButtons</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">pickerButton</span><span class="p">:</span>
+ <span class="n">moduleType</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;ART_Leaf_Module&quot;</span> <span class="ow">in</span> <span class="n">moduleType</span><span class="p">:</span>
+
+ <span class="c1"># get button color</span>
+ <span class="n">color</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">brush</span><span class="o">.</span><span class="n">color</span><span class="p">()</span><span class="o">.</span><span class="n">getRgb</span><span class="p">()</span>
+
+ <span class="c1"># store module name, button color</span>
+ <span class="n">itemData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;module&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">moduleType</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;color&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">color</span>
+ <span class="n">itemData</span><span class="p">[</span><span class="s2">&quot;control&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">object</span>
+
+ <span class="n">returnData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">itemData</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">returnData</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.getModuleInst"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.getModuleInst">[docs]</a> <span class="k">def</span> <span class="nf">getModuleInst</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">module</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Takes the given module and instantiates it, returning the memory address for the created instance.</span>
+
+<span class="sd"> :param module: The name of the module to instantiate.</span>
+
+<span class="sd"> :return: The instance of the instantiated module in memory.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">modType</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleType&quot;</span><span class="p">)</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">mod</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">&quot;RigModules.&quot;</span> <span class="o">+</span> <span class="n">modType</span><span class="p">,</span> <span class="p">{},</span> <span class="p">{},</span> <span class="p">[</span><span class="n">modType</span><span class="p">])</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+
+ <span class="c1"># get the class name from that module file (returns Modules.ART_Root.ART_Root for example)</span>
+ <span class="n">moduleClass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">mod</span><span class="o">.</span><span class="n">className</span><span class="p">)</span>
+
+ <span class="c1"># find the instance of that module</span>
+ <span class="n">moduleInst</span> <span class="o">=</span> <span class="n">moduleClass</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modName</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">moduleInst</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.changeBackground"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.changeBackground">[docs]</a> <span class="k">def</span> <span class="nf">changeBackground</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an interface allowing a user to change the background image of a picker with these dimensions: (442 x</span>
+<span class="sd"> 600)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_changeBackgroundImg_Win&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_changeBackgroundImg_Win&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pyART_changeBackgroundImg_Win&quot;</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Change Background&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the main layout</span>
+ <span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># scroll area contents</span>
+ <span class="n">scrollContents</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">scrollContents</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background: transparent;&quot;</span><span class="p">)</span>
+ <span class="n">scrollLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">scrollLayout</span><span class="o">.</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+
+ <span class="c1"># find tabs. for each tab, create widget for changing background</span>
+ <span class="n">tabs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">widget</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># get the children of the current tab widget</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+
+ <span class="c1"># if we find a tab widget, get tab name and item</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">:</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="n">child</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tab</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="c1"># find tab&#39;s graphics view</span>
+ <span class="n">canvas</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">canvasChildren</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">canvasChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGraphicsView</span><span class="p">:</span>
+ <span class="n">gfxView</span> <span class="o">=</span> <span class="n">child</span>
+ <span class="n">tabs</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">tab</span><span class="p">,</span> <span class="n">tab</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">gfxView</span><span class="p">])</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tabs</span><span class="p">)):</span>
+ <span class="c1"># create the widget for each tab background</span>
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">scrollLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">layout</span><span class="p">)</span>
+
+ <span class="c1"># which tab combo box</span>
+ <span class="n">tabComboBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="n">tabComboBox</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
+ <span class="n">tabComboBox</span><span class="o">.</span><span class="n">setFixedHeight</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">tabComboBox</span><span class="p">)</span>
+ <span class="n">tabComboBox</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="n">tabComboBox</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">tabs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="c1"># path location</span>
+ <span class="n">pathField</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">pathField</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setReadOnly</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setFixedHeight</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">160</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="s2">&quot;442 x 600 PNG image file..&quot;</span><span class="p">)</span>
+
+ <span class="c1"># browse button</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">button</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/fileBrowse.png&quot;</span><span class="p">))</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">backgroundBrowse</span><span class="p">,</span> <span class="n">pathField</span><span class="p">,</span> <span class="n">tabs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]))</span>
+
+ <span class="c1"># clear button</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">button</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/exit.png&quot;</span><span class="p">))</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Clear custom background image, resetting back to default.&quot;</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">clearBackground</span><span class="p">,</span> <span class="n">tabs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]))</span>
+
+ <span class="c1"># add everything to the scroll Layout</span>
+ <span class="n">scrollContents</span><span class="o">.</span><span class="n">setLayout</span><span class="p">(</span><span class="n">scrollLayout</span><span class="p">)</span>
+ <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QScrollArea</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setHorizontalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAlwaysOff</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setVerticalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAlwaysOn</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setWidgetResizable</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="n">scrollContents</span><span class="p">)</span>
+
+ <span class="c1"># show</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.backgroundBrowse"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.backgroundBrowse">[docs]</a> <span class="k">def</span> <span class="nf">backgroundBrowse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">gfxView</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Opens a file browser to select a valid .png background image and then apply it to the specified QGraphicsScene.</span>
+
+<span class="sd"> :param field: QLineEdit for the path name to be displayed.</span>
+<span class="sd"> :param gfxView: QGraphicsView to add the background image to.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">startingDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Icons&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">startingDir</span><span class="p">):</span>
+
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">okc</span><span class="o">=</span><span class="s2">&quot;Load Picker&quot;</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="n">startingDir</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.png&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">filename</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">field</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
+
+ <span class="c1"># set background image</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">()</span>
+ <span class="n">pixmap</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">gfxView</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+ <span class="n">gfxItem</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">addPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+ <span class="n">gfxItem</span><span class="o">.</span><span class="n">setZValue</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;customImg&quot;</span><span class="p">,</span> <span class="n">gfxItem</span><span class="p">)</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;filePath&quot;</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.clearBackground"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.clearBackground">[docs]</a> <span class="k">def</span> <span class="nf">clearBackground</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gfxView</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Removes the background image from the given QGraphicsView.</span>
+
+<span class="sd"> :param gfxView: The QGraphicsView whose background image to remove.</span>
+
+<span class="sd"> .. seealso:: ART_AnimationUI.changeBackground</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">scene</span> <span class="o">=</span> <span class="n">gfxView</span><span class="o">.</span><span class="n">scene</span><span class="p">()</span>
+ <span class="n">items</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+ <span class="n">customImg</span> <span class="o">=</span> <span class="n">scene</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;customImg&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">item</span> <span class="o">==</span> <span class="n">customImg</span><span class="p">:</span>
+ <span class="n">scene</span><span class="o">.</span><span class="n">removeItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_AnimationUI.exportMotion"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.exportMotion">[docs]</a> <span class="k">def</span> <span class="nf">exportMotion</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates ART_ExportMotionUI to bring up the tool for exporting animation out to various file formats.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">ART_ExportMotionUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_ExportMotionUI</span><span class="p">)</span>
+ <span class="n">ART_ExportMotionUI</span><span class="o">.</span><span class="n">ART_ExportMotion</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.importMotion"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.importMotion">[docs]</a> <span class="k">def</span> <span class="nf">importMotion</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates ART_ImportMotionUI to bring up the tool for importing FBX animation onto the rig.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">ART_ImportMotionUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_ImportMotionUI</span><span class="p">)</span>
+ <span class="n">ART_ImportMotionUI</span><span class="o">.</span><span class="n">ART_ImportMotion</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.resetRigCtrls"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.resetRigCtrls">[docs]</a> <span class="k">def</span> <span class="nf">resetRigCtrls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates ART_ResetModulesUI to bring up the tool for resetting transformations on a selected modules.</span>
+<span class="sd"> Also known as &quot;zeroing out&quot;.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">ART_ResetModulesUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_ResetModulesUI</span><span class="p">)</span>
+ <span class="n">ART_ResetModulesUI</span><span class="o">.</span><span class="n">ART_ResetModules</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.selectAllCtrls"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.selectAllCtrls">[docs]</a> <span class="k">def</span> <span class="nf">selectAllCtrls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates ART_SelectControlsUI to bring up the tool for selecting specified rig controls for selected</span>
+<span class="sd"> modules.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">show</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="n">mods</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getModifiers</span><span class="p">()</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">mods</span> <span class="o">&amp;</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">show</span> <span class="o">=</span> <span class="kc">False</span>
+
+ <span class="kn">import</span> <span class="nn">ART_SelectControlsUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_SelectControlsUI</span><span class="p">)</span>
+ <span class="n">ART_SelectControlsUI</span><span class="o">.</span><span class="n">ART_SelectControls</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">show</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_AnimationUI.matchOverRange"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.ART_AnimationUI.matchOverRange">[docs]</a> <span class="k">def</span> <span class="nf">matchOverRange</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates ART_MatchOverRangeUI to bring up the tool for matching different rig type over a frame range for</span>
+<span class="sd"> selected modules.</span>
+
+<span class="sd"> :Example:</span>
+
+<span class="sd"> Matching the IK leg rig controls to the Fk leg rig controls over a frame range of 0-30.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">ART_MatchOverRangeUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_MatchOverRangeUI</span><span class="p">)</span>
+ <span class="n">ART_MatchOverRangeUI</span><span class="o">.</span><span class="n">ART_MatchOverRange</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div></div>
+
+
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="run"><a class="viewcode-back" href="../../animationUI.html#Interfaces.ART_AnimationUI.run">[docs]</a><span class="k">def</span> <span class="nf">run</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiate the ART_AnimationUI class to build the main interface the animators will interact with.</span>
+
+<span class="sd"> :return: instance of the ART_AnimationUI in memory.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create new instance of ART_AnimationUI</span>
+ <span class="n">gui</span> <span class="o">=</span> <span class="n">ART_AnimationUI</span><span class="p">(</span><span class="n">getMainWindow</span><span class="p">())</span>
+
+ <span class="c1"># Dock Control</span>
+ <span class="n">allowedAreas</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;left&quot;</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">]</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyArtv2AnimToolsDock&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_AnimTools_Win&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtv2AnimToolsDock&quot;</span><span class="p">,</span> <span class="n">control</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">dock</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyArtv2AnimToolsDock&quot;</span><span class="p">,</span> <span class="n">area</span><span class="o">=</span><span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s2">&quot;pyART_AnimTools_Win&quot;</span><span class="p">,</span>
+ <span class="n">allowedArea</span><span class="o">=</span><span class="n">allowedAreas</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;Animation Tools&quot;</span><span class="p">,</span> <span class="n">w</span><span class="o">=</span><span class="mi">450</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="n">dock</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;UI failed to launch.&quot;</span><span class="p">)</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="k">return</span> <span class="n">gui</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_BakeOffsetsUI.html b/Documentation/build/_modules/Interfaces/ART_BakeOffsetsUI.html
new file mode 100644
index 0000000..5297b1e
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_BakeOffsetsUI.html
@@ -0,0 +1,369 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_BakeOffsetsUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_BakeOffsetsUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_BakeOffsets"><a class="viewcode-back" href="../../bakeOffsets.html#Interfaces.ART_BakeOffsetsUI.ART_BakeOffsets">[docs]</a><span class="k">class</span> <span class="nc">ART_BakeOffsets</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This clas builds a UI that allows the rigger to select modules to bake offset mover values up to the global mover</span>
+<span class="sd"> controls, making the offset movers no longer offset from their global mover parents. It can be found on the rig</span>
+<span class="sd"> creator toolbar with the following icon:</span>
+<span class="sd"> .. image:: /images/bakeOffsetsButton.png</span>
+
+<span class="sd"> The full interface looks like this, listing found modules in the scene to select and bake offsets down to.</span>
+<span class="sd"> .. image:: /images/bakeOffsets.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_BakeOffsets.__init__"><a class="viewcode-back" href="../../bakeOffsets.html#Interfaces.ART_BakeOffsetsUI.ART_BakeOffsets.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings and then calling on ART_BakeOffsetsUI.buildBakeOffsetsUI to</span>
+<span class="sd"> create the interface.</span>
+
+<span class="sd"> :param mainUI: The instance of the Rig Creator UI where this class was called from.</span>
+
+<span class="sd"> .. seealso:: ART_BakeOffsetsUI.buildBakeOffsetsUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildBakeOffsetsUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BakeOffsets.buildBakeOffsetsUI"><a class="viewcode-back" href="../../bakeOffsets.html#Interfaces.ART_BakeOffsetsUI.ART_BakeOffsets.buildBakeOffsetsUI">[docs]</a> <span class="k">def</span> <span class="nf">buildBakeOffsetsUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the interface, finding all modules and listing them for selection.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_BakeOffsetsWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_BakeOffsetsWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_BakeOffsetsWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Bake Offsets&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">250</span><span class="p">))</span>
+
+ <span class="c1"># create the background</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_frame</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_widgetLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+
+ <span class="c1"># add the QListWidget Frame</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># create the list widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleListFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">265</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">MultiSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">setSpacing</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+
+ <span class="c1"># add the layout for the buttons</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_buttonLayoutAll</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_buttonLayoutAll</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_buttonLayoutAll</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
+
+ <span class="c1"># add the selection buttons</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_buttonLayoutAll</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Select All&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">selectAll</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectAllButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Clear Selection&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectNoneButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># spacer</span>
+ <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">80</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span>
+
+ <span class="c1"># add the buttons for reset settings and reset transforms</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Bake Offsets&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">115</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_selectionButtonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Turn on Aim Mode for selected modules.&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsets</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_bakeOFfsetsBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># populate the list widget</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="c1"># get module name</span>
+ <span class="n">moduleName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">moduleName</span> <span class="o">!=</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">moduleName</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BakeOffsets.bakeOffsets"><a class="viewcode-back" href="../../bakeOffsets.html#Interfaces.ART_BakeOffsetsUI.ART_BakeOffsets.bakeOffsets">[docs]</a> <span class="k">def</span> <span class="nf">bakeOffsets</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Tales selected modules listed in the QListWidget and bakes the offset mover values up to the global mover</span>
+<span class="sd"> parent. This is achieved by creating a locator in the space of the offset mover, zeroing the offset mover</span>
+<span class="sd"> out, and constraining the global mover to the constraint. Finally, the constraints are removed and the</span>
+<span class="sd"> locators deleted.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bakeOffsetsWin_moduleList</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+ <span class="n">items</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">locators</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># go through each module and create the locators for the offset movers</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">name</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
+
+ <span class="c1"># get movers</span>
+ <span class="n">jointMovers</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="c1"># separate mover lists</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="c1"># create locators for the offsetMovers, then zero out offset mover</span>
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">offsetMovers</span><span class="p">:</span>
+ <span class="n">locatorName</span> <span class="o">=</span> <span class="n">mover</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_offset&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span>
+ <span class="n">loc</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">spaceLocator</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">locatorName</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># constrain locator</span>
+ <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">loc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span>
+
+ <span class="c1"># parent locator under a copy of the locatorName</span>
+ <span class="n">parentLoc</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">duplicate</span><span class="p">(</span><span class="n">loc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">parentLoc</span><span class="p">)</span>
+ <span class="n">locators</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parentLoc</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">offsetMovers</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.tx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ty&quot;</span><span class="p">,</span> <span class="s2">&quot;.tz&quot;</span><span class="p">,</span> <span class="s2">&quot;.rx&quot;</span><span class="p">,</span> <span class="s2">&quot;.ry&quot;</span><span class="p">,</span> <span class="s2">&quot;.rz&quot;</span><span class="p">]:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># now, for each global mover, find child groups that are constrained to them</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">name</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
+ <span class="c1"># get movers</span>
+ <span class="n">jointMovers</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="c1"># separate mover lists</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="n">childGrps</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">globalMovers</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+
+ <span class="c1"># find the mover group constrained to this mover (if any)</span>
+ <span class="n">connection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;parentConstraint&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">grp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">connection</span> <span class="o">+</span> <span class="s2">&quot;.constraintRotateX&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">grp</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_mover_grp&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">childGrps</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">mover</span><span class="p">,</span> <span class="n">grp</span><span class="p">])</span>
+
+ <span class="c1"># now take this group and delete the constraints</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">grp</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="c1"># now snap global movers to offset movers</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">name</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
+ <span class="c1"># get movers</span>
+ <span class="n">jointMovers</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">returnJointMovers</span>
+
+ <span class="c1"># separate mover lists</span>
+ <span class="n">globalMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">offsetMovers</span> <span class="o">=</span> <span class="n">jointMovers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">mover</span> <span class="ow">in</span> <span class="n">globalMovers</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span><span class="p">):</span>
+ <span class="n">constraint</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span> <span class="o">+</span> <span class="s2">&quot;_loc&quot;</span><span class="p">,</span> <span class="n">mover</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span>
+
+ <span class="c1"># now remove all locs</span>
+ <span class="k">for</span> <span class="n">const</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">const</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">loc</span> <span class="ow">in</span> <span class="n">locators</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
+
+ <span class="c1"># finally, reconstrain mover_grps to their movers</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">childGrps</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_BoneCounter.html b/Documentation/build/_modules/Interfaces/ART_BoneCounter.html
new file mode 100644
index 0000000..b82e18b
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_BoneCounter.html
@@ -0,0 +1,440 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_BoneCounter &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_BoneCounter</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_BoneCounter"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter">[docs]</a><span class="k">class</span> <span class="nc">ART_BoneCounter</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class builds a simple interface that allows a user to see what the total bone count of their asset will be</span>
+<span class="sd"> given the current module settings. It also allows the user to set a bone count target.</span>
+
+<span class="sd"> It can be found on the Rig Creator toolbar with this icon:</span>
+<span class="sd"> .. image:: /images/boneCounterButton.png</span>
+
+<span class="sd"> The interface looks like this:</span>
+<span class="sd"> .. image:: /images/boneCounter.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="ART_BoneCounter.__init__"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates this class, getting the QSettings and calling on the method to build the interface for the tool.</span>
+
+<span class="sd"> :param mainUI: The instance of the Rig Creator UI from which this class was called.</span>
+
+<span class="sd"> .. seealso:: ART_BoneCounter.buildBoneCounterUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildBoneCounterUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BoneCounter.buildBoneCounterUI"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter.buildBoneCounterUI">[docs]</a> <span class="k">def</span> <span class="nf">buildBoneCounterUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the interface for the bone counter tool, which is comprised off a QLineEdit that shows the current</span>
+<span class="sd"> bone count, a QPushButton to launch another simple UI that allows the user to set a bone count target,</span>
+<span class="sd"> and QProgressBar that shows a percentage to target bone count.</span>
+
+<span class="sd"> .. seealso:: ART_BoneCounter.setBoneCountTarget</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_BoneCounterWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_BoneCounterWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_BoneCounterWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Bone Counter&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">100</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">100</span><span class="p">))</span>
+
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># load toolbar stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># create the bone counter stylesheet</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QProgressBar{</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> border-radius: 5px;</span>
+<span class="s2"> text-align: center;</span>
+<span class="s2"> font: 87 10pt &quot;Arial&quot;;</span>
+<span class="s2"> color: rgb(255,255,255);</span>
+<span class="s2"> }</span>
+
+<span class="s2"> QProgressBar::chunk {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(25,175,255), stop:1 rgb(9,62,98));</span>
+<span class="s2"> width: 10px;</span>
+<span class="s2"> margin: 0.5px;</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QProgressBar{</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> border-radius: 5px;</span>
+<span class="s2"> text-align: center;</span>
+<span class="s2"> font: 87 10pt &quot;Arial Black&quot;;</span>
+<span class="s2"> color: rgb(255,255,255);</span>
+<span class="s2"> }</span>
+
+<span class="s2"> QProgressBar::chunk {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(255,174,0), stop:1 rgb(30,30,30));</span>
+<span class="s2"> width: 10px;</span>
+<span class="s2"> margin: 0.5px;</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayoutMain</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayoutMain</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayoutMain</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayout</span><span class="p">)</span>
+
+ <span class="c1"># label creation</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCount</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Bone Count: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCount</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">headerFont</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCount</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpinBox</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setReadOnly</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setButtonSymbols</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractSpinBox</span><span class="o">.</span><span class="n">NoButtons</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">9999</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">60</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setMaximumWidth</span><span class="p">(</span><span class="mi">60</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="p">)</span>
+
+ <span class="c1"># create the button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Set Target&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">setBoneCountTarget</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneMaxButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add the progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QProgressBar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin_widgetLayoutMain</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setFormat</span><span class="p">(</span><span class="s2">&quot;target = %m&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add the max range of the progress bar to the main network node</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module.target&quot;</span><span class="p">):</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module.target&quot;</span><span class="p">)</span>
+ <span class="n">currentValue</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setMaximum</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">value</span> <span class="o">&lt;</span> <span class="n">currentValue</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">currentValue</span> <span class="o">&lt;=</span> <span class="n">value</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">currentValue</span> <span class="o">&gt;</span> <span class="n">value</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module&quot;</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;target&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module.target&quot;</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get the current bone count</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">allBones</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">joints</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">allBones</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="c1"># update the spinBox and progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">))</span>
+ <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">maximum</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">)</span> <span class="o">&gt;</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">max</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span><span class="p">)</span>
+
+ <span class="c1"># show window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounterWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BoneCounter.setBoneCountTarget"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter.setBoneCountTarget">[docs]</a> <span class="k">def</span> <span class="nf">setBoneCountTarget</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds a UI that allows the user to set the target bone count.</span>
+
+<span class="sd"> .. image:: /images/boneCountTarget.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># launch a UI to get the name information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">()</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_setBoneCountTarget_UI&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Bone Count&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_topLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_topLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainLayout</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_topLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">70</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">70</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">70</span><span class="p">))</span>
+
+ <span class="c1"># add label</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Enter a target bone count: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainLayout</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># add spinBox</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpinBox</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setButtonSymbols</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractSpinBox</span><span class="o">.</span><span class="n">NoButtons</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">9999</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">70</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background-color: rgb(255,255,255); color: rgb(0,0,0);&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_mainLayout</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_targetWindowSpinBox&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add a confirm button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_confirmButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Confirm&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_topLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_confirmButton</span><span class="p">)</span>
+
+ <span class="n">buttonImage</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/blue_field_background.png&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_confirmButton</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span>
+ <span class="s2">&quot;background-image: url(&quot;</span> <span class="o">+</span> <span class="n">buttonImage</span> <span class="o">+</span> <span class="s2">&quot;); background-color: rgb(0,0,0);&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_confirmButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">setBoneCountTarget_Confirm</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BoneCounter.setBoneCountTarget_Confirm"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter.setBoneCountTarget_Confirm">[docs]</a> <span class="k">def</span> <span class="nf">setBoneCountTarget_Confirm</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Take the QSpinBox value for the new target and refresh the main UI with the new data.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">newMax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">targetWindow_SpinBox</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_setBoneCountTarget_UI&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">currentValue</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setMaximum</span><span class="p">(</span><span class="n">newMax</span><span class="p">)</span>
+ <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">maximum</span><span class="p">()</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module.target&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="s2">&quot;ART_Root_Module.target&quot;</span><span class="p">,</span> <span class="n">newMax</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">newMax</span> <span class="o">&lt;</span> <span class="n">currentValue</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">max</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">value</span> <span class="o">&lt;=</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">value</span> <span class="o">&gt;</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BoneCounter.updateBoneCount"><a class="viewcode-back" href="../../boneCounter.html#Interfaces.ART_BoneCounter.ART_BoneCounter.updateBoneCount">[docs]</a> <span class="k">def</span> <span class="nf">updateBoneCount</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Updates the interface based on new module information. Usually triggered when a module has had its settings</span>
+<span class="sd"> changed.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">allBones</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">joints</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">allBones</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="c1"># update the spinBox and progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCounter</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">))</span>
+ <span class="nb">max</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">maximum</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyle</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">allBones</span><span class="p">)</span> <span class="o">&gt;</span> <span class="nb">max</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="nb">max</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneCountBar</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_BuildProgressUI.html b/Documentation/build/_modules/Interfaces/ART_BuildProgressUI.html
new file mode 100644
index 0000000..5fff62d
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_BuildProgressUI.html
@@ -0,0 +1,931 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_BuildProgressUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_BuildProgressUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">import</span> <span class="nn">maya.mel</span> <span class="k">as</span> <span class="nn">mel</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_BuildProgress_UI"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI">[docs]</a><span class="k">class</span> <span class="nc">ART_BuildProgress_UI</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class kicks off building all of the rigs for the modules. It displays an interface that shows progress and</span>
+<span class="sd"> displays information about the rig build.</span>
+
+<span class="sd"> It exports skin weights, rebuilds the skeleton in rig pose, imports skin weights, runs any pre-script,</span>
+<span class="sd"> calls on each module&#39;s rig building code, sets up rig parenting and hierarchy, and finally runs any post-script.</span>
+
+<span class="sd"> .. image:: /images/buildProgress.gif</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_BuildProgress_UI.__init__"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings and then calling on the function to build the UI for the tool.</span>
+
+<span class="sd"> :param mainUI: The instance of the Rig Creator UI that this class was called from.</span>
+
+<span class="sd"> .. seealso:: ART_BuildProgressUI.buildUI</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigData</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">warnings</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="mi">0</span>
+
+ <span class="c1"># images</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">imageBkgrd</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/toolbar_background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">imageBtnBkrd</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/blue_field_background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frameBackground</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/field_background.png&quot;</span><span class="p">))</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_BuildProgressWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_BuildProgressWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.buildUI"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.buildUI">[docs]</a> <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the interface, which doesn&#39;t really have any user-interaction, but is there to display information</span>
+<span class="sd"> about the progress of the rig build. There are two QProgressBars that show current module build progress and</span>
+<span class="sd"> total build progress, then a QTextEdit which outputs information about what the build process is currently</span>
+<span class="sd"> working on.</span>
+
+<span class="sd"> After the interface is built, it sets the rig pose on the joints of each module.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background-color: rgb(0, 0, 0);, color: rgb(0,0,0);&quot;</span><span class="p">)</span>
+
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_BuildProgressWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Build Progress&quot;</span><span class="p">)</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># set size policy</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">300</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">300</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">300</span><span class="p">))</span>
+
+ <span class="c1"># create the QFrame for this page</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">background</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;epic&quot;</span><span class="p">)</span>
+
+ <span class="c1"># build the progress bars:</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QProgressBar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setTextVisible</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QProgressBar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setFormat</span><span class="p">(</span><span class="s2">&quot;Total Progress..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setTextVisible</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># detailed information</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTextEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Starting Build Process..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setReadOnly</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="c1"># start build</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setRigPose</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.exportWeights"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.exportWeights">[docs]</a> <span class="k">def</span> <span class="nf">exportWeights</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Exports all skin weights of meshes that have skinClusters to a .weights file (JSON). It also has</span>
+<span class="sd"> functionality to deal with morph targets, making sure they are preserved when history on the meshes is deleted.</span>
+
+<span class="sd"> .. seealso:: riggingUtils.export_skin_weights()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;|| EXPORTING SKIN WEIGHTS ||&quot;</span><span class="p">)</span>
+
+ <span class="c1"># find meshes that are weighted</span>
+ <span class="n">weightedMeshes</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">skinClusters</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;skinCluster&#39;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">cluster</span> <span class="ow">in</span> <span class="n">skinClusters</span><span class="p">:</span>
+ <span class="n">geometry</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">cluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">g</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">geoTransform</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">geometry</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">weightedMeshes</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">geoTransform</span><span class="p">,</span> <span class="n">cluster</span><span class="p">])</span>
+
+ <span class="c1"># update progress bar</span>
+ <span class="n">numMeshes</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">weightedMeshes</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">numMeshes</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># save out weights of meshes</span>
+ <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">weightedMeshes</span><span class="p">:</span>
+ <span class="n">filePath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">internalVar</span><span class="p">(</span><span class="n">utd</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;.WEIGHTS&quot;</span><span class="p">))</span>
+
+ <span class="c1"># export skin weights</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">export_skin_weights</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="c1"># CHECK FOR MORPH TARGETS</span>
+ <span class="n">blendshapeList</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># find blendshapes</span>
+ <span class="n">skinCluster</span> <span class="o">=</span> <span class="n">riggingUtils</span><span class="o">.</span><span class="n">findRelatedSkinCluster</span><span class="p">(</span><span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">skinCluster</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">blendshapes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">skinCluster</span> <span class="o">+</span> <span class="s2">&quot;.input&quot;</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;blendShape&quot;</span><span class="p">)</span>
+ <span class="n">deleteShapes</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">if</span> <span class="n">blendshapes</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">blendshapes</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">each</span><span class="p">,</span> <span class="n">m</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">string</span><span class="o">=</span><span class="s2">&quot;weight&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">attrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+
+ <span class="c1"># if not, manually create shapes by toggling attrs and duplicating mesh</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">attr</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="n">dupe</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">duplicate</span><span class="p">(</span><span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># parent to world</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">dupe</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">parent</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parent</span><span class="p">(</span><span class="n">dupe</span><span class="p">,</span> <span class="n">world</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># rename the duplicate mesh to the blendshape name</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">dupe</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="n">deleteShapes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
+
+ <span class="c1"># add the blendshape node name and its attrs to the master blendshape list</span>
+ <span class="n">blendshapeList</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">each</span><span class="p">,</span> <span class="n">attrs</span><span class="p">])</span>
+
+ <span class="c1"># delete history of meshes</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">ch</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># reapply blendshapes</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">blendshapeList</span><span class="p">:</span>
+ <span class="n">bshapeName</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">shapeList</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="n">i</span> <span class="o">=</span> <span class="mi">1</span>
+ <span class="k">for</span> <span class="n">shape</span> <span class="ow">in</span> <span class="n">shapeList</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">bshapeName</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">blendShape</span><span class="p">(</span><span class="n">bshapeName</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="p">(</span><span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">i</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">))</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">([</span><span class="n">shape</span><span class="p">,</span> <span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">r</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">blendShape</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">bshapeName</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">deleteShapes</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># update progress and info</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; Exported Skin Weights for &quot;</span> <span class="o">+</span> <span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+
+ <span class="c1"># rebuild the skeleton in rig pose</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rebuildSkeleton</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.setRigPose"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.setRigPose">[docs]</a> <span class="k">def</span> <span class="nf">setRigPose</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Sets the rig pose on each module&#39;s joints. Lastly, calls on ART_BuildProgressUI.exportWeights()</span>
+
+<span class="sd"> ..seealso :: ART_BuildProgressUI.exportWeights()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># set rig pose</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Setting Rig Pose..&quot;</span><span class="p">)</span>
+ <span class="n">numMods</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">numMods</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">inst</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="s2">&quot;rigPose&quot;</span><span class="p">)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span>
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportWeights</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.rebuildSkeleton"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.rebuildSkeleton">[docs]</a> <span class="k">def</span> <span class="nf">rebuildSkeleton</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Rebuilds the skeleton in rig pose, meaning that all joint rotations will be zeroed in rig pose rather than</span>
+<span class="sd"> model pose. This ensures clean rigging.</span>
+
+<span class="sd"> Lastly, calls on ART_BuildProgressUI.importWeights() to reimport weighting back onto the meshes.</span>
+
+<span class="sd"> .. seealso:: riggingUtils.buildSkeleton(), ART_BuildProgressUI.importWeights()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># rebuild the skeleton</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s2">&quot;root&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Rebuilding Skeleton in Rig Pose..&quot;</span><span class="p">)</span>
+
+ <span class="c1"># build skeleton from utils</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">buildSkeleton</span><span class="p">()</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
+
+ <span class="c1"># import weights</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">importWeights</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.importWeights"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.importWeights">[docs]</a> <span class="k">def</span> <span class="nf">importWeights</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Imports skin weights back onto the asset geometry after having rebuilt the skeleton in rig pose. Then calls</span>
+<span class="sd"> on ART_BuildProgressUI.preScript().</span>
+
+<span class="sd"> .. seealso:: ART_BuildProgressUI.preScript()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">meshes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findAllSkinnableGeo</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">meshes</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;|| IMPORTING SKIN WEIGHTS ||&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">meshes</span><span class="p">:</span>
+ <span class="n">filePath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">internalVar</span><span class="p">(</span><span class="n">utd</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">mesh</span> <span class="o">+</span> <span class="s2">&quot;.WEIGHTS&quot;</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">filePath</span><span class="p">):</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">import_skin_weights</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">mesh</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># update progress and info</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; Imported Skin Weights for &quot;</span> <span class="o">+</span> <span class="n">mesh</span><span class="p">)</span>
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># remove skin file</span>
+ <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">filePath</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># update progress and info</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">236</span><span class="p">,</span> <span class="mi">217</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; Could not import weights for &quot;</span> <span class="o">+</span> <span class="n">mesh</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">warnings</span> <span class="o">+=</span> <span class="mi">1</span>
+
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+
+ <span class="c1"># call on the prescript</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># def exportMeshes(self):</span>
+ <span class="c1">#</span>
+ <span class="c1"># lodAttrs = utils.getLodData()</span>
+ <span class="c1"># exportData = utils.findExportMeshData()</span>
+ <span class="c1">#</span>
+ <span class="c1"># self.currentTask.setRange(0, len(lodAttrs))</span>
+ <span class="c1"># self.currentTask.setValue(0)</span>
+ <span class="c1">#</span>
+ <span class="c1">#</span>
+ <span class="c1"># #save the file</span>
+ <span class="c1"># saveFile = cmds.file(q = True, sceneName = True)</span>
+ <span class="c1">#</span>
+ <span class="c1">#</span>
+ <span class="c1"># try:</span>
+ <span class="c1"># cmds.file(save = True)</span>
+ <span class="c1"># except Exception, e:</span>
+ <span class="c1"># cmds.error(&quot;Could not save file. Error: &quot; + str(e))</span>
+ <span class="c1"># return</span>
+ <span class="c1">#</span>
+ <span class="c1">#</span>
+ <span class="c1"># #for each LOD</span>
+ <span class="c1"># for each in exportData:</span>
+ <span class="c1"># meshValue = each[1]</span>
+ <span class="c1"># pathValue = each[0]</span>
+ <span class="c1"># boneValue = each[2]</span>
+ <span class="c1"># poseData = each[3]</span>
+ <span class="c1"># utils.exportMesh(self.mainUI, meshValue, pathValue, boneValue, poseData)</span>
+ <span class="c1">#</span>
+ <span class="c1"># #open the file</span>
+ <span class="c1"># cmds.file(saveFile, open = True, force = True)</span>
+ <span class="c1">#</span>
+ <span class="c1"># #update UI</span>
+ <span class="c1"># self.infoText.setTextColor(QtGui.QColor(0,255,18))</span>
+ <span class="c1"># self.infoText.append(&quot; SUCCESS: FBX file exported.&quot;)</span>
+ <span class="c1"># self.infoText.append(&quot; &quot; + str(pathValue))</span>
+ <span class="c1"># self.infoText.setTextColor(QtGui.QColor(255,255,255))</span>
+ <span class="c1">#</span>
+ <span class="c1"># #update progress bar</span>
+ <span class="c1"># curVal = self.currentTask.value()</span>
+ <span class="c1"># self.currentTask.setValue(curVal + 1)</span>
+ <span class="c1">#</span>
+ <span class="c1"># #update main progress bar</span>
+ <span class="c1"># self.totalProgress.setValue(7)</span>
+ <span class="c1">#</span>
+ <span class="c1"># #run pre-script</span>
+ <span class="c1"># self.preScript()</span>
+
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Keeping this around for now, but currently it is not being used.</span>
+<span class="sd"> Exporting is now done through edit rig -&gt; Export Skeletal Meshes</span>
+<span class="sd"> &quot;&quot;&quot;</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.preScript"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.preScript">[docs]</a> <span class="k">def</span> <span class="nf">preScript</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> If there is a pre-script to run, this will call on ART_BuildProgressUI.executeScript() to run the pre-script.</span>
+<span class="sd"> Then it will call on ART_BuildProgressUI.buildRigs() to build each module&#39;s rigs.</span>
+
+<span class="sd"> .. note:: Pre-Scipts are used if you ever want to do something to your character before the rig gets built.</span>
+<span class="sd"> An example usage would be adding IK joints for UE4 in a pre-script, as you don&#39;t want or need</span>
+<span class="sd"> controls for those IK joints, and setting up those constraints.</span>
+
+<span class="sd"> .. seealso:: ART_BuildProgressUI.executeScript(), ART_BuildProgressUI.buildRigs()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get pre-script path from character node, if it exists</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.preScriptPath&quot;</span><span class="p">):</span>
+ <span class="n">scriptPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.preScriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Executing Pre-Script..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">scriptPath</span><span class="p">)</span>
+
+ <span class="c1"># try to execute the pre-script</span>
+ <span class="n">status</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">executeScript</span><span class="p">(</span><span class="n">scriptPath</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">status</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">18</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; SUCCESS: Pre-Script Was Successfully Executed..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">status</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; FAILED: Pre-Script Was Not Successfully Executed..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">+=</span> <span class="mi">1</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;No Pre-Script To Run..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+
+ <span class="c1"># build rigs</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildRigs</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.buildRigs"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.buildRigs">[docs]</a> <span class="k">def</span> <span class="nf">buildRigs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> First, create a driver skeleton which the rig will build upon, then calls on each module&#39;s buildCustomRig</span>
+<span class="sd"> function, which will build the rig for that module, then sets up rig parenting and hiearchy once all modules</span>
+<span class="sd"> are built.</span>
+
+<span class="sd"> Lastly, calls on the function to execute a post script if one was given during publish.</span>
+
+<span class="sd"> .. seealso:: riggingUtils.createDriverSkeleton(), ART_BuildProgressUI.postScript()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;|| PREPARING TO BUILD CONTROL RIGS.. ||&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Update Current Task bar with num modules</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># create the driver skeleton</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createDriverSkeleton</span><span class="p">()</span>
+
+ <span class="c1"># Loop through modules, building rigs</span>
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; Building: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">inst</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
+
+ <span class="c1"># build module rigs</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">buildRig</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
+
+ <span class="c1"># update progress bar</span>
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #Setup the rig parenting</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigData</span><span class="p">:</span>
+ <span class="n">createdConstraints</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;driver_root&quot;</span><span class="p">:</span>
+ <span class="n">pConst</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">pointConstraint</span><span class="p">(</span><span class="s2">&quot;offset_anim&quot;</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">oConst</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">orientConstraint</span><span class="p">(</span><span class="s2">&quot;offset_anim&quot;</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">pConst</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">createdConstraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pConst</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">oConst</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">createdConstraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">oConst</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># get the connections of the passed in parent bone</span>
+ <span class="n">connections</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">connection</span> <span class="ow">in</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;constraint&quot;</span><span class="p">):</span>
+ <span class="n">connections</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">connection</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">connection</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">connections</span><span class="p">)):</span>
+ <span class="n">constraintType</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">connection</span><span class="p">)</span>
+ <span class="n">driveAttrs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">targetWeights</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get those constraint target attributes for each constraint connection</span>
+ <span class="n">targets</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">connection</span> <span class="o">+</span> <span class="s2">&quot;.target&quot;</span><span class="p">,</span> <span class="n">mi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">targets</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">targets</span><span class="p">:</span>
+ <span class="c1"># get the names of the constraint targets</span>
+ <span class="n">targetWeights</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">connection</span> <span class="o">+</span> <span class="s2">&quot;.target[&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;].targetWeight&quot;</span><span class="p">,</span>
+ <span class="n">p</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="k">for</span> <span class="n">targetWeight</span> <span class="ow">in</span> <span class="n">targetWeights</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">targetWeight</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">&quot;W&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">driveAttrs</span><span class="p">:</span>
+ <span class="n">driveAttrs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
+
+ <span class="c1"># Setup constraint between the driveAttrs and the rigData[0] node</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">driveAttrs</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">attr</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">constraintType</span> <span class="o">==</span> <span class="s2">&quot;pointConstraint&quot;</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">pConst</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">pointConstraint</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">pConst</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">createdConstraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pConst</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">constraintType</span> <span class="o">==</span> <span class="s2">&quot;orientConstraint&quot;</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">oConst</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">orientConstraint</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">oConst</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">createdConstraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">oConst</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="n">constraintType</span> <span class="o">==</span> <span class="s2">&quot;parentConstraint&quot;</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">paConst</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">paConst</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">createdConstraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">paConst</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
+
+ <span class="c1"># get the names of the constraint targets</span>
+ <span class="k">for</span> <span class="n">const</span> <span class="ow">in</span> <span class="n">createdConstraints</span><span class="p">:</span>
+ <span class="n">constraintAttrs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">targets</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">const</span> <span class="o">+</span> <span class="s2">&quot;.target&quot;</span><span class="p">,</span> <span class="n">mi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">targets</span><span class="p">:</span>
+ <span class="n">constraintAttrs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">const</span> <span class="o">+</span> <span class="s2">&quot;.target[&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;].targetWeight&quot;</span><span class="p">,</span> <span class="n">p</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="c1"># setup connections between the parent bone constraints and the newly created constraints</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">constraintAttrs</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">constraintAttrs</span><span class="p">)):</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">targetWeights</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">constraintAttrs</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #set the state on the main network node</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">&quot;ART_RIG_ROOT.state&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="s2">&quot;ART_RIG_ROOT.state&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #hide all joints</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;joint&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #remove unused skin influences to optimize scene</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">mel</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="s2">&quot;removeAllUnusedSkinInfs()&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #save the file</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">)</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #execute post script</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.postScript"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.postScript">[docs]</a> <span class="k">def</span> <span class="nf">postScript</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> If there is a post-script to run, this will call on ART_BuildProgressUI.executeScript() to run the post-script.</span>
+<span class="sd"> Then it will call on ART_BuildProgressUI.completeBuild() which wraps up the build process and alerts the user</span>
+<span class="sd"> the build is done.</span>
+
+<span class="sd"> .. note:: Post-Scipts are used if you ever want to do something to your character after the rig gets built.</span>
+<span class="sd"> An example usage would be adding custom rigging to joints or controls in the scene, setting up custom</span>
+<span class="sd"> relationships or set-driven keys, etc.</span>
+
+<span class="sd"> .. seealso:: ART_BuildProgressUI.executeScript(), ART_BuildProgressUI.completeBuild()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get pre-script path from character node, if it exists</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.postScriptPath&quot;</span><span class="p">):</span>
+ <span class="n">scriptPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.postScriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Executing Post-Script..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">scriptPath</span><span class="p">)</span>
+
+ <span class="c1"># try to execute the pre-script</span>
+ <span class="n">status</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">executeScript</span><span class="p">(</span><span class="n">scriptPath</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">status</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">18</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; SUCCESS: Post-Script Was Successfully Executed..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">status</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; FAILED: Post-Script Was Not Successfully Executed..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">+=</span> <span class="mi">1</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;No Post-Script To Run..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+
+ <span class="c1"># update main progress bar</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+
+ <span class="c1"># capture model pose for rig controls</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">completeBuild</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_BuildProgress_UI.completeBuild"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.completeBuild">[docs]</a> <span class="k">def</span> <span class="nf">completeBuild</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Locks down all network nodes, saves the scene, and alerts user that the rig build is complete.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Cleaning Up..&quot;</span><span class="p">)</span>
+
+ <span class="c1"># go through each module instance, and lock down the nodes</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;rig_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">rigNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">numNodes</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">rigNodes</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setMaximum</span><span class="p">(</span><span class="n">numNodes</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">rigNodes</span><span class="p">:</span>
+ <span class="n">curVal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentTask</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">curVal</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># save scene</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">)</span>
+
+ <span class="c1"># iterate total progress</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">totalProgress</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+
+ <span class="c1"># add build info</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">18</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n\n</span><span class="s2">PUBLISH COMPLETE!&quot;</span><span class="p">)</span>
+
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setTextColor</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="c1"># get file name</span>
+ <span class="n">fileName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sceneName</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="s2">&quot;ART_RIG_ROOT.iconPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Assets Created: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">fileName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">iconPath</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">warnings</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; warnings&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">infoText</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; errors&quot;</span><span class="p">)</span>
+
+ <span class="c1"># tell user build is complete</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Information</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Rig Build Complete!&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;New Scene&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">YesRole</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Edit Rig&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">NoRole</span><span class="p">)</span>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">ret</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">ART_RigCreatorUI</span> <span class="k">as</span> <span class="nn">ART_RigCreatorUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_RigCreatorUI</span><span class="p">)</span>
+ <span class="n">ART_RigCreatorUI</span><span class="o">.</span><span class="n">createUI</span><span class="p">()</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorDock&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+
+ <span class="c1"># if the rigCreatorUI exists delete UI</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorDock&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorUi&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorDock&quot;</span><span class="p">,</span> <span class="n">control</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">new</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+<div class="viewcode-block" id="ART_BuildProgress_UI.executeScript"><a class="viewcode-back" href="../../buildProgress.html#Interfaces.ART_BuildProgressUI.ART_BuildProgress_UI.executeScript">[docs]</a> <span class="k">def</span> <span class="nf">executeScript</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scriptPath</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Takes a given script (mel or python) and runs it.</span>
+
+<span class="sd"> :param scriptPath: location of the script to be evaluated and ran.</span>
+
+<span class="sd"> :return: Whether or not the execution of the script failed or not.</span>
+
+<span class="sd"> .. seealso:: ART_BuildProgressUI.preScript(), ART_BuildProgressUI.postScript()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">sourceType</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="n">status</span> <span class="o">=</span> <span class="kc">False</span>
+
+ <span class="k">if</span> <span class="n">scriptPath</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;.py&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">sourceType</span> <span class="o">=</span> <span class="s2">&quot;python&quot;</span>
+
+ <span class="k">if</span> <span class="n">scriptPath</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;.mel&quot;</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">sourceType</span> <span class="o">=</span> <span class="s2">&quot;mel&quot;</span>
+
+ <span class="c1"># MEL</span>
+ <span class="k">if</span> <span class="n">sourceType</span> <span class="o">==</span> <span class="s2">&quot;mel&quot;</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">command</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="c1"># open the file, and for each line in the file, add it to our command string.</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">scriptPath</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
+ <span class="n">lines</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
+ <span class="n">command</span> <span class="o">+=</span> <span class="n">line</span>
+
+ <span class="kn">import</span> <span class="nn">maya.mel</span> <span class="k">as</span> <span class="nn">mel</span>
+ <span class="n">mel</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
+
+ <span class="c1"># save the file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">)</span>
+ <span class="n">status</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># PYTHON</span>
+ <span class="k">if</span> <span class="n">sourceType</span> <span class="o">==</span> <span class="s2">&quot;python&quot;</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">execfile</span><span class="p">(</span><span class="s2">&quot;&quot;</span> <span class="o">+</span> <span class="n">scriptPath</span> <span class="o">+</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+
+ <span class="c1"># save the file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">)</span>
+ <span class="n">status</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="k">return</span> <span class="n">status</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_ChangeModuleNameUI.html b/Documentation/build/_modules/Interfaces/ART_ChangeModuleNameUI.html
new file mode 100644
index 0000000..acda90b
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_ChangeModuleNameUI.html
@@ -0,0 +1,461 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_ChangeModuleNameUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_ChangeModuleNameUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="c1"># maya 2016&lt; maya2017&gt; compatability</span>
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken</span> <span class="k">as</span> <span class="nn">shiboken</span>
+<span class="k">except</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken2</span> <span class="k">as</span> <span class="nn">shiboken</span>
+
+
+<div class="viewcode-block" id="getMainWindow"><a class="viewcode-back" href="../../changeModName.html#Interfaces.ART_ChangeModuleNameUI.getMainWindow">[docs]</a><span class="k">def</span> <span class="nf">getMainWindow</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Returns a pointer to Maya&#39;s window as a QWidget.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">maya.OpenMayaUI</span> <span class="k">as</span> <span class="nn">mui</span>
+ <span class="n">pointer</span> <span class="o">=</span> <span class="n">mui</span><span class="o">.</span><span class="n">MQtUtil</span><span class="o">.</span><span class="n">mainWindow</span><span class="p">()</span>
+ <span class="c1"># pyside QMainWindow takes in a QWidget rather than QObject</span>
+ <span class="k">return</span> <span class="n">shiboken</span><span class="o">.</span><span class="n">wrapInstance</span><span class="p">(</span><span class="n">long</span><span class="p">(</span><span class="n">pointer</span><span class="p">),</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">)</span></div>
+
+
+<span class="n">windowTitle</span> <span class="o">=</span> <span class="s2">&quot;Change Module Name&quot;</span>
+<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">&quot;pyArtChangeModuleNameUi&quot;</span>
+
+
+<div class="viewcode-block" id="ART_ChangeModuleName_UI"><a class="viewcode-back" href="../../changeModName.html#Interfaces.ART_ChangeModuleNameUI.ART_ChangeModuleName_UI">[docs]</a><span class="k">class</span> <span class="nc">ART_ChangeModuleName_UI</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class allows the user to change the prefix or suffix or both, of a given module. It is found within the</span>
+<span class="sd"> skeletonSettingsUI of an individual module in the Rig Creator.</span>
+
+<span class="sd"> .. image:: /images/changeModName.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_ChangeModuleName_UI.__init__"><a class="viewcode-back" href="../../changeModName.html#Interfaces.ART_ChangeModuleNameUI.ART_ChangeModuleName_UI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">baseName</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">suffix</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, taking in current module information, and builds the interface.</span>
+
+<span class="sd"> :param baseName: The base name of the module, found on the network node attribute.</span>
+<span class="sd"> :param moduleInst: The instance in memory of the module whose name is to change.</span>
+<span class="sd"> :param rigUiInst: The instance in memory of the Rig Creator UI from which this class was called.</span>
+<span class="sd"> :param prefix: The existing prefix of the module name.</span>
+<span class="sd"> :param suffix: The existing suffix of the module name.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_ChangeModuleName_UI</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create class variables</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">baseName</span> <span class="o">=</span> <span class="n">baseName</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span> <span class="o">=</span> <span class="n">moduleInst</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span> <span class="o">=</span> <span class="n">rigUiInst</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixInc</span> <span class="o">=</span> <span class="n">prefix</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixInc</span> <span class="o">=</span> <span class="n">suffix</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="n">windowObject</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">windowTitle</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="c1"># create the prefix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Prefix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixInc</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">)</span>
+
+ <span class="c1"># create the suffix pair of fields</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Suffix: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffixLabel</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffixInc</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffixForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot connection</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updatePreview</span><span class="p">)</span>
+
+ <span class="c1"># spacer</span>
+ <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span>
+
+ <span class="c1"># realtime preview of final module name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Preview: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixInc</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">baseName</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffixInc</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignHCenter</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">LabelRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">previewLabel</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewForm</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFormLayout</span><span class="o">.</span><span class="n">FieldRole</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="p">)</span>
+
+ <span class="c1"># set preview font</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+
+ <span class="n">spacerItem1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Minimum</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">spacerItem1</span><span class="p">)</span>
+
+ <span class="c1"># update button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;UPDATE&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">285</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">285</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot on create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">applyModuleNameChange</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ChangeModuleName_UI.updatePreview"><a class="viewcode-back" href="../../changeModName.html#Interfaces.ART_ChangeModuleNameUI.ART_ChangeModuleName_UI.updatePreview">[docs]</a> <span class="k">def</span> <span class="nf">updatePreview</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Updates the QLabel with the current prefix + basename + suffix, adding in underscores where needed.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+
+ <span class="n">string</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">baseName</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ChangeModuleName_UI.applyModuleNameChange"><a class="viewcode-back" href="../../changeModName.html#Interfaces.ART_ChangeModuleNameUI.ART_ChangeModuleName_UI.applyModuleNameChange">[docs]</a> <span class="k">def</span> <span class="nf">applyModuleNameChange</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Checks to make sure a module doesn&#39;t exist with the new name, and if not, updates naming of the module in a</span>
+<span class="sd"> multitude of places. Any UI elements, joint movers, attribute values (like .Created_Bones), etc.</span>
+
+<span class="sd"> .. note::</span>
+<span class="sd"> The following things get updated:</span>
+<span class="sd"> * QGroupBox label of the SkeletonSettingsUI</span>
+<span class="sd"> * Network Node .moduleName attribute</span>
+<span class="sd"> * Module Instance variable of self.name gets updated</span>
+<span class="sd"> * Created_Bones attribute values</span>
+<span class="sd"> * Joint Mover Nodes</span>
+<span class="sd"> * Rig Creator Outliner names for module</span>
+<span class="sd"> * Selection Script Job for outliner</span>
+<span class="sd"> * Any modules&#39; attributes that have a value that matches the old name (like parent module bone)</span>
+<span class="sd"> * Any modules that are a mirror of this module, and their mirrorModule attribute value</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># check to see if a module already has that name. If so, return out and do not continue</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">validName</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;A module with that name already exists. Please enter a unique name for the module&quot;</span>
+
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">()):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">confirmDialog</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">&quot;Name Exists&quot;</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span> <span class="n">icon</span><span class="o">=</span><span class="s2">&quot;critical&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="c1"># update groupbox label</span>
+ <span class="n">originalName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">groupBox</span><span class="o">.</span><span class="n">setTitle</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">()))</span>
+
+ <span class="c1"># update network node moduleName attribute</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">()),</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># update self.name for rig module</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">previewName</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="c1"># update created bones attribute values</span>
+ <span class="n">prefix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffix</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">prefix</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">suffix</span> <span class="o">=</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">suffix</span>
+
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="n">attrString</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">createdBones</span><span class="p">:</span>
+ <span class="n">niceName</span> <span class="o">=</span> <span class="n">bone</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefixInc</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">niceName</span> <span class="o">=</span> <span class="n">bone</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefixInc</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">suffixInc</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">niceName</span> <span class="o">=</span> <span class="n">niceName</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">suffixInc</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="n">attrString</span> <span class="o">+=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">niceName</span> <span class="o">+</span> <span class="n">suffix</span> <span class="o">+</span> <span class="s2">&quot;::&quot;</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">,</span> <span class="n">attrString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># joint mover renaming</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">jointMoverNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;transform&quot;</span><span class="p">)</span>
+ <span class="n">constraints</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;pointConstraint&quot;</span><span class="p">,</span> <span class="s2">&quot;orientConstraint&quot;</span><span class="p">,</span> <span class="s2">&quot;parentConstraint&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">jointMoverNodes</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">constraints</span><span class="p">:</span>
+ <span class="n">locked</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">locked</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">nodeName</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="n">originalName</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">newName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="n">nodeName</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">newName</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">locked</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># update outliner names</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">findAndRenameOutlinerChildren</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">&quot;_treeModule&quot;</span><span class="p">],</span>
+ <span class="n">originalName</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">outlinerWidgets</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">originalName</span> <span class="o">+</span> <span class="s2">&quot;_treeModule&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+
+ <span class="c1"># find module&#39;s selection scriptJob and delete it</span>
+ <span class="n">jobs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">lj</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">job</span> <span class="ow">in</span> <span class="n">jobs</span><span class="p">:</span>
+ <span class="n">compareString</span> <span class="o">=</span> <span class="n">job</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">)</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">compareString</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">(</span><span class="n">kill</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">scriptJob</span><span class="p">)</span>
+ <span class="k">break</span>
+
+ <span class="c1"># replace module&#39;s outliner control entries with the new control name</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">outlinerControls</span><span class="p">:</span>
+ <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">originalName</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+
+ <span class="c1"># create the selection script job again</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">createScriptJob</span><span class="p">()</span>
+
+ <span class="c1"># find any modules using any of the created joints from this module that match the OLD name</span>
+ <span class="n">createdJoints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">getAllModules</span>
+
+ <span class="k">for</span> <span class="n">mod</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;parentModuleBone&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">createdBones</span><span class="p">:</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">createdBones</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+
+ <span class="c1"># update those modules&#39; network node parentModuleBone attribute</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">createdJoints</span><span class="p">[</span><span class="n">index</span><span class="p">],</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># and also those modules&#39; skeletonSettingsUI currentParent label</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">==</span> <span class="n">mod</span><span class="p">:</span>
+ <span class="c1"># find the current groupBox for this module</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> <span class="o">==</span> <span class="n">modName</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+
+ <span class="c1"># relaunch the skeleton settings UI with new info</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">modName</span><span class="p">)</span>
+
+ <span class="c1"># update mirrorModule field</span>
+ <span class="k">for</span> <span class="n">mod</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;mirrorModule&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="n">originalName</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.mirrorModule&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># and also those modules&#39; skeletonSettingsUI currentParent label</span>
+ <span class="n">modName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">mod</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">networkNode</span> <span class="o">==</span> <span class="n">mod</span><span class="p">:</span>
+ <span class="c1"># find the current groupBox for this module</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">title</span><span class="p">()</span> <span class="o">==</span> <span class="n">modName</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span><span class="o">.</span><span class="n">moduleSettingsLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+
+ <span class="c1"># relaunch the skeleton settings UI with new info</span>
+ <span class="n">each</span><span class="o">.</span><span class="n">skeletonSettings_UI</span><span class="p">(</span><span class="n">modName</span><span class="p">)</span>
+
+ <span class="c1"># delete the UI</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">mayaWindow</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|&quot;</span> <span class="o">+</span> <span class="n">windowObject</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_ChangeModuleParentUI.html b/Documentation/build/_modules/Interfaces/ART_ChangeModuleParentUI.html
new file mode 100644
index 0000000..69cdadf
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_ChangeModuleParentUI.html
@@ -0,0 +1,340 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_ChangeModuleParentUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_ChangeModuleParentUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="c1"># maya 2016&lt; maya2017&gt; compatability</span>
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken</span> <span class="k">as</span> <span class="nn">shiboken</span>
+<span class="k">except</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken2</span> <span class="k">as</span> <span class="nn">shiboken</span>
+
+
+<div class="viewcode-block" id="getMainWindow"><a class="viewcode-back" href="../../changeModParent.html#Interfaces.ART_ChangeModuleParentUI.getMainWindow">[docs]</a><span class="k">def</span> <span class="nf">getMainWindow</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Returns a pointer to Maya&#39;s window as a QWidget.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">maya.OpenMayaUI</span> <span class="k">as</span> <span class="nn">mui</span>
+ <span class="n">pointer</span> <span class="o">=</span> <span class="n">mui</span><span class="o">.</span><span class="n">MQtUtil</span><span class="o">.</span><span class="n">mainWindow</span><span class="p">()</span>
+ <span class="c1"># pyside QMainWindow takes in a QWidget rather than QObject</span>
+ <span class="k">return</span> <span class="n">shiboken</span><span class="o">.</span><span class="n">wrapInstance</span><span class="p">(</span><span class="n">long</span><span class="p">(</span><span class="n">pointer</span><span class="p">),</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">)</span></div>
+
+
+<span class="n">windowTitle</span> <span class="o">=</span> <span class="s2">&quot;Change Module Parent&quot;</span>
+<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">&quot;pyArtChangeModuleParentUi&quot;</span>
+
+
+<div class="viewcode-block" id="ART_ChangeModuleParent_UI"><a class="viewcode-back" href="../../changeModParent.html#Interfaces.ART_ChangeModuleParentUI.ART_ChangeModuleParent_UI">[docs]</a><span class="k">class</span> <span class="nc">ART_ChangeModuleParent_UI</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class allows the user to change the parent module bone of a given module. It is found within the</span>
+<span class="sd"> skeletonSettingsUI of an individual module in the Rig Creator.</span>
+
+<span class="sd"> .. image:: /images/changeModParent.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_ChangeModuleParent_UI.__init__"><a class="viewcode-back" href="../../changeModParent.html#Interfaces.ART_ChangeModuleParentUI.ART_ChangeModuleParent_UI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">currentParent</span><span class="p">,</span> <span class="n">moduleInst</span><span class="p">,</span> <span class="n">rigUiInst</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, taking in current module information, and builds the interface.</span>
+
+<span class="sd"> :param currentParent: The current module parent bone of this module.</span>
+<span class="sd"> :param moduleInst: The instance in memory of the module whose name is to change.</span>
+<span class="sd"> :param rigUiInst: The instance in memory of the Rig Creator UI from which this class was called.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_ChangeModuleParent_UI</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create class variables</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">currentParent</span> <span class="o">=</span> <span class="n">currentParent</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span> <span class="o">=</span> <span class="n">moduleInst</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rigUiInst</span> <span class="o">=</span> <span class="n">rigUiInst</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="n">windowObject</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">windowTitle</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+
+ <span class="c1"># create the background image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+
+ <span class="c1"># create the layout for the widgets</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="n">label</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Choose New Parent:&quot;</span><span class="p">)</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="s2">&quot;Search..&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">searchList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>
+
+ <span class="c1"># add items to comboBox</span>
+ <span class="n">bones</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">getViableParents</span><span class="p">()</span>
+
+ <span class="c1"># get our own bones</span>
+ <span class="n">modBones</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">bones</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">modBones</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">==</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">bones</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">setCurrentRow</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+ <span class="c1"># update button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;UPDATE&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">230</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">230</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># hookup signal/slot on create button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">applyModuleParentChange</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateBtn</span><span class="o">.</span><span class="n">setFocus</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ChangeModuleParent_UI.searchList"><a class="viewcode-back" href="../../changeModParent.html#Interfaces.ART_ChangeModuleParentUI.ART_ChangeModuleParent_UI.searchList">[docs]</a> <span class="k">def</span> <span class="nf">searchList</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Reads the text in the QLineEdit and searches the list widget for any items containing the search text,</span>
+<span class="sd"> hiding all listWidgetItems that do not contain the search text.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">searchText</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneSearch</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">lwItem</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">lwItem</span><span class="o">.</span><span class="n">text</span><span class="p">()</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">searchText</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">lwItem</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">lwItem</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ChangeModuleParent_UI.applyModuleParentChange"><a class="viewcode-back" href="../../changeModParent.html#Interfaces.ART_ChangeModuleParentUI.ART_ChangeModuleParent_UI.applyModuleParentChange">[docs]</a> <span class="k">def</span> <span class="nf">applyModuleParentChange</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gets the new parent from the selected ListWidgetItem text and then checks to make sure the selected parent</span>
+<span class="sd"> isn&#39;t a bone that is part of the module we&#39;re trying to change the parent on. Then updates text and attribute</span>
+<span class="sd"> values where needed.</span>
+
+<span class="sd"> .. note::</span>
+<span class="sd"> The following things get updated:</span>
+<span class="sd"> * Current Parent text item in the Skeleton Settings UI</span>
+<span class="sd"> * Network Node .parentModuleBone attribute</span>
+<span class="sd"> * Constrains nodes based on new parenting relationship</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get new parent</span>
+ <span class="n">newParent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boneList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="c1"># check to make sure new parent is not in this module&#39;s created bones list</span>
+ <span class="n">createdBones</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnCreatedJoints</span>
+
+ <span class="k">if</span> <span class="n">newParent</span> <span class="ow">in</span> <span class="n">createdBones</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">confirmDialog</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">&quot;Error&quot;</span><span class="p">,</span> <span class="n">icon</span><span class="o">=</span><span class="s2">&quot;critical&quot;</span><span class="p">,</span>
+ <span class="n">message</span><span class="o">=</span><span class="s2">&quot;Cannot parent a module to a bone created by the module.&quot;</span><span class="p">)</span>
+ <span class="k">return</span>
+
+ <span class="c1"># update current parent text</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">currentParent</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">newParent</span><span class="p">)</span>
+
+ <span class="c1"># update network node parentModuleBone attribute</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">returnNetworkNode</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.parentModuleBone&quot;</span><span class="p">,</span> <span class="n">newParent</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># delete the existing bone connection and reparent to the new parent and recreate the bone connection</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_parentGrp&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_parentGrp&quot;</span><span class="p">)</span>
+
+ <span class="c1"># parent under the new parent</span>
+ <span class="n">moverGrp</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.moduleName&quot;</span><span class="p">)</span>
+ <span class="n">moverGrp</span> <span class="o">=</span> <span class="n">moverGrp</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span>
+
+ <span class="k">if</span> <span class="n">newParent</span> <span class="o">==</span> <span class="s2">&quot;root&quot;</span><span class="p">:</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+ <span class="n">offsetMover</span> <span class="o">=</span> <span class="s2">&quot;root_mover&quot;</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">newParent</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">offsetMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">newParent</span><span class="p">)</span>
+
+ <span class="c1"># create the new bone representation</span>
+ <span class="n">childMover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findOffsetMoverFromName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createBoneConnection</span><span class="p">(</span><span class="n">offsetMover</span><span class="p">,</span> <span class="n">childMover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+
+ <span class="c1"># delete the old constraint and create the new one</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp_parentConstraint*&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp_parentConstraint*&quot;</span><span class="p">)</span>
+
+ <span class="n">networkNodes</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+ <span class="n">mover</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findMoverNodeFromJointName</span><span class="p">(</span><span class="n">networkNodes</span><span class="p">,</span> <span class="n">newParent</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">parentConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp_scaleConstraint*&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp_scaleConstraint*&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">mover</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">scaleConstraint</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modInst</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;_mover_grp&quot;</span><span class="p">,</span> <span class="n">mo</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># delete the UI</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">getMainWindow</span><span class="p">()</span>
+ <span class="n">mayaWindow</span> <span class="o">=</span> <span class="n">mayaWindow</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="n">mayaWindow</span> <span class="o">+</span> <span class="s2">&quot;|&quot;</span> <span class="o">+</span> <span class="n">windowObject</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_DebugRigs.html b/Documentation/build/_modules/Interfaces/ART_DebugRigs.html
new file mode 100644
index 0000000..1d52cab
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_DebugRigs.html
@@ -0,0 +1,298 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_DebugRigs &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_DebugRigs</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">System.riggingUtils</span> <span class="k">as</span> <span class="nn">riggingUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_DebugRigs"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs">[docs]</a><span class="k">class</span> <span class="nc">ART_DebugRigs</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class is used in developing rigs for modules and quickly testing them without having to go</span>
+<span class="sd"> through the entire build/publish process.</span>
+
+<span class="sd"> .. image:: /images/debugRigs.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_DebugRigs.__init__"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiate the class, getting the QSettings, and building the interface.</span>
+
+<span class="sd"> :param mainUI: The instance of the Rig Creator UI from which this class was called.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+
+ <span class="c1"># images</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">imageBkgrd</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/toolbar_background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">imageBtnBkrd</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/blue_field_background.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frameBackground</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/field_background.png&quot;</span><span class="p">))</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_DebugRigsWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_DebugRigsWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_DebugRigs.buildUI"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs.buildUI">[docs]</a> <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Build the UI, listing all modules in the scene that make up the asset for the user to select and build rigs</span>
+<span class="sd"> for the selected.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_DebugRigsWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Build Rigs&quot;</span><span class="p">)</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># set size policy</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">300</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">300</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">300</span><span class="p">))</span>
+
+ <span class="c1"># create the QFrame for this page</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">background</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background</span><span class="p">)</span>
+
+ <span class="c1"># create the list on the left and add the modules to the list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">mod</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">mod</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setData</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">,</span> <span class="n">mod</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+
+ <span class="c1"># create our buttons on the right</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="p">)</span>
+
+ <span class="n">infoText</span> <span class="o">=</span> <span class="s2">&quot;This tool is only for testing rigs in development. &quot;</span>
+ <span class="n">infoText</span> <span class="o">+=</span> <span class="s2">&quot;It will leave behind nodes in your scene that you do NOT want to publish with. &quot;</span>
+ <span class="n">infoText</span> <span class="o">+=</span> <span class="s2">&quot;When using this tool, it is advised to open a clean scene to publish your final asset.&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">info</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="o">.</span><span class="n">setWordWrap</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">125</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">125</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">info</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">infoText</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Build Rigs For Selected&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">buildRigs</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Remove Selected Rigs&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">deleteButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deleteRig</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Close&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_DebugRigs.buildRigs"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs.buildRigs">[docs]</a> <span class="k">def</span> <span class="nf">buildRigs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the rigs for the selected module by calling on that module&#39;s buildRig function.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+
+ <span class="c1"># call on inst build rigs functions</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="s2">&quot;driver_root&quot;</span><span class="p">):</span>
+ <span class="n">riggingUtils</span><span class="o">.</span><span class="n">createDriverSkeleton</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">buildRig</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_DebugRigs.deleteRig"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs.deleteRig">[docs]</a> <span class="k">def</span> <span class="nf">deleteRig</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Deletes the rigs for the selected module by calling on that module&#39;s deleteRig function.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">moduleList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">UserRole</span><span class="p">)</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">deleteRig</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_DebugRigs.close"><a class="viewcode-back" href="../../debugRigs.html#Interfaces.ART_DebugRigs.ART_DebugRigs.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Close the interface and delete the window.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_DebugRigsWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_DebugRigsWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_EditRigUI.html b/Documentation/build/_modules/Interfaces/ART_EditRigUI.html
new file mode 100644
index 0000000..543994d
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_EditRigUI.html
@@ -0,0 +1,666 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_EditRigUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_EditRigUI</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+<span class="c1"># maya 2016&lt; maya2017&gt; compatability</span>
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken</span> <span class="k">as</span> <span class="nn">shiboken</span>
+<span class="k">except</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">shiboken2</span> <span class="k">as</span> <span class="nn">shiboken</span>
+
+
+<div class="viewcode-block" id="getMainWindow"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.getMainWindow">[docs]</a><span class="k">def</span> <span class="nf">getMainWindow</span><span class="p">():</span>
+
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Get Maya’s window as a QWidget and return the item in memory.</span>
+
+<span class="sd"> :return: a QWidget of Maya’s window</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="kn">import</span> <span class="nn">maya.OpenMayaUI</span> <span class="k">as</span> <span class="nn">mui</span>
+ <span class="n">pointer</span> <span class="o">=</span> <span class="n">mui</span><span class="o">.</span><span class="n">MQtUtil</span><span class="o">.</span><span class="n">mainWindow</span><span class="p">()</span>
+ <span class="c1"># pyside QMainWindow takes in a QWidget rather than QObject</span>
+ <span class="k">return</span> <span class="n">shiboken</span><span class="o">.</span><span class="n">wrapInstance</span><span class="p">(</span><span class="n">long</span><span class="p">(</span><span class="n">pointer</span><span class="p">),</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">)</span></div>
+
+
+<span class="n">windowTitle</span> <span class="o">=</span> <span class="s2">&quot;Edit Rig&quot;</span>
+<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">&quot;pyArtEditRigWin&quot;</span>
+
+
+<div class="viewcode-block" id="ART_EditRigUI"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI">[docs]</a><span class="k">class</span> <span class="nc">ART_EditRigUI</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class builds a tool that allows a user to Edit a Rig or Add Character for Animation. Both functions use the</span>
+<span class="sd"> same interface. The title and button text get swapped out depending on which situation has been called for by</span>
+<span class="sd"> the A.R.T.2.0 menu.</span>
+
+<span class="sd"> .. image:: /images/editRig.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_EditRigUI.__init__"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">edit</span><span class="p">,</span> <span class="n">add</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings and building the interface.</span>
+
+<span class="sd"> :param edit: Whether or not the operation is to edit the rig.</span>
+<span class="sd"> :param add: Whether or not the operation is to add the character for animation.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_EditRigUI</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">edit</span> <span class="o">=</span> <span class="n">edit</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">add</span> <span class="o">=</span> <span class="n">add</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;scriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.createUI"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.createUI">[docs]</a> <span class="k">def</span> <span class="nf">createUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the UI, listing options for choosing a project and showing all assets belonging to that project for</span>
+<span class="sd"> edit or add.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># fonts</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">fontSmall</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">fontSmall</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span>
+ <span class="n">fontSmall</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="c1"># size policies</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #create the main widget</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="n">windowObject</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">edit</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">windowTitle</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Add Rig For Animation&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setAttribute</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">WA_DeleteOnClose</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">400</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+
+ <span class="c1"># create the QFrame</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #create two VBox Layouts to create 2 columns</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftColumn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">leftColumn</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">widgetLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #left column : project comboBox, group comboBox, listWidget of characters</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentIndexChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">populateGroups</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">currentIndexChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">populateCharacters</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">leftColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">itemClicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">populateIcon</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">populateProjects</span><span class="p">()</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #right column: icon frame, edit button/add button, close button</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="p">)</span>
+
+ <span class="c1"># default image</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">defaultPixMap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/noCharacter.png&quot;</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setPixmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defaultPixMap</span><span class="p">)</span>
+
+ <span class="c1"># if edit:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">edit</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Edit Selected&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">editSelected</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">editButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># if add:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Add Selected&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addSelected</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Close&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">rightColumn</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">closeUI</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.populateProjects"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.populateProjects">[docs]</a> <span class="k">def</span> <span class="nf">populateProjects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Find all projects on disk (using the project path setting) and add each project to the QComboBox. Then,</span>
+<span class="sd"> call on populateGroups.</span>
+
+<span class="sd"> .. seealso:: ART_EditRigUI.populateGroups()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># if the project path doesn&#39;t exist on disk, create it</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">):</span>
+ <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">)</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">existingProjects</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">)</span>
+ <span class="n">folders</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># find out which returned items are directories</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">existingProjects</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">each</span><span class="p">)):</span>
+ <span class="n">folders</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># add each project to the combo box</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">folders</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># find selected project and populate groups</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">populateGroups</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.populateGroups"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.populateGroups">[docs]</a> <span class="k">def</span> <span class="nf">populateGroups</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Given the selected project, populate any groups for that project (using the project path from QSettings) and</span>
+<span class="sd"> add them to the groups QComboBox.</span>
+
+<span class="sd"> Then, call on populateCharacters.</span>
+
+<span class="sd"> .. seealso:: ART_EditRigUI.populateCharacters()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">selectedProject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">project</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">selectedProject</span><span class="p">)</span>
+ <span class="n">existingGroups</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">project</span><span class="p">)</span>
+ <span class="n">folders</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># find out which returned items are directories</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">existingGroups</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">project</span><span class="p">,</span> <span class="n">each</span><span class="p">)):</span>
+ <span class="n">folders</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># otherwise, add each project to the combo box</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">folders</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># populate characters</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">populateCharacters</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.populateCharacters"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.populateCharacters">[docs]</a> <span class="k">def</span> <span class="nf">populateCharacters</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Given the selected project and group, populate the QListWidget with any assets found using that information.</span>
+<span class="sd"> The project path comes from the QSettings, the group is a subfolder of the project.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># add project button</span>
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">selectedProject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">selectedProject</span><span class="p">)</span>
+ <span class="n">selectedGroup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selectedGroup</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedGroup</span><span class="p">)</span>
+
+ <span class="n">existingCharacters</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">fullPath</span><span class="p">)</span>
+ <span class="n">files</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># find out which returned items are directories</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">existingCharacters</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">each</span><span class="p">)):</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;ma&quot;</span><span class="p">:</span>
+ <span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># otherwise, add each project to the combo box</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;.ma&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.populateIcon"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.populateIcon">[docs]</a> <span class="k">def</span> <span class="nf">populateIcon</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Given the selected character, display the correct icon for that character in the UI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># default</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setPixmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defaultPixMap</span><span class="p">)</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">selectedProject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">selectedProject</span><span class="p">)</span>
+ <span class="n">selectedGroup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selectedGroup</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedGroup</span><span class="p">)</span>
+
+ <span class="n">selectedCharacter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedCharacter</span> <span class="o">+</span> <span class="s2">&quot;.png&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fullPath</span><span class="p">):</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="n">fullPath</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">characterIcon</span><span class="o">.</span><span class="n">setPixmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defaultPixMap</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.editSelected"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.editSelected">[docs]</a> <span class="k">def</span> <span class="nf">editSelected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Find the selected character, and open that file for edit. The path is constructed using the QSettings info,</span>
+<span class="sd"> with any group as a subfolder, and lastly the selected asset/character as the last part of the path.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">selectedProject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">selectedProject</span><span class="p">)</span>
+ <span class="n">selectedGroup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selectedGroup</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedGroup</span><span class="p">)</span>
+
+ <span class="n">selectedCharacter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">mayaFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedCharacter</span> <span class="o">+</span> <span class="s2">&quot;.ma&quot;</span><span class="p">)</span>
+ <span class="n">iconFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedCharacter</span> <span class="o">+</span> <span class="s2">&quot;.png&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">iconFile</span><span class="p">):</span>
+ <span class="n">launchUI</span> <span class="o">=</span> <span class="kc">False</span>
+
+ <span class="c1"># get current file</span>
+ <span class="n">currentFile</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sceneName</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">currentFile</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">modified</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span>
+ <span class="n">proceed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsavedChanges</span><span class="p">(</span><span class="n">currentFile</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">proceed</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s2">&quot;v=0&quot;</span><span class="p">,</span> <span class="n">ignoreVersion</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span>
+ <span class="n">f</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">launchUI</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="n">proceed</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s2">&quot;v=0&quot;</span><span class="p">,</span> <span class="n">ignoreVersion</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span>
+ <span class="n">f</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">launchUI</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="n">proceed</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
+ <span class="k">return</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="s2">&quot;v=0&quot;</span><span class="p">,</span> <span class="n">ignoreVersion</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span>
+ <span class="n">f</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">launchUI</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="n">launchUI</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">Interfaces.ART_RigCreatorUI</span> <span class="k">as</span> <span class="nn">ART_RigCreatorUI</span>
+ <span class="n">reload</span><span class="p">(</span><span class="n">ART_RigCreatorUI</span><span class="p">)</span>
+ <span class="n">ART_RigCreatorUI</span><span class="o">.</span><span class="n">createUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.addSelected"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.addSelected">[docs]</a> <span class="k">def</span> <span class="nf">addSelected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds the selected character, and references that file into the currently opened scene. The path is</span>
+<span class="sd"> constructed using the QSettings info, with any group as a subfolder, and lastly the selected asset/character</span>
+<span class="sd"> as the last part of the path.</span>
+
+<span class="sd"> Also handles namespaces, adding the new namespace to the network node of the added asset, and launches the</span>
+<span class="sd"> animationUI.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get a list of the existing folders in projects</span>
+ <span class="n">selectedProject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">projectMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">selectedProject</span><span class="p">)</span>
+ <span class="n">selectedGroup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupMenu</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selectedGroup</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+ <span class="n">fullPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedGroup</span><span class="p">)</span>
+
+ <span class="n">selectedCharacter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">characterList</span><span class="o">.</span><span class="n">currentItem</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">mayaFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedCharacter</span> <span class="o">+</span> <span class="s2">&quot;.ma&quot;</span><span class="p">)</span>
+ <span class="n">iconFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="n">fullPath</span><span class="p">,</span> <span class="n">selectedCharacter</span> <span class="o">+</span> <span class="s2">&quot;.png&quot;</span><span class="p">)</span>
+
+ <span class="c1"># reference in the selected character if the file exists on drive</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">iconFile</span><span class="p">):</span>
+
+ <span class="c1"># find existing namespaces in scene</span>
+ <span class="n">namespaces</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">namespaceInfo</span><span class="p">(</span><span class="n">listOnlyNamespaces</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># reference the rig file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">mayaFile</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span> <span class="n">loadReferenceDepth</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="n">namespace</span><span class="o">=</span><span class="n">selectedCharacter</span><span class="p">,</span>
+ <span class="n">options</span><span class="o">=</span><span class="s2">&quot;v=0&quot;</span><span class="p">)</span>
+
+ <span class="c1"># clear selection and fit view</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">clear</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">viewFit</span><span class="p">()</span>
+ <span class="n">panels</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getPanel</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;modelPanel&#39;</span><span class="p">)</span>
+
+ <span class="c1"># turn on smooth shading</span>
+ <span class="k">for</span> <span class="n">panel</span> <span class="ow">in</span> <span class="n">panels</span><span class="p">:</span>
+ <span class="n">editor</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">modelPanel</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">modelEditor</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">modelEditor</span><span class="p">(</span><span class="n">editor</span><span class="p">,</span> <span class="n">edit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">displayAppearance</span><span class="o">=</span><span class="s2">&quot;smoothShaded&quot;</span><span class="p">,</span> <span class="n">displayTextures</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+ <span class="n">textures</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># find new namespaces in scene to figure out the namespace that was created upon referencing the</span>
+ <span class="c1"># character</span>
+ <span class="n">newCharacterName</span> <span class="o">=</span> <span class="n">selectedCharacter</span>
+ <span class="n">newNamespaces</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">namespaceInfo</span><span class="p">(</span><span class="n">listOnlyNamespaces</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">newNamespaces</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
+ <span class="n">newCharacterName</span> <span class="o">=</span> <span class="n">name</span>
+
+ <span class="c1"># add an attribute to the rig root (if needed) and set the namespace attr to the newCharacterName</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">newCharacterName</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT&quot;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">newCharacterName</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.namespace&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">newCharacterName</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT&quot;</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;namespace&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">newCharacterName</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.namespace&quot;</span><span class="p">,</span> <span class="n">newCharacterName</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># delete any interfaces that may be up</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeUI</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">dockControl</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorDock&quot;</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorUi&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorUi&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtRigCreatorDock&quot;</span><span class="p">,</span> <span class="n">control</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># launch anim UI</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">stylesheetDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span><span class="p">,</span> <span class="s2">&quot;Interfaces/StyleSheets/&quot;</span><span class="p">)</span>
+ <span class="n">stylesheets</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">sheet</span> <span class="ow">in</span> <span class="n">stylesheets</span><span class="p">:</span>
+ <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">writeQSS</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">,</span> <span class="n">sheet</span><span class="p">))</span>
+
+ <span class="kn">import</span> <span class="nn">Interfaces.ART_AnimationUI</span> <span class="k">as</span> <span class="nn">ART_AnimationUI</span>
+ <span class="n">ART_AnimationUI</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.unsavedChanges"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.unsavedChanges">[docs]</a> <span class="k">def</span> <span class="nf">unsavedChanges</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Displays a message box that warns the user of unsaved file changed and returns their response.</span>
+
+<span class="sd"> :return: Returns the user response (Save, Don&#39;t Save, Cancel)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># message box for letting user know current file has unsaved changes</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Warning</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Current File Has Unsaved Changes!&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Save Changes&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">YesRole</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Don&#39;t Save&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">NoRole</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">addButton</span><span class="p">(</span><span class="s2">&quot;Cancel&quot;</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">NoRole</span><span class="p">)</span>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">return</span> <span class="n">ret</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_EditRigUI.closeUI"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.ART_EditRigUI.closeUI">[docs]</a> <span class="k">def</span> <span class="nf">closeUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Closes and deletes the interface for the class.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
+
+
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="run"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.run">[docs]</a><span class="k">def</span> <span class="nf">run</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an instance of the class for Editing a rig. The ARTv2 menu calls on this function.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">gui</span> <span class="o">=</span> <span class="n">ART_EditRigUI</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="n">gui</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="runAdd"><a class="viewcode-back" href="../../editRig.html#Interfaces.ART_EditRigUI.runAdd">[docs]</a><span class="k">def</span> <span class="nf">runAdd</span><span class="p">():</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an instance of the class for adding a rig for animation. The artv2 menu calls this function.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyArtEditRigWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">gui</span> <span class="o">=</span> <span class="n">ART_EditRigUI</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="n">getMainWindow</span><span class="p">())</span>
+ <span class="n">gui</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_ExportMeshes.html b/Documentation/build/_modules/Interfaces/ART_ExportMeshes.html
new file mode 100644
index 0000000..1c26fad
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_ExportMeshes.html
@@ -0,0 +1,1829 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_ExportMeshes &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_ExportMeshes</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_ExportMeshes"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes">[docs]</a><span class="k">class</span> <span class="nc">ART_ExportMeshes</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class is used to export skeletal meshes and skeletal mesh LODs.</span>
+
+<span class="sd"> The UI has a robust suite of tools for managing LODs, bone removal for LODs, choosing</span>
+<span class="sd"> which meshes are associated with a LOD, where weighting from removed bones will get transferred,</span>
+<span class="sd"> and setting/viewing LOD poses (useful if you wanted to remove finger bones for a LOD, but not have</span>
+<span class="sd"> &quot;paddle hands&quot;</span>
+
+<span class="sd"> .. image:: /images/exportMeshes.png</span>
+
+<span class="sd"> A look at the LOD tools for transferring weighting and managing LOD poses:</span>
+
+<span class="sd"> .. image:: /images/lodTool.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_ExportMeshes.__init__"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mainUI</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Instantiates the class, getting the QSettings, presenting a QMessageBox about saving the current file,</span>
+<span class="sd"> creates a temporary file to do the export work out of (stripping out the rig and removing all connections</span>
+<span class="sd"> from joints), set the model pose, then calls on the UI build.</span>
+
+<span class="sd"> :param mainUI: Instance of the Rig Creator interface, from which this class was called.</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.buildUI(), ART_ExportMeshes.populateUI()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_ExportMeshes</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMeshesWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMeshesWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># get settings</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;scriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="c1"># class vars</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span> <span class="o">=</span> <span class="n">mainUI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">lodPoseDict</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="c1"># get current file</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveFile</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sceneName</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># message box for confirming save action</span>
+ <span class="n">msgBax</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span>
+ <span class="s2">&quot;Please make sure any changes to the current file are saved before continuing. This process will be &quot;</span>
+ <span class="s2">&quot;creating a temporary file to do all of the exporting from.&quot;</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Warning</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setStandardButtons</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span> <span class="o">|</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Cancel</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setDefaultButton</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span><span class="p">)</span>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">msgBax</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">ret</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span><span class="p">:</span>
+
+ <span class="c1"># save file as a new temporary file</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tempFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">saveFile</span><span class="p">),</span> <span class="s2">&quot;exportFile.ma&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">rename</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">tempFile</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># remove all skeleton connections</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;root&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span>
+ <span class="n">connT</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">connectionInfo</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.translate&quot;</span><span class="p">,</span> <span class="n">sourceFromDestination</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">connT</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">disconnectAttr</span><span class="p">(</span><span class="n">connT</span><span class="p">,</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.translate&quot;</span><span class="p">)</span>
+ <span class="n">connR</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">connectionInfo</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.rotate&quot;</span><span class="p">,</span> <span class="n">sourceFromDestination</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">connR</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">disconnectAttr</span><span class="p">(</span><span class="n">connR</span><span class="p">,</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.rotate&quot;</span><span class="p">)</span>
+ <span class="n">connS</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">connectionInfo</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.scale&quot;</span><span class="p">,</span> <span class="n">sourceFromDestination</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">connS</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">disconnectAttr</span><span class="p">(</span><span class="n">connS</span><span class="p">,</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.scale&quot;</span><span class="p">)</span>
+
+ <span class="c1"># remove rig and driver skeleton</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;rig_grp&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">selection</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selection</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">lockNode</span><span class="p">(</span><span class="n">each</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s2">&quot;rig_grp&quot;</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s2">&quot;driver_root&quot;</span><span class="p">)</span>
+
+ <span class="c1"># show all joints</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;root&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="n">lock</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">joint</span> <span class="o">+</span> <span class="s2">&quot;.v&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># go to model pose</span>
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># call on the module&#39;s bakeOffsets method</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="s2">&quot;modelPose&quot;</span><span class="p">)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="c1"># build UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span>
+
+ <span class="c1"># populate UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">populateUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.closeWin"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.closeWin">[docs]</a> <span class="k">def</span> <span class="nf">closeWin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gathers all information from the temp file (LOD meshes, bones to remove, etc), opens the export file,</span>
+<span class="sd"> and applies that information to the network node in the export file. Lastly removes the temp file.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># save out data</span>
+ <span class="n">exportData</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findExportMeshData</span><span class="p">()</span>
+
+ <span class="c1"># open original file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">saveFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># apply data</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="n">lodData</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;_Pose&quot;</span><span class="p">,</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">,</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">exportData</span><span class="p">:</span>
+ <span class="c1"># path, meshes, removeBones, poseData, lodAttr</span>
+ <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">lodData</span><span class="p">:</span>
+
+ <span class="c1"># if the attr does not exist, create it</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">d</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">d</span> <span class="o">!=</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">d</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">d</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="c1"># set the attr data</span>
+ <span class="n">dataString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">,</span> <span class="n">dataString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">dataString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">,</span> <span class="n">dataString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">dataString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">,</span> <span class="n">dataString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># first remove all connections</span>
+ <span class="n">i</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">connections</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">connections</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="n">connections</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">disconnectAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="n">conn</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+
+ <span class="c1"># Add attrs to meshes to connect up to the characterNode LOD meshes attr</span>
+ <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mesh</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">mesh</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">each</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="n">mesh</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+
+ <span class="c1"># remove temp file</span>
+ <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tempFile</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.buildUI"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.buildUI">[docs]</a> <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Builds the main interface for the tool, which allows additions of LODs, assignment of meshes to a given LOD,</span>
+<span class="sd"> and assignment of bones to remove per LOD (which then opens another interface/tool).</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.addBoneToList_UI(), ART_ExportMeshes.addMeshToList_UI()</span>
+<span class="sd"> .. seealso:: ART_ExportMeshes.addMeshLOD(), ART_ExportMeshes.createLODpage()</span>
+<span class="sd"> .. seealso:: ART_ExportMeshes.createExportMeshesPage(), ART_ExportMeshes.removeLodTab()</span>
+<span class="sd"> .. seealso:: ART_ExportMeshes.export()</span>
+
+<span class="sd"> Here is a breakdown image showing which UI elements call on which functions:</span>
+
+<span class="sd"> .. image:: /images/exportMeshesBreakout.png</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">closeEvent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">closeWin</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/mainScheme.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMeshesWin&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Export Skeletal Meshes&quot;</span><span class="p">)</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># set size policy</span>
+ <span class="n">mainSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">600</span><span class="p">,</span> <span class="mi">400</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">mainSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">600</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">600</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
+
+ <span class="c1"># build pages</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createExportMeshesPage</span><span class="p">()</span>
+
+ <span class="c1"># show window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.createExportMeshesPage"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.createExportMeshesPage">[docs]</a> <span class="k">def</span> <span class="nf">createExportMeshesPage</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates the LOD0 Tab, which is a little bit unique from subsequent LOD tabs, as the Add/Remove LOD buttons</span>
+<span class="sd"> are added, and the LOD0 tab can not be removed. It still calls on createLODpage to create the common</span>
+<span class="sd"> elements, but this creates the framework for all of the LOD tabs.</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.createLODpage()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the QFrame for this page</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">560</span><span class="p">,</span> <span class="mi">250</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageMainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshPage</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+
+ <span class="n">font</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">12</span><span class="p">)</span>
+ <span class="n">font</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># add Tab Widget</span>
+ <span class="c1"># tab stylesheet (tab stylesheet via QSS doesn&#39;t seem to work for some reason</span>
+ <span class="n">stylesheet</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QTabBar::tab</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(90,90,90), stop:1 rgb(30,30,30));</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> width: 180px;</span>
+<span class="s2"> padding-left: -10px;</span>
+<span class="s2"> font: 8pt;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:selected</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(255,174,0), stop:1 rgb(30,30,30));</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> font: bold 10pt;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:hover</span>
+<span class="s2"> {</span>
+<span class="s2"> background: rgb(132,95,16);</span>
+<span class="s2"> font: bold 10pt;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:!selected</span>
+<span class="s2"> {</span>
+<span class="s2"> margin-top: 5px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabWidget::pane</span>
+<span class="s2"> {</span>
+<span class="s2"> border: 2px solid rgb(0,0,0);</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">stylesheet</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageMainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabBar</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabBar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">setTabBar</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">emPageTabBar</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabBar</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># LOD0 tab</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createLODpage</span><span class="p">(</span><span class="s2">&quot;LOD_0&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+
+ <span class="n">cornerWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="n">cornerLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="n">cornerWidget</span><span class="p">)</span>
+ <span class="n">cornerLayout</span><span class="o">.</span><span class="n">setContentsMargins</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
+
+ <span class="c1"># remove lod button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot; - &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Remove Mesh LOD (current tab)&quot;</span><span class="p">)</span>
+ <span class="n">cornerLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">removeMeshLodBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeLodTab</span><span class="p">)</span>
+
+ <span class="c1"># add lod button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot; + &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Add Mesh LOD&quot;</span><span class="p">)</span>
+ <span class="n">cornerLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addMeshLodBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addMeshLOD</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">setCornerWidget</span><span class="p">(</span><span class="n">cornerWidget</span><span class="p">)</span>
+
+ <span class="c1"># add continue/back buttons</span>
+ <span class="n">buttonlayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageMainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">buttonlayout</span><span class="p">)</span>
+
+ <span class="n">spacerItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="n">buttonlayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span><span class="n">spacerItem</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Export&quot;</span><span class="p">)</span>
+ <span class="n">buttonlayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="o">.</span><span class="n">setFont</span><span class="p">(</span><span class="n">font</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">250</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">export</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPage_continueButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.createLODpage"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.createLODpage">[docs]</a> <span class="k">def</span> <span class="nf">createLODpage</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">closeable</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates a tab (QFrame) for a new LOD, with the UI elements to set the output path for the FBX, to set the</span>
+<span class="sd"> meshes assigned to the LOD, and to launch the bone removal tool for the LOD.</span>
+
+<span class="sd"> :param label: The text label for the tab (LOD_#)</span>
+<span class="sd"> :param closeable: Whether this LOD can be removed, thus removing the tab.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">lodTab</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">lodTab</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">lodTab</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="n">lodTab</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout</span>
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="n">lodTab</span><span class="p">)</span>
+
+ <span class="c1"># left side column</span>
+ <span class="n">leftSide</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">leftSide</span><span class="p">)</span>
+
+ <span class="c1"># label</span>
+ <span class="n">meshLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">leftSide</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">meshLayout</span><span class="p">)</span>
+ <span class="n">layoutLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Meshes For &quot;</span> <span class="o">+</span> <span class="n">label</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span><span class="p">)</span>
+ <span class="n">meshLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">layoutLabel</span><span class="p">)</span>
+ <span class="n">layoutLabel</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background: transparent&#39;</span><span class="p">)</span>
+
+ <span class="n">chooseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Choose Meshes&quot;</span><span class="p">)</span>
+ <span class="n">chooseBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">meshLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">chooseBtn</span><span class="p">)</span>
+
+ <span class="c1"># render mesh list</span>
+ <span class="n">meshList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="n">meshList</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Select the meshes you want to include in this mesh LOD.&quot;</span><span class="p">)</span>
+ <span class="n">meshList</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;listType&quot;</span><span class="p">,</span> <span class="s2">&quot;mesh&quot;</span><span class="p">)</span>
+ <span class="n">leftSide</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">meshList</span><span class="p">)</span>
+ <span class="n">meshList</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;List of meshes to include for this LOD&quot;</span><span class="p">)</span>
+ <span class="n">meshList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">NoSelection</span><span class="p">)</span>
+
+ <span class="n">chooseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addMeshToList_UI</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">meshList</span><span class="p">))</span>
+
+ <span class="c1"># right side column</span>
+ <span class="n">rightLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">rightLayout</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout for line edit and button</span>
+ <span class="n">pathLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">pathLayout</span><span class="p">)</span>
+
+ <span class="n">lineEdit</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">lineEdit</span><span class="p">)</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">setPlaceholderText</span><span class="p">(</span><span class="s2">&quot;FBX Export Path...&quot;</span><span class="p">)</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;Define the file name and file location for this LOD FBX file.&quot;</span><span class="p">)</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">saveFilePath</span><span class="p">,</span> <span class="n">lineEdit</span><span class="p">,</span> <span class="n">label</span><span class="p">))</span>
+
+ <span class="n">browseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">browseBtn</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/fileBrowse.png&quot;</span><span class="p">))</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">browseToFBX</span><span class="p">,</span> <span class="n">lineEdit</span><span class="p">))</span>
+
+ <span class="c1"># label + add button</span>
+ <span class="n">removeBonesLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">removeBonesLayout</span><span class="p">)</span>
+
+ <span class="n">layoutLabel</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Bones to remove for &quot;</span> <span class="o">+</span> <span class="n">label</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span><span class="p">)</span>
+ <span class="n">removeBonesLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">layoutLabel</span><span class="p">)</span>
+ <span class="n">layoutLabel</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s1">&#39;background: transparent;&#39;</span><span class="p">)</span>
+
+ <span class="n">removeBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">)</span>
+ <span class="n">removeBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">removeBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="mi">35</span><span class="p">)</span>
+ <span class="n">removeBonesLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">removeBtn</span><span class="p">)</span>
+ <span class="n">removeBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="c1"># bone list</span>
+ <span class="n">boneList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="n">boneList</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;listType&quot;</span><span class="p">,</span> <span class="s2">&quot;bone&quot;</span><span class="p">)</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">boneList</span><span class="p">)</span>
+ <span class="n">boneList</span><span class="o">.</span><span class="n">setToolTip</span><span class="p">(</span><span class="s2">&quot;List of joints to remove from this LOD&quot;</span><span class="p">)</span>
+ <span class="n">boneList</span><span class="o">.</span><span class="n">setContextMenuPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">CustomContextMenu</span><span class="p">)</span>
+ <span class="n">boneList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+
+ <span class="c1"># signals/slots</span>
+ <span class="n">removeBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addBoneToList_UI</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">boneList</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addBoneToList_UI"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addBoneToList_UI">[docs]</a> <span class="k">def</span> <span class="nf">addBoneToList_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates an interface to remove bones from a LOD, transfer weighting of those removed bones to the next viable</span>
+<span class="sd"> parent, and handle LOD posing.</span>
+
+<span class="sd"> :param parent: The instance of the main UI created by ART_ExportMeshes.buildUI()</span>
+<span class="sd"> :param label: The label for the window title to show what LOD this interface represents.</span>
+<span class="sd"> :param listWidget: The list widget on the main LOD page that lists all bones being removed.</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.addBoneToList_Accept(), ART_ExportMeshes.addWeightingTransferEntry()</span>
+<span class="sd"> .. seealso:: ART_ExportMeshes.viewLodPose(), ART_ExportMeshes.resetLodPose(), ART_ExportMeshes.resetLodPose()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">mainWidget</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">725</span><span class="p">,</span> <span class="mi">525</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">725</span><span class="p">,</span> <span class="mi">525</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_AddBoneToLODlistWin&quot;</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">)</span>
+
+ <span class="c1"># treeWidget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;light&quot;</span><span class="p">)</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">headerItem</span><span class="p">()</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">260</span><span class="p">,</span> <span class="mi">470</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">260</span><span class="p">,</span> <span class="mi">470</span><span class="p">))</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setHorizontalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAsNeeded</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">header</span><span class="p">()</span><span class="o">.</span><span class="n">setResizeMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHeaderView</span><span class="o">.</span><span class="n">ResizeToContents</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">headerItem</span><span class="p">()</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;Skeleton Tree&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setColumnWidth</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">260</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">setIndentation</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+
+ <span class="c1"># right side</span>
+ <span class="n">rightLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">rightLayout</span><span class="p">)</span>
+
+ <span class="c1"># Weighting Transfer</span>
+ <span class="n">xferGroupBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="s2">&quot;Weighting Transfer&quot;</span><span class="p">)</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">xferGroupBox</span><span class="p">)</span>
+ <span class="n">xferGroupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">425</span><span class="p">,</span> <span class="mi">330</span><span class="p">))</span>
+ <span class="n">xferGroupBox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">425</span><span class="p">,</span> <span class="mi">330</span><span class="p">))</span>
+ <span class="n">xferGroupBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;light&quot;</span><span class="p">)</span>
+
+ <span class="c1"># vboxLayout--hbox button layout for spacer/button, vboxlayout/scroll area for entries</span>
+ <span class="n">weightingXferLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">xferGroupBox</span><span class="p">)</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">weightingXferLayout</span><span class="p">)</span>
+
+ <span class="n">buttonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">weightingXferLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">buttonLayout</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">))</span>
+
+ <span class="n">addEntryButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot; Add Entry &quot;</span><span class="p">)</span>
+ <span class="n">addEntryButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">addEntryButton</span><span class="p">)</span>
+
+ <span class="c1"># ScrollArea</span>
+ <span class="n">scrollLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">weightingXferLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">scrollLayout</span><span class="p">)</span>
+
+ <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QScrollArea</span><span class="p">()</span>
+ <span class="n">scrollLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
+
+ <span class="n">scrollContents</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">scrollContents</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="n">scrollContents</span><span class="p">)</span>
+
+ <span class="n">entriesLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">scrollContents</span><span class="p">)</span>
+ <span class="n">scrollArea</span><span class="o">.</span><span class="n">setWidgetResizable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">entriesLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="c1"># LOD Pose</span>
+ <span class="n">lodPoseGroupBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="s2">&quot;LOD Posing&quot;</span><span class="p">)</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">lodPoseGroupBox</span><span class="p">)</span>
+ <span class="n">lodPoseGroupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">425</span><span class="p">,</span> <span class="mi">75</span><span class="p">))</span>
+ <span class="n">lodPoseGroupBox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">425</span><span class="p">,</span> <span class="mi">75</span><span class="p">))</span>
+ <span class="n">lodPoseGroupBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;light&quot;</span><span class="p">)</span>
+
+ <span class="n">lodPoseLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="n">lodPoseGroupBox</span><span class="p">)</span>
+
+ <span class="n">viewPoseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;View LOD Pose&quot;</span><span class="p">)</span>
+ <span class="n">viewPoseBtn</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">lodPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">viewPoseBtn</span><span class="p">)</span>
+ <span class="n">viewPoseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">viewLodPose</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">viewPoseBtn</span><span class="p">))</span>
+
+ <span class="n">resetPoseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Reset LOD Pose&quot;</span><span class="p">)</span>
+ <span class="n">lodPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">resetPoseBtn</span><span class="p">)</span>
+ <span class="n">resetPoseBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">resetPoseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resetLodPose</span><span class="p">,</span> <span class="n">label</span><span class="p">))</span>
+
+ <span class="n">savePoseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Save LOD Pose&quot;</span><span class="p">)</span>
+ <span class="n">lodPoseLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">savePoseBtn</span><span class="p">)</span>
+ <span class="n">savePoseBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">savePoseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">saveLodPose</span><span class="p">,</span> <span class="n">label</span><span class="p">))</span>
+
+ <span class="c1"># button</span>
+ <span class="n">addButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Save and Close&quot;</span><span class="p">)</span>
+ <span class="n">addButton</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span>
+ <span class="n">addButton</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span>
+ <span class="n">rightLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">addButton</span><span class="p">)</span>
+ <span class="n">addButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
+ <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addBoneToList_Accept</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">entriesLayout</span><span class="p">,</span> <span class="n">viewPoseBtn</span><span class="p">))</span>
+ <span class="n">addButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="n">addEntryButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addWeightingTransferEntry</span><span class="p">,</span> <span class="n">entriesLayout</span><span class="p">))</span>
+
+ <span class="c1"># joints</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">&quot;root&quot;</span><span class="p">,</span> <span class="n">hi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="n">sl</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;joint&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">joint</span> <span class="ow">in</span> <span class="n">joints</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">parent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">joint</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setBackground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">joint</span><span class="p">,</span> <span class="n">children</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;joint&quot;</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addBoneToListUI_addChildren</span><span class="p">(</span><span class="n">child</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span>
+
+ <span class="c1"># show</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">expandAll</span><span class="p">()</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># populate ui automatically if the settings exist</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ud</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">string</span><span class="o">=</span><span class="s2">&quot;LOD_*_Bones&quot;</span><span class="p">)</span>
+ <span class="n">lodAttrs</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">if</span> <span class="n">attrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">lodAttrs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">attr</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_Bones&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">lodAttrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+
+ <span class="c1"># get json data from attribute</span>
+ <span class="n">lodData</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;_Bones&quot;</span><span class="p">]</span>
+ <span class="n">boneValues</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">lodAttrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="o">==</span> <span class="n">label</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">lodData</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">entry</span> <span class="o">==</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">:</span>
+ <span class="n">boneValues</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">))</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">boneValues</span><span class="p">:</span>
+ <span class="n">bones</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">xferBone</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># create an entry (need to return back the layouts needed for the next part</span>
+ <span class="n">entryData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">addWeightingTransferEntry</span><span class="p">(</span><span class="n">entriesLayout</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">bones</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">each</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchExactly</span> <span class="o">|</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchRecursive</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addItemsToWeightXferList</span><span class="p">(</span><span class="n">entryData</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">entryData</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">()</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">xferBone</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchExactly</span> <span class="o">|</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchRecursive</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addXferBoneToList</span><span class="p">(</span><span class="n">entryData</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="kc">False</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addWeightingTransferEntry"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addWeightingTransferEntry">[docs]</a> <span class="k">def</span> <span class="nf">addWeightingTransferEntry</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Adds a Groupbox with two QListWidgets, where the left shows bones to remove, and the right shows the next</span>
+<span class="sd"> viable parent bone to transfer the weighting to. Both lists can then be edited as well.</span>
+
+<span class="sd"> This is what that would like like:</span>
+
+<span class="sd"> .. image:: /images/xferEntry.png</span>
+
+<span class="sd"> :param layout: The QVboxLayout to add the QGroupbox to.</span>
+
+<span class="sd"> :return: returns both QListWidgets (in memory)</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.addItemsToWeightXferList(), ART_ExportMeshes.removeBonesFromList()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">groupbox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">insertWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">groupbox</span><span class="p">)</span>
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">140</span><span class="p">))</span>
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">140</span><span class="p">))</span>
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">setFlat</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># load style sheet file</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span>
+ <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/skeletonSettings.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">(</span><span class="n">groupbox</span><span class="p">)</span>
+
+ <span class="n">groupbox</span><span class="o">.</span><span class="n">toggled</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">collapseBox</span><span class="p">,</span> <span class="n">groupbox</span><span class="p">))</span>
+
+ <span class="n">removeBonesList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">removeBonesList</span><span class="p">)</span>
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">122</span><span class="p">))</span>
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">150</span><span class="p">,</span> <span class="mi">122</span><span class="p">))</span>
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;list&quot;</span><span class="p">,</span> <span class="s2">&quot;remove&quot;</span><span class="p">)</span>
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">MultiSelection</span><span class="p">)</span>
+
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">setContextMenuPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">CustomContextMenu</span><span class="p">)</span>
+ <span class="n">removeBonesList</span><span class="o">.</span><span class="n">customContextMenuRequested</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lodContextMenu</span><span class="p">,</span> <span class="n">removeBonesList</span><span class="p">,</span> <span class="n">groupbox</span><span class="p">))</span>
+
+ <span class="n">buttonLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">buttonLayout</span><span class="p">)</span>
+
+ <span class="n">addButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot; + &quot;</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">addButton</span><span class="p">)</span>
+ <span class="n">addButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="n">remButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot; - &quot;</span><span class="p">)</span>
+ <span class="n">buttonLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">remButton</span><span class="p">)</span>
+ <span class="n">remButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+
+ <span class="n">xferBoneList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">xferBoneList</span><span class="p">)</span>
+ <span class="n">xferBoneList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">120</span><span class="p">,</span> <span class="mi">122</span><span class="p">))</span>
+ <span class="n">xferBoneList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">120</span><span class="p">,</span> <span class="mi">122</span><span class="p">))</span>
+ <span class="n">xferBoneList</span><span class="o">.</span><span class="n">setProperty</span><span class="p">(</span><span class="s2">&quot;list&quot;</span><span class="p">,</span> <span class="s2">&quot;xfer&quot;</span><span class="p">)</span>
+
+ <span class="n">setButton</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;&lt;-&quot;</span><span class="p">)</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">setButton</span><span class="p">)</span>
+ <span class="n">setButton</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">setButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addXferBoneToList</span><span class="p">,</span> <span class="n">xferBoneList</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+
+ <span class="n">addButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addItemsToWeightXferList</span><span class="p">,</span> <span class="n">removeBonesList</span><span class="p">,</span> <span class="n">xferBoneList</span><span class="p">))</span>
+ <span class="n">remButton</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeBonesFromList</span><span class="p">,</span> <span class="n">removeBonesList</span><span class="p">))</span>
+
+ <span class="k">return</span> <span class="p">[</span><span class="n">removeBonesList</span><span class="p">,</span> <span class="n">xferBoneList</span><span class="p">]</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.collapseBox"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.collapseBox">[docs]</a> <span class="k">def</span> <span class="nf">collapseBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Collapses the given groupBox down to 16 pixel high, or restores its original height, given the state.</span>
+
+<span class="sd"> :param groupBox: Which groupBox to operate on and manipulate the height.</span>
+<span class="sd"> :param args: What the state is of the groupBox checkBox.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">140</span><span class="p">))</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">140</span><span class="p">))</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">16</span><span class="p">))</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">370</span><span class="p">,</span> <span class="mi">16</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addMeshLOD"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addMeshLOD">[docs]</a> <span class="k">def</span> <span class="nf">addMeshLOD</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds the current number of LOD tabs, constructs a label for the new tab, iterating the count by 1,</span>
+<span class="sd"> and calls on createLODpage, passing in that label.</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.createLODpage()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get current count of tabs</span>
+ <span class="n">numTabs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+ <span class="n">label</span> <span class="o">=</span> <span class="s2">&quot;LOD_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">numTabs</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">createLODpage</span><span class="p">(</span><span class="n">label</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addMeshToList_UI"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addMeshToList_UI">[docs]</a> <span class="k">def</span> <span class="nf">addMeshToList_UI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates a UI that lists all meshes for selection to assign meshes to a given LOD.</span>
+
+<span class="sd"> .. image:: /images/addMeshesUI.png</span>
+
+<span class="sd"> :param parent: The UI instance to parent this interface to</span>
+<span class="sd"> :param label: The LOD text label for this interface&#39;s window title.</span>
+<span class="sd"> :param listWidget: The listWidget on the main LOD page that will list the selected meshes</span>
+
+<span class="sd"> .. image:: /images/meshList.png</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.populateRenderMeshes(), ART_ExportMeshes.addMeshesToLodList()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">mainWidget</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;mid&quot;</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">525</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">525</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;ART_AddMeshesToLODlistWin&quot;</span><span class="p">)</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># font</span>
+ <span class="n">headerFont</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QFont</span><span class="p">()</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
+ <span class="n">headerFont</span><span class="o">.</span><span class="n">setBold</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout for the rig creator UI</span>
+ <span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">mainWidget</span><span class="p">)</span>
+ <span class="n">mainLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">mainLayout</span><span class="p">)</span>
+
+ <span class="c1"># treeWidget</span>
+ <span class="n">meshTree</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidget</span><span class="p">()</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;light&quot;</span><span class="p">)</span>
+ <span class="n">mainLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">meshTree</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">headerItem</span><span class="p">()</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">260</span><span class="p">,</span> <span class="mi">470</span><span class="p">))</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">260</span><span class="p">,</span> <span class="mi">470</span><span class="p">))</span>
+
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setHorizontalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAsNeeded</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">header</span><span class="p">()</span><span class="o">.</span><span class="n">setResizeMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHeaderView</span><span class="o">.</span><span class="n">ResizeToContents</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">headerItem</span><span class="p">()</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;Geometry&quot;</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setColumnWidth</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">260</span><span class="p">)</span>
+ <span class="n">meshTree</span><span class="o">.</span><span class="n">setIndentation</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+
+ <span class="n">chooseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Save and Close&quot;</span><span class="p">)</span>
+ <span class="n">chooseBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">chooseBtn</span><span class="p">)</span>
+ <span class="n">chooseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addMeshesToLodList</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">,</span> <span class="n">meshTree</span><span class="p">,</span> <span class="n">mainWin</span><span class="p">,</span> <span class="n">label</span><span class="p">))</span>
+
+ <span class="c1"># populate tree</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">populateRenderMeshes</span><span class="p">(</span><span class="n">meshTree</span><span class="p">)</span>
+
+ <span class="c1"># if items in listWidget, select those items in the tree</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">listWidget</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">listWidget</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">matches</span> <span class="o">=</span> <span class="n">meshTree</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchExactly</span> <span class="o">|</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchRecursive</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">matches</span><span class="p">:</span>
+ <span class="n">match</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># show the window</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addMeshesToLodList"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addMeshesToLodList">[docs]</a> <span class="k">def</span> <span class="nf">addMeshesToLodList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">,</span> <span class="n">meshTree</span><span class="p">,</span> <span class="n">mainWin</span><span class="p">,</span> <span class="n">label</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds the selected items in addMeshToList_UI&#39;s treeWidget, and adds them back to the main LOD page&#39;s</span>
+<span class="sd"> listWidget for meshes associated with that LOD.</span>
+
+<span class="sd"> :param listWidget: The list widget to add selected items in the treeWidget to.</span>
+<span class="sd"> :param meshTree: The treeWidget from addMeshToList_UI(), whose selection will be queried.</span>
+<span class="sd"> :param mainWin: The window instance from addMeshToList_UI()</span>
+<span class="sd"> :param label: The name of the LOD tab</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.saveMeshList()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># add to list widget</span>
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">meshTree</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+ <span class="n">listWidget</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/mesh.png&quot;</span><span class="p">)))</span>
+ <span class="n">listWidgetItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="n">each</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
+ <span class="n">listWidget</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">listWidgetItem</span><span class="p">)</span>
+
+ <span class="c1"># hook up connections</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveMeshList</span><span class="p">(</span><span class="n">listWidget</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span>
+
+ <span class="c1"># close window</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="n">mainWin</span><span class="o">.</span><span class="n">deleteLater</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.saveLodPose"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.saveLodPose">[docs]</a> <span class="k">def</span> <span class="nf">saveLodPose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lod</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Queries the joints in the skeleton and get the attribute values to store for the given lod.</span>
+
+<span class="sd"> :param lod: the text label of the LOD to operate on.</span>
+
+<span class="sd"> .. todo:: Suggested feature request was to have this operate on the rig controls and not just joints. That</span>
+<span class="sd"> would mean storing both controls and joints. The desire behind this was to do all LOD posing in the</span>
+<span class="sd"> rig file, rather than the temp file that gets created for exporting.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get all joints</span>
+ <span class="n">modules</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnRigModules</span><span class="p">()</span>
+
+ <span class="c1"># go through each one, and find the created bones for that modules</span>
+ <span class="n">createdJoints</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">module</span> <span class="o">!=</span> <span class="s2">&quot;ART_Root_Module&quot;</span><span class="p">:</span>
+ <span class="n">joints</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">module</span> <span class="o">+</span> <span class="s2">&quot;.Created_Bones&quot;</span><span class="p">)</span>
+ <span class="n">splitJoints</span> <span class="o">=</span> <span class="n">joints</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;::&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">splitJoints</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bone</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">createdJoints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bone</span><span class="p">)</span>
+
+ <span class="n">dataDict</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">createdJoints</span><span class="p">:</span>
+ <span class="n">translateData</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.translate&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">translate</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">translateData</span><span class="p">:</span>
+ <span class="n">translate</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{:.3f}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">d</span><span class="p">)))</span>
+
+ <span class="n">rotateData</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.rotate&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">rotate</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rotateData</span><span class="p">:</span>
+ <span class="n">rotate</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{:.3f}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">r</span><span class="p">)))</span>
+
+ <span class="n">scaleData</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;.scale&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">scale</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scaleData</span><span class="p">:</span>
+ <span class="n">scale</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{:.3f}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">s</span><span class="p">)))</span>
+
+ <span class="n">dataDict</span><span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">each</span><span class="p">)]</span> <span class="o">=</span> <span class="p">[</span><span class="n">translate</span><span class="p">,</span> <span class="n">rotate</span><span class="p">,</span> <span class="n">scale</span><span class="p">]</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">lodPoseDict</span><span class="p">[</span><span class="n">lod</span><span class="p">]</span> <span class="o">=</span> <span class="n">dataDict</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># set the model pose again (un-altered)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="s2">&quot;modelPose&quot;</span><span class="p">)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.viewLodPose"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.viewLodPose">[docs]</a> <span class="k">def</span> <span class="nf">viewLodPose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lod</span><span class="p">,</span> <span class="n">button</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gather LOD pose attribute data for the given LOD and set those values on the joints.</span>
+
+<span class="sd"> :param lod: The text label for the LOD to operate on.</span>
+<span class="sd"> :param button: the &quot;View LOD Pose&quot; button instance</span>
+
+<span class="sd"> .. todo:: Suggested feature request was to have this operate on the rig controls and not just joints. That</span>
+<span class="sd"> would mean getting data for both controls and joints. The desire behind this was to do all LOD posing</span>
+<span class="sd"> in the rig file, rather than the temp file that gets created for exporting.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">button</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">lodPoseDict</span><span class="p">[</span><span class="n">lod</span><span class="p">]:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lodPoseDict</span><span class="p">[</span><span class="n">lod</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="c1"># translate, rotate, scale</span>
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">):</span>
+ <span class="nb">dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">))</span>
+ <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">dict</span><span class="p">:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+ <span class="c1"># translate, rotate, scale</span>
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.translateZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.rotateZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">each</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">]:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleX&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleY&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;.scaleZ&quot;</span><span class="p">,</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="k">else</span><span class="p">:</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># call on the module&#39;s bakeOffsets method</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="s2">&quot;modelPose&quot;</span><span class="p">)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.resetLodPose"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.resetLodPose">[docs]</a> <span class="k">def</span> <span class="nf">resetLodPose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lod</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Resets the LOD pose for the given LOD to the model pose.</span>
+
+<span class="sd"> :param lod: the LOD text label to operate on.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">for</span> <span class="n">inst</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="o">.</span><span class="n">moduleInstances</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="c1"># call on the module&#39;s bakeOffsets method</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setupForRigPose</span><span class="p">()</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">setReferencePose</span><span class="p">(</span><span class="s2">&quot;modelPose&quot;</span><span class="p">)</span>
+ <span class="n">inst</span><span class="o">.</span><span class="n">cleanUpRigPose</span><span class="p">()</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="n">e</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">saveLodPose</span><span class="p">(</span><span class="n">lod</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.lodContextMenu"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.lodContextMenu">[docs]</a> <span class="k">def</span> <span class="nf">lodContextMenu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">,</span> <span class="n">point</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Creates a right-click context menu for the weighting transfer entry widget:</span>
+
+<span class="sd"> .. image:: /images/xferEntry.png</span>
+
+<span class="sd"> :param widget: The parent widget the context menu will spawn from.</span>
+<span class="sd"> :param groupBox: The parent groupBox for the weighting transfer entry.</span>
+<span class="sd"> :param point: Where on the parent widget to spawn the context menu.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">style</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QMenu {</span>
+<span class="s2"> background-color: rgb(60,60,60);</span>
+<span class="s2"> border: 1px solid black;</span>
+<span class="s2"> }</span>
+
+<span class="s2"> QMenu::item {</span>
+<span class="s2"> background-color: transparent;</span>
+<span class="s2"> }</span>
+
+<span class="s2"> QMenu::item:selected {</span>
+<span class="s2"> background-color: rgb(255,174,0);</span>
+<span class="s2"> color: black;</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="n">menu</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMenu</span><span class="p">(</span><span class="n">widget</span><span class="p">)</span>
+ <span class="n">menu</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">style</span><span class="p">)</span>
+ <span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="s2">&quot;Clear Selection&quot;</span><span class="p">,</span> <span class="n">widget</span><span class="o">.</span><span class="n">clearSelection</span><span class="p">)</span>
+ <span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="s2">&quot;Select All&quot;</span><span class="p">,</span> <span class="n">widget</span><span class="o">.</span><span class="n">selectAll</span><span class="p">)</span>
+ <span class="n">menu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="s2">&quot;Remove This Entry&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">removeTransferEntry</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+
+ <span class="n">menu</span><span class="o">.</span><span class="n">exec_</span><span class="p">(</span><span class="n">widget</span><span class="o">.</span><span class="n">mapToGlobal</span><span class="p">(</span><span class="n">point</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.removeTransferEntry"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.removeTransferEntry">[docs]</a> <span class="k">def</span> <span class="nf">removeTransferEntry</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Removes the given groupBox, deleting a weighting transfer entry.</span>
+
+<span class="sd"> :param groupBox: Which groupBox to remove.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">deleteLater</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.removeLodTab"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.removeLodTab">[docs]</a> <span class="k">def</span> <span class="nf">removeLodTab</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Removes the current tab index from the tabWidget. Also removes and LOD attributes associated with this LOD</span>
+<span class="sd"> from the character node.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">currentTab</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">currentIndex</span><span class="p">()</span>
+ <span class="n">tabText</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">currentTab</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">currentTab</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">removeTab</span><span class="p">(</span><span class="n">currentTab</span><span class="p">)</span>
+
+ <span class="c1"># remove LOD attrs</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ud</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">string</span><span class="o">=</span><span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;*&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">attrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="n">attr</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Cannot remove LOD 0&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.browseToFBX"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.browseToFBX">[docs]</a> <span class="k">def</span> <span class="nf">browseToFBX</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lineEdit</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Calls on a fileDialog for the user to browse to an FBX file for saving. Either one that exists, or creating</span>
+<span class="sd"> a new one.</span>
+
+<span class="sd"> :param lineEdit: The QLineEdit whose text to set with the path to the FBX file.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">fileName</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.fbx&quot;</span><span class="p">)</span>
+ <span class="n">fileName</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">fileName</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">lineEdit</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addItemsToWeightXferList"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addItemsToWeightXferList">[docs]</a> <span class="k">def</span> <span class="nf">addItemsToWeightXferList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">boneWidget</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Takes the items selected in the skeleton tree (pictured below) and auto-selects and children under the</span>
+<span class="sd"> selected items, as removing the parent will also remove the children of those parents, and then adds all of</span>
+<span class="sd"> those items to the given widget.</span>
+
+<span class="sd"> .. image:: /images/boneTree.png</span>
+
+<span class="sd"> :param widget: The QListWidget in the weighting transfer entry widget showing bones to remove.</span>
+<span class="sd"> :param boneWidget: The QListWidget in the weighting transfer entry widget showing bone who will receive</span>
+<span class="sd"> weights from removed bones.</span>
+
+<span class="sd"> .. image:: /images/xferEntry.png</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.addXferBoneToList()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get selected items in self.tree</span>
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+
+ <span class="n">fullList</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">itemList</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">findTreeChildren</span><span class="p">(</span><span class="n">fullList</span><span class="p">,</span> <span class="n">itemList</span><span class="p">,</span> <span class="n">each</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">itemList</span><span class="p">:</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">fullList</span><span class="p">:</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">addXferBoneToList</span><span class="p">(</span><span class="n">boneWidget</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.findTreeChildren"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.findTreeChildren">[docs]</a> <span class="k">def</span> <span class="nf">findTreeChildren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fullList</span><span class="p">,</span> <span class="n">itemList</span><span class="p">,</span> <span class="n">item</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds any child items from selected items in the Skeleton Tree and appends them to the input lists.</span>
+
+<span class="sd"> :param fullList: The full list of all items, including the original selected parent items and any child items</span>
+<span class="sd"> :param itemList: The instances in memory of the selected items in the Skeleton Tree.</span>
+<span class="sd"> :param item: The parent item in the Skeleton Tree to check for children</span>
+
+<span class="sd"> .. seealso:: ART_ExportMeshes.addItemsToWeightXferList()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">fullList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
+ <span class="n">itemList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">childCount</span><span class="p">()):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">findTreeChildren</span><span class="p">(</span><span class="n">fullList</span><span class="p">,</span> <span class="n">itemList</span><span class="p">,</span> <span class="n">item</span><span class="o">.</span><span class="n">child</span><span class="p">(</span><span class="n">i</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addXferBoneToList"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addXferBoneToList">[docs]</a> <span class="k">def</span> <span class="nf">addXferBoneToList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">autoFind</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds the selected items in the Skeleton Tree (for removal) and locates the next viable parent to transfer</span>
+<span class="sd"> weighting to, then adds that bone to the passed in QListWidget.</span>
+
+<span class="sd"> :param widget: The QListWidget to add the bone that will receive weights from removed bones.</span>
+<span class="sd"> :param autoFind: Whether or not to auto-locate the next viable parent or use the currently selected item.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="k">if</span> <span class="n">autoFind</span><span class="p">:</span>
+ <span class="c1"># find selected items, find the first item parent that is not selected</span>
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+
+ <span class="n">viableParent</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">parent</span><span class="p">()</span><span class="o">.</span><span class="n">isSelected</span><span class="p">()</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">viableParent</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">parent</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">viableParent</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selected</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Only 1 bone can be selected to transfer weighting to.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">selected</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.removeBonesFromList"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.removeBonesFromList">[docs]</a> <span class="k">def</span> <span class="nf">removeBonesFromList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Takes the selected items from the left QListWidget in a weighting transfer widget and attempts to remove</span>
+<span class="sd"> them from the list.</span>
+
+<span class="sd"> :param widget: The QListWidget to check for selected items in.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">selected</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">selectedItems</span><span class="p">()</span>
+
+ <span class="c1"># find the text of each selected item and list items in the main skeleton tree that match that text</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">:</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchExactly</span> <span class="o">|</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchRecursive</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+ <span class="c1"># check to make sure (if there was a match) that the parent of that item is not also being removed.</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">match</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">match</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">parent</span><span class="p">()</span>
+
+ <span class="n">parentMatch</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">findItems</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchExactly</span> <span class="o">|</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">MatchRecursive</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">parentMatch</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+
+ <span class="n">row</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">row</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">takeItem</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span>
+ <span class="s2">&quot;Parent of the joint is also being removed. Cannot complete request unless parent joint &quot;</span>
+ <span class="s2">&quot;is not removed.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Was not able to find a matching entry in the skeleton tree.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">return</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addBoneToListUI_addChildren"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addBoneToListUI_addChildren">[docs]</a> <span class="k">def</span> <span class="nf">addBoneToListUI_addChildren</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Populates the Skeleton Tree (self.tree) by recursively looking for relatives of the given name and making more</span>
+<span class="sd"> QTreeWidgetItems using the passed in name, and parenting under the passed in parent.</span>
+
+<span class="sd"> :param name: The bone name, which will be used to look for children, and also as the text for the treeWidgetItem</span>
+<span class="sd"> :param parent: The parent treeWidgetItem that the created item will be a child of.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setBackground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">children</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;joint&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addBoneToListUI_addChildren</span><span class="p">(</span><span class="n">child</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.addBoneToList_Accept"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.addBoneToList_Accept">[docs]</a> <span class="k">def</span> <span class="nf">addBoneToList_Accept</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">,</span> <span class="n">lod</span><span class="p">,</span> <span class="n">layout</span><span class="p">,</span> <span class="n">viewBtn</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Called from the &quot;Save and Close&quot; button of the addBoneToList_UI, clears all items in the main listWidget,</span>
+<span class="sd"> then populates that listWidget with the new bones to remove. Adds all LOD pose info to the character node as</span>
+<span class="sd"> well as weighting transfer info for that lod.</span>
+
+<span class="sd"> :param listWidget: The listWidget on the main LOD page on the bottom right that lists bones to remove.</span>
+<span class="sd"> :param lod: The LOD text (LOD_#) to operate on.</span>
+<span class="sd"> :param layout: The QVboxLayout to query for weighting transfer entries.</span>
+<span class="sd"> :param viewBtn: The &quot;View LOD Pose&quot; button instance</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># find items already in listWidget</span>
+ <span class="n">listWidget</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+
+ <span class="c1"># get the character node</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+
+ <span class="c1"># add info to characterNode</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># gather weight transfer info and pose info</span>
+ <span class="n">lodXferList</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">layout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">layout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">layout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">removeBones</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">:</span>
+
+ <span class="c1"># [[list of bones], xferbone]</span>
+ <span class="k">if</span> <span class="n">each</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;list&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;remove&quot;</span><span class="p">:</span>
+
+ <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">removeBones</span><span class="p">:</span>
+ <span class="n">removeBones</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="k">elif</span> <span class="n">each</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;list&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;xfer&quot;</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">removeBones</span><span class="p">)</span>
+ <span class="n">lodXferList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">lodXferList</span><span class="p">:</span>
+ <span class="n">bones</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">bones</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/boneDisplay.png&quot;</span><span class="p">)))</span>
+ <span class="n">listWidgetItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">bone</span><span class="p">))</span>
+ <span class="n">listWidget</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">listWidgetItem</span><span class="p">)</span>
+
+ <span class="n">string</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">lodXferList</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Pose Info</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">poseString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lodPoseDict</span><span class="p">[</span><span class="n">lod</span><span class="p">])</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">&quot;_Pose&quot;</span><span class="p">,</span> <span class="n">poseString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="nb">print</span> <span class="s2">&quot;no LOD pose given. Using model pose.&quot;</span>
+
+ <span class="c1"># set viewPoseBtn to unchecked</span>
+ <span class="n">viewBtn</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">viewLodPose</span><span class="p">(</span><span class="n">lod</span><span class="p">,</span> <span class="n">viewBtn</span><span class="p">)</span>
+
+ <span class="c1"># remove UI</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;ART_AddBoneToLODlistWin&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;ART_AddBoneToLODlistWin&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.populateRenderMeshes"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.populateRenderMeshes">[docs]</a> <span class="k">def</span> <span class="nf">populateRenderMeshes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tree</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Finds all skinned meshes in the scene and adds them as items to the given TreeWidget.</span>
+
+<span class="sd"> .. image:: /images/addMeshesUI.png</span>
+
+<span class="sd"> :param tree: The QTreeWidget to add found meshes to</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># find all skinned meshes in scene</span>
+ <span class="n">skinClusters</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s1">&#39;skinCluster&#39;</span><span class="p">)</span>
+ <span class="n">renderMeshes</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">cluster</span> <span class="ow">in</span> <span class="n">skinClusters</span><span class="p">:</span>
+ <span class="n">geometry</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">skinCluster</span><span class="p">(</span><span class="n">cluster</span><span class="p">,</span> <span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">g</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">geoTransform</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">geometry</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">renderMeshes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">geoTransform</span><span class="p">)</span>
+
+ <span class="n">geoParents</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">worldGeo</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">meshDict</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="k">for</span> <span class="n">geo</span> <span class="ow">in</span> <span class="n">renderMeshes</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">geo</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">parent</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="k">if</span> <span class="n">parent</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">geoParents</span><span class="p">:</span>
+ <span class="n">geoParents</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">worldGeo</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">geo</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">geoParents</span><span class="p">:</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listRelatives</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+ <span class="n">meshDict</span><span class="p">[</span><span class="n">each</span><span class="p">]</span> <span class="o">=</span> <span class="n">children</span>
+
+ <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">meshDict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setBackground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">meshDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/mesh.png&quot;</span><span class="p">)))</span>
+ <span class="n">childItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+ <span class="n">childItem</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span>
+ <span class="n">childItem</span><span class="o">.</span><span class="n">setBackground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span>
+ <span class="n">childItem</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">icon</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">geo</span> <span class="ow">in</span> <span class="n">worldGeo</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/mesh.png&quot;</span><span class="p">)))</span>
+ <span class="n">geoItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTreeWidgetItem</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
+ <span class="n">geoItem</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">geo</span><span class="p">)</span>
+ <span class="n">geoItem</span><span class="o">.</span><span class="n">setBackground</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">NoBrush</span><span class="p">)</span>
+ <span class="n">geoItem</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">icon</span><span class="p">)</span>
+
+ <span class="n">tree</span><span class="o">.</span><span class="n">expandAll</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.populateUI"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.populateUI">[docs]</a> <span class="k">def</span> <span class="nf">populateUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Checks to see if LOD attributes exist on the character node, and if so, builds and populates the UI based on</span>
+<span class="sd"> those settings.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="c1"># get the character node</span>
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># populate ui automatically if the settings exist</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ud</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">string</span><span class="o">=</span><span class="s2">&quot;LOD_*_FilePath&quot;</span><span class="p">)</span>
+ <span class="n">lodAttrs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">createdTabs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">if</span> <span class="n">attrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">lodAttrs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">attr</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_FilePath&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">lodAttrs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># get json data from attribute</span>
+ <span class="n">lodData</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;_Pose&quot;</span><span class="p">,</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">,</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">]</span>
+ <span class="n">meshValue</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">boneValue</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">pathValue</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">lodAttrs</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">lodData</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">entry</span> <span class="o">==</span> <span class="s2">&quot;_Bones&quot;</span><span class="p">:</span>
+ <span class="n">boneValue</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">))</span>
+ <span class="k">if</span> <span class="n">entry</span> <span class="o">==</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">:</span>
+ <span class="n">meshValue</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">entry</span> <span class="o">==</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">:</span>
+ <span class="n">pathValue</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">attr</span> <span class="o">+</span> <span class="n">entry</span><span class="p">))</span>
+
+ <span class="c1"># compare number of LOD attrs to number of current tabs. If needed, add more tabs for the lods</span>
+ <span class="n">numTabs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">numTabs</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">lodAttrs</span><span class="p">):</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">numTabs</span><span class="p">):</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">tabText</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">attr</span> <span class="o">!=</span> <span class="n">tabText</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">createdTabs</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">createLODpage</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+ <span class="n">createdTabs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
+
+ <span class="c1"># find the associated tab and set the data</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">tab</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">tabText</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">emPageTabs</span><span class="o">.</span><span class="n">tabText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">tabText</span> <span class="o">==</span> <span class="n">attr</span><span class="p">:</span>
+ <span class="c1"># tab children</span>
+ <span class="n">lists</span> <span class="o">=</span> <span class="n">lineEdits</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">findChildren</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">)</span>
+ <span class="n">lineEdits</span> <span class="o">=</span> <span class="n">tab</span><span class="o">.</span><span class="n">findChildren</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">)</span>
+
+ <span class="c1"># set meshes and bones for this tab</span>
+ <span class="k">for</span> <span class="nb">list</span> <span class="ow">in</span> <span class="n">lists</span><span class="p">:</span>
+ <span class="nb">property</span> <span class="o">=</span> <span class="nb">list</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="s2">&quot;listType&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">property</span> <span class="o">==</span> <span class="s2">&quot;mesh&quot;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">meshValue</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">meshValue</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span>
+ <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/mesh.png&quot;</span><span class="p">)))</span>
+ <span class="n">listWidgetItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="n">mesh</span><span class="p">)</span>
+ <span class="nb">list</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">listWidgetItem</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">property</span> <span class="o">==</span> <span class="s2">&quot;bone&quot;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">boneValue</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">boneValue</span><span class="p">:</span>
+ <span class="n">bones</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="k">for</span> <span class="n">bone</span> <span class="ow">in</span> <span class="n">bones</span><span class="p">:</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span>
+ <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/boneDisplay.png&quot;</span><span class="p">)))</span>
+ <span class="n">listWidgetItem</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">icon</span><span class="p">,</span> <span class="n">bone</span><span class="p">)</span>
+ <span class="nb">list</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">listWidgetItem</span><span class="p">)</span>
+
+ <span class="c1"># set file path</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">pathValue</span><span class="p">)):</span>
+ <span class="n">lineEdits</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">pathValue</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.saveFilePath"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.saveFilePath">[docs]</a> <span class="k">def</span> <span class="nf">saveFilePath</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lineEdit</span><span class="p">,</span> <span class="n">tabText</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gathers the FBX output path for the LOD and stores that information to the character node.</span>
+
+<span class="sd"> :param lineEdit: The QLineEdit which stores the output path text.</span>
+<span class="sd"> :param tabText: The LOD text to operate on (LOD_#)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+
+ <span class="c1"># get file path</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">lineEdit</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">dataString</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">,</span> <span class="n">dataString</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.saveMeshList"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.saveMeshList">[docs]</a> <span class="k">def</span> <span class="nf">saveMeshList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">listWidget</span><span class="p">,</span> <span class="n">tabText</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gathers the associated meshes for an LOD and stores that information to the character node.</span>
+
+<span class="sd"> :param listWidget: The QListWidget of the LOD tab to search for associated meshes.</span>
+<span class="sd"> :param tabText: The LOD text to operate on (LOD_#)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">characterNode</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnCharacterModule</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">characterNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_FilePath&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">i</span> <span class="o">=</span> <span class="n">tabText</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="c1"># first remove all connections</span>
+ <span class="n">connections</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">connections</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="n">connections</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">disconnectAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="n">conn</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
+
+ <span class="c1"># Add attrs to meshes to connect up to the characterNode LOD meshes attr</span>
+ <span class="n">meshList</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">listWidget</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">meshList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">listWidget</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="k">for</span> <span class="n">mesh</span> <span class="ow">in</span> <span class="n">meshList</span><span class="p">:</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">mesh</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">mesh</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">&quot;lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">at</span><span class="o">=</span><span class="s2">&quot;message&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">connectAttr</span><span class="p">(</span><span class="n">characterNode</span> <span class="o">+</span> <span class="s2">&quot;.&quot;</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">&quot;_Meshes&quot;</span><span class="p">,</span> <span class="n">mesh</span> <span class="o">+</span> <span class="s2">&quot;.lodGroup&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+<div class="viewcode-block" id="ART_ExportMeshes.export"><a class="viewcode-back" href="../../exportMeshes.html#Interfaces.ART_ExportMeshes.ART_ExportMeshes.export">[docs]</a> <span class="k">def</span> <span class="nf">export</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Gathers all export data by calling on utils.findExportMeshData, parses the information, and for each LOD in</span>
+<span class="sd"> the list, calls on utils.ExportMesh(), passing in the appropriate data.</span>
+
+<span class="sd"> .. seealso:: utils.ExportMesh(), utils.findExportMeshData()</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">exportData</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">findExportMeshData</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">exportData</span><span class="p">:</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">])):</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;There are LODs with no valid file path to export to. Aborting.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+ <span class="k">return</span>
+ <span class="k">if</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;There are LODs that have no meshes associated with them. Aborting.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Critical</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+ <span class="k">return</span>
+
+ <span class="c1"># save the file</span>
+ <span class="n">saveFile</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sceneName</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Could not save file. Error: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
+ <span class="k">return</span>
+
+ <span class="c1"># export</span>
+ <span class="n">fileData</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">exportData</span><span class="p">:</span>
+ <span class="n">meshValue</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">pathValue</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">boneValue</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
+ <span class="n">poseData</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
+
+ <span class="n">utils</span><span class="o">.</span><span class="n">exportMesh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainUI</span><span class="p">,</span> <span class="n">meshValue</span><span class="p">,</span> <span class="n">pathValue</span><span class="p">,</span> <span class="n">boneValue</span><span class="p">,</span> <span class="n">poseData</span><span class="p">)</span>
+ <span class="n">fileData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pathValue</span><span class="p">)</span>
+
+ <span class="c1"># open the file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">saveFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># report and close</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Export Complete!&quot;</span><span class="p">)</span>
+
+ <span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">fileData</span><span class="p">:</span>
+ <span class="n">string</span> <span class="o">+=</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setDetailedText</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Information</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span></div></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/Documentation/build/_modules/Interfaces/ART_ExportMotionUI.html b/Documentation/build/_modules/Interfaces/ART_ExportMotionUI.html
new file mode 100644
index 0000000..4ad818b
--- /dev/null
+++ b/Documentation/build/_modules/Interfaces/ART_ExportMotionUI.html
@@ -0,0 +1,1302 @@
+
+
+<!doctype html>
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Interfaces.ART_ExportMotionUI &#8212; ARTv2 1.0 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/bizstyle.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="../../_static/bizstyle.js"></script>
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <!--[if lt IE 9]>
+ <script type="text/javascript" src="_static/css3-mediaqueries.js"></script>
+ <![endif]-->
+ </head>
+ <body role="document">
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for Interfaces.ART_ExportMotionUI</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Author: Jeremy Ernst</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># import statements</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">subprocess</span>
+<span class="kn">import</span> <span class="nn">tempfile</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
+<span class="kn">import</span> <span class="nn">System.interfaceUtils</span> <span class="k">as</span> <span class="nn">interfaceUtils</span>
+<span class="kn">import</span> <span class="nn">System.utils</span> <span class="k">as</span> <span class="nn">utils</span>
+<span class="kn">import</span> <span class="nn">maya.cmds</span> <span class="k">as</span> <span class="nn">cmds</span>
+<span class="kn">from</span> <span class="nn">ThirdParty.Qt</span> <span class="k">import</span> <span class="n">QtGui</span><span class="p">,</span> <span class="n">QtCore</span><span class="p">,</span> <span class="n">QtWidgets</span>
+
+
+<div class="viewcode-block" id="ART_ExportMotion"><a class="viewcode-back" href="../../exportMotion.html#Interfaces.ART_ExportMotionUI.ART_ExportMotion">[docs]</a><span class="k">class</span> <span class="nc">ART_ExportMotion</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> This class is used to export FBX animation from the rig to Unreal Engine. It supports morph targets,</span>
+<span class="sd"> custom attribute curves, and pre/post scripts.</span>
+
+<span class="sd"> It can be found on the animation sidebar with this icon:</span>
+<span class="sd"> .. image:: /images/exportMotionButton.png</span>
+
+<span class="sd"> .. todo:: Add the ability to export alembic and animation curve data.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="ART_ExportMotion.__init__"><a class="viewcode-back" href="../../exportMotion.html#Interfaces.ART_ExportMotionUI.ART_ExportMotion.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">animPickerUI</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+
+ <span class="nb">super</span><span class="p">(</span><span class="n">ART_ExportMotion</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
+
+ <span class="c1"># get the directory path of the tools</span>
+ <span class="n">settings</span> <span class="o">=</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">QSettings</span><span class="p">(</span><span class="s2">&quot;Epic Games&quot;</span><span class="p">,</span> <span class="s2">&quot;ARTv2&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;toolsPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;iconPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;scriptPath&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">&quot;projectPath&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span> <span class="o">=</span> <span class="n">animPickerUI</span>
+
+ <span class="c1"># write out qss based on user settings</span>
+ <span class="n">stylesheetDir</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scriptPath</span><span class="p">,</span> <span class="s2">&quot;Interfaces/StyleSheets/&quot;</span><span class="p">)</span>
+ <span class="n">stylesheets</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">sheet</span> <span class="ow">in</span> <span class="n">stylesheets</span><span class="p">:</span>
+ <span class="n">interfaceUtils</span><span class="o">.</span><span class="n">writeQSS</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">stylesheetDir</span><span class="p">,</span> <span class="n">sheet</span><span class="p">))</span>
+
+ <span class="c1"># build the UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">buildUI</span><span class="p">()</span></div>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">buildUI</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">window</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMotionWIN&quot;</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMotionWIN&quot;</span><span class="p">,</span> <span class="n">wnd</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># create the main window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMainWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pickerUI</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">resizeEvent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">windowResized</span>
+
+ <span class="c1"># create the main widget</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setCentralWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># create the mainLayout</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mainWidget</span><span class="p">)</span>
+
+ <span class="c1"># load stylesheet</span>
+ <span class="n">styleSheetFile</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core/Scripts/Interfaces/StyleSheets/animPicker.qss&quot;</span><span class="p">)</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">styleSheetFile</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">470</span><span class="p">,</span> <span class="mi">500</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">470</span><span class="p">,</span> <span class="mi">900</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">470</span><span class="p">,</span> <span class="mi">500</span><span class="p">)</span>
+
+ <span class="c1"># set qt object name</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pyART_ExportMotionWIN&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">setWindowTitle</span><span class="p">(</span><span class="s2">&quot;Export Motion&quot;</span><span class="p">)</span>
+
+ <span class="c1"># tabs</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span><span class="p">)</span>
+
+ <span class="c1"># style sheet</span>
+ <span class="n">stylesheet</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QTabBar::tab</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(19,132,183), stop:1 rgb(30,30,30));</span>
+<span class="s2"> width: 100px;</span>
+<span class="s2"> padding-left: -10px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:selected</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: rgb(14,100,143);</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:hover</span>
+<span class="s2"> {</span>
+<span class="s2"> background: rgb(19,132,183);</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:!selected</span>
+<span class="s2"> {</span>
+<span class="s2"> margin-top: 5px;</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabWidget::pane</span>
+<span class="s2"> {</span>
+<span class="s2"> border-top: 2px solid rgb(19,132,183);</span>
+<span class="s2"> border-left: 2px solid rgb(19,132,183);</span>
+<span class="s2"> border-right: 2px solid rgb(19,132,183);</span>
+<span class="s2"> border-bottom: 2px solid rgb(19,132,183);</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="n">stylesheet2</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="s2"> QTabBar::tab</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(19,132,183), stop:1 rgb(30,30,30));</span>
+<span class="s2"> width: 140px;</span>
+<span class="s2"> padding-left: -10px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:selected</span>
+<span class="s2"> {</span>
+<span class="s2"> background-color: rgb(14,100,143);</span>
+<span class="s2"> border: 2px solid black;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:hover</span>
+<span class="s2"> {</span>
+<span class="s2"> background: rgb(19,132,183);</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabBar::tab:!selected</span>
+<span class="s2"> {</span>
+<span class="s2"> margin-top: 5px;</span>
+<span class="s2"> }</span>
+<span class="s2"> QTabWidget::pane</span>
+<span class="s2"> {</span>
+<span class="s2"> border-top: 2px solid rgb(255,175,25);</span>
+<span class="s2"> border-left: 0px solid rgb(19,132,183);</span>
+<span class="s2"> border-right: 0px solid rgb(19,132,183);</span>
+<span class="s2"> border-bottom: 2px solid rgb(255,175,25);</span>
+<span class="s2"> }</span>
+<span class="s2"> &quot;&quot;&quot;</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">stylesheet</span><span class="p">)</span>
+
+ <span class="c1"># FBX Tab</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxExportTab</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxExportTab</span><span class="p">,</span> <span class="s2">&quot;FBX&quot;</span><span class="p">)</span>
+
+ <span class="c1"># ABC Tab</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">abcExportTab</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">abcExportTab</span><span class="p">,</span> <span class="s2">&quot;ABC&quot;</span><span class="p">)</span>
+
+ <span class="c1"># Anim Curve Tab</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">animExportTab</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">animExportTab</span><span class="p">,</span> <span class="s2">&quot;Animation&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #FBX TAB</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxExportTab</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">450</span><span class="p">,</span> <span class="mi">410</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">450</span><span class="p">,</span> <span class="mi">900</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">style</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="p">)</span>
+
+ <span class="c1"># FBX Export Tabs</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QTabWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="n">stylesheet2</span><span class="p">)</span>
+
+ <span class="c1"># Settings Tab</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="p">,</span> <span class="s2">&quot;Export Settings&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsTabLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="p">)</span>
+
+ <span class="c1"># Anim Curve Tab</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sequencesTab</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">addTab</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequencesTab</span><span class="p">,</span> <span class="s2">&quot;Sequences&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sequenceTabLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequencesTab</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># # Export Settings</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">330</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">900</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsTabLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportSettings</span><span class="p">)</span>
+
+ <span class="c1"># export meshes checkbox</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">(</span><span class="s2">&quot;Export Meshes&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout for morphs and custom attr curves</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_cb_layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings_cb_layout</span><span class="p">)</span>
+
+ <span class="c1"># export morphs and custom attr curves checkboxes</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">(</span><span class="s2">&quot;Export Morph Targets&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_cb_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">(</span><span class="s2">&quot;Export Custom Attribute Curves&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_cb_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout for list widgets (morphs and custom attrs)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_list_layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings_list_layout</span><span class="p">)</span>
+
+ <span class="c1"># list widgets for listing morphs and custom attr curves</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">185</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">185</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_list_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidget</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">185</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">185</span><span class="p">,</span> <span class="mi">150</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settings_list_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">setSelectionMode</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractItemView</span><span class="o">.</span><span class="n">ExtendedSelection</span><span class="p">)</span>
+
+ <span class="c1"># signal slots for checkboxes and lists</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">stateChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">disableWidget</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="o">.</span><span class="n">stateChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
+ <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">disableWidget</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">stateChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">stateChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout for pre-script</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">preScript_layout</span><span class="p">)</span>
+
+ <span class="c1"># pre-script checkbox, lineEdit, and button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScriptCB</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">(</span><span class="s2">&quot;Pre-Script: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">preScriptCB</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_path</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">preScript_path</span><span class="p">)</span>
+
+ <span class="n">ps_browseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">ps_browseBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">ps_browseBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/fileBrowse.png&quot;</span><span class="p">))</span>
+ <span class="n">ps_browseBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="n">ps_browseBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">ps_browseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fileBrowse_script</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">preScript_path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">preScriptCB</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">ps_browseBtn</span><span class="p">)</span>
+
+ <span class="c1"># horizontal layout for post-script</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_layout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">postScript_layout</span><span class="p">)</span>
+
+ <span class="c1"># pre-script checkbox, lineEdit, and button</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScriptCB</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">(</span><span class="s2">&quot;Post-Script: &quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">postScriptCB</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_path</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">postScript_path</span><span class="p">)</span>
+
+ <span class="n">pps_browseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">pps_browseBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">pps_browseBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/fileBrowse.png&quot;</span><span class="p">))</span>
+ <span class="n">pps_browseBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="n">pps_browseBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">pps_browseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fileBrowse_script</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">postScript_path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">postScriptCB</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_layout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">pps_browseBtn</span><span class="p">)</span>
+
+ <span class="c1"># save settings button</span>
+ <span class="n">button</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Save Export Settings&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">button</span><span class="p">)</span>
+ <span class="n">button</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_saveExportData</span><span class="p">)</span>
+
+ <span class="c1"># spacer</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">settingsLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># # FBX Sequences</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># =======================================================================</span>
+
+ <span class="c1"># # Add Sequence</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Add Sequence&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">50</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">50</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_addSequence</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sequenceTabLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addFbxAnimSequence</span><span class="p">)</span>
+
+ <span class="c1"># #Main Export Section</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">415</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="o">.</span><span class="n">setMaximumWidth</span><span class="p">(</span><span class="mi">415</span><span class="p">)</span>
+ <span class="n">scrollSizePolicy</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="o">.</span><span class="n">setSizePolicy</span><span class="p">(</span><span class="n">scrollSizePolicy</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;dark&quot;</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QScrollArea</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sequenceTabLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">280</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="mi">900</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setWidgetResizable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setVerticalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAlwaysOn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setHorizontalScrollBarPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">ScrollBarAlwaysOff</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="p">)</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxAnimSequenceFrame</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="c1"># spacer</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sequenceTabLayout</span><span class="o">.</span><span class="n">addSpacerItem</span><span class="p">(</span>
+ <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpacerItem</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Fixed</span><span class="p">,</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSizePolicy</span><span class="o">.</span><span class="n">Expanding</span><span class="p">))</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #export button</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">(</span><span class="s2">&quot;Export&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;blueButton&quot;</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">430</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">430</span><span class="p">,</span> <span class="mi">40</span><span class="p">))</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">doFbxExportBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_export</span><span class="p">)</span>
+
+ <span class="c1"># show window</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># find morphs</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">findMorphs</span><span class="p">()</span>
+
+ <span class="c1"># find custom curves</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">findCustomCurves</span><span class="p">()</span>
+
+ <span class="c1"># populate UI</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_populateUI</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_checkExportMesh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_populateUI</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+
+ <span class="c1"># remove existing animation sequences</span>
+ <span class="n">widgetsToRemove</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">child</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="n">widgetsToRemove</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span>
+
+ <span class="k">for</span> <span class="n">widget</span> <span class="ow">in</span> <span class="n">widgetsToRemove</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_removeAnimSequence</span><span class="p">(</span><span class="n">widget</span><span class="p">)</span>
+
+ <span class="c1"># get characters in scene</span>
+ <span class="n">characters</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">characterInfo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findCharacters</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">info</span> <span class="ow">in</span> <span class="n">characterInfo</span><span class="p">:</span>
+ <span class="n">characters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">info</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="c1"># check character nodes for fbxAnimData</span>
+ <span class="k">for</span> <span class="n">currentChar</span> <span class="ow">in</span> <span class="n">characters</span><span class="p">:</span>
+ <span class="c1"># loop through data, adding sequences and setting settings</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">currentChar</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.fbxAnimData&quot;</span><span class="p">):</span>
+ <span class="n">fbxData</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">currentChar</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.fbxAnimData&quot;</span><span class="p">))</span>
+
+ <span class="c1"># each entry in the fbxData list is a sequence with all the needed information</span>
+ <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">fbxData</span><span class="p">:</span>
+
+ <span class="c1"># first, set export settings</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="c1"># select morphs and curves to export in the lists if they exist</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">bShape</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">bShape</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">]:</span>
+ <span class="n">bShape</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">cCurve</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">cCurve</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">4</span><span class="p">]:</span>
+ <span class="n">cCurve</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># set pre/post script info</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScriptCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">5</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">preScript_path</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">5</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScriptCB</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">6</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postScript_path</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">6</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="c1"># add anim sequence</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_addSequence</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">7</span><span class="p">])</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_addSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+
+ <span class="c1"># get number of children of fbxSequenceLayout</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
+ <span class="n">index</span> <span class="o">=</span> <span class="n">children</span> <span class="o">-</span> <span class="mi">1</span>
+
+ <span class="c1"># contained groupBox for each sequence</span>
+ <span class="n">groupBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">()</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">260</span><span class="p">)</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setMaximumWidth</span><span class="p">(</span><span class="mi">380</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">insertWidget</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">)</span>
+
+ <span class="c1"># set context menu policy on groupbox</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setContextMenuPolicy</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">CustomContextMenu</span><span class="p">)</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">customContextMenuRequested</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_createContextMenu</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+
+ <span class="c1"># add frame layout to groupbox</span>
+ <span class="n">frameLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">groupBox</span><span class="p">)</span>
+
+ <span class="c1"># add frame to groupbox</span>
+ <span class="n">frame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">frame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;light&quot;</span><span class="p">)</span>
+ <span class="n">frameLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
+
+ <span class="n">vLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
+ <span class="n">vLayout</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;vLayout&quot;</span><span class="p">)</span>
+
+ <span class="c1"># signal slot for groupbox checkbox</span>
+ <span class="n">QtCore</span><span class="o">.</span><span class="n">QObject</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">groupBox</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">SIGNAL</span><span class="p">(</span><span class="s2">&quot;toggled(bool)&quot;</span><span class="p">),</span> <span class="n">frame</span><span class="o">.</span><span class="n">setVisible</span><span class="p">)</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #portrait and character combo box</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">characterLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">characterLayout</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;charLayout&quot;</span><span class="p">)</span>
+ <span class="n">vLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">characterLayout</span><span class="p">)</span>
+
+ <span class="n">portrait</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">()</span>
+ <span class="n">portrait</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;charPortrait&quot;</span><span class="p">)</span>
+ <span class="n">portrait</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">portrait</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">))</span>
+ <span class="n">characterLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">portrait</span><span class="p">)</span>
+
+ <span class="n">characterComboBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;charComboBox&quot;</span><span class="p">)</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">setMinimumHeight</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">setMaximumHeight</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
+ <span class="n">characterLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">characterComboBox</span><span class="p">)</span>
+
+ <span class="c1"># populate combo box</span>
+ <span class="n">characters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findCharacters</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">characters</span><span class="p">:</span>
+ <span class="n">characterName</span> <span class="o">=</span> <span class="n">character</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">characterName</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">updateIcon</span><span class="p">(</span><span class="n">characterComboBox</span><span class="p">,</span> <span class="n">portrait</span><span class="p">,</span> <span class="n">characters</span><span class="p">)</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">currentIndexChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">updateIcon</span><span class="p">,</span> <span class="n">characterComboBox</span><span class="p">,</span> <span class="n">portrait</span><span class="p">,</span> <span class="n">characters</span><span class="p">))</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #Checkbox, path, and browse button</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">pathLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;pathLayout&quot;</span><span class="p">)</span>
+ <span class="n">vLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">pathLayout</span><span class="p">)</span>
+
+ <span class="n">checkBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QCheckBox</span><span class="p">()</span>
+ <span class="n">checkBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;exportCheckBox&quot;</span><span class="p">)</span>
+ <span class="n">checkBox</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">checkBox</span><span class="p">)</span>
+
+ <span class="n">pathField</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">()</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;exportPath&quot;</span><span class="p">)</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">pathField</span><span class="p">)</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>
+
+ <span class="n">browseBtn</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QPushButton</span><span class="p">()</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setMaximumSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
+ <span class="n">pathLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">browseBtn</span><span class="p">)</span>
+ <span class="n">icon</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/fileBrowse.png&quot;</span><span class="p">))</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setIconSize</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">QSize</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
+ <span class="n">browseBtn</span><span class="o">.</span><span class="n">clicked</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fileBrowse_export</span><span class="p">,</span> <span class="n">pathField</span><span class="p">))</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #frame range, and frame rate</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">optionLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">vLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">optionLayout</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;optionLayout&quot;</span><span class="p">)</span>
+
+ <span class="n">label1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Start Frame: &quot;</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label1</span><span class="p">)</span>
+ <span class="n">label1</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background: transparent;&quot;</span><span class="p">)</span>
+
+ <span class="n">startFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpinBox</span><span class="p">()</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;startFrame&quot;</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">startFrame</span><span class="p">)</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">setButtonSymbols</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractSpinBox</span><span class="o">.</span><span class="n">NoButtons</span><span class="p">)</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="o">-</span><span class="mi">1000</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
+
+ <span class="n">label2</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot; End Frame: &quot;</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label2</span><span class="p">)</span>
+ <span class="n">label2</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background: transparent;&quot;</span><span class="p">)</span>
+ <span class="n">label2</span><span class="o">.</span><span class="n">setAlignment</span><span class="p">(</span><span class="n">QtCore</span><span class="o">.</span><span class="n">Qt</span><span class="o">.</span><span class="n">AlignCenter</span><span class="p">)</span>
+
+ <span class="n">endFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QSpinBox</span><span class="p">()</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;endFrame&quot;</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">endFrame</span><span class="p">)</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">setButtonSymbols</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractSpinBox</span><span class="o">.</span><span class="n">NoButtons</span><span class="p">)</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="o">-</span><span class="mi">1000</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span>
+
+ <span class="c1"># set frame range by default based on current timeline</span>
+ <span class="n">start</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">playbackOptions</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ast</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">end</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">playbackOptions</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">aet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">start</span><span class="p">)</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">end</span><span class="p">)</span>
+
+ <span class="n">frameRate</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;frameRate&quot;</span><span class="p">)</span>
+ <span class="n">optionLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">frameRate</span><span class="p">)</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">hide</span><span class="p">()</span>
+
+ <span class="c1"># add items to frame rate</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;ntsc&quot;</span><span class="p">)</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;ntscf&quot;</span><span class="p">)</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;film&quot;</span><span class="p">)</span>
+
+ <span class="c1"># set the FPS to the current scene setting</span>
+ <span class="n">fps</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">currentUnit</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">time</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">fps</span> <span class="o">==</span> <span class="s2">&quot;film&quot;</span><span class="p">:</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">fps</span> <span class="o">==</span> <span class="s2">&quot;ntsc&quot;</span><span class="p">:</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">fps</span> <span class="o">==</span> <span class="s2">&quot;ntscf&quot;</span><span class="p">:</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #advanced options</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">advancedGroup</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">(</span><span class="s2">&quot;Advanced Settings&quot;</span><span class="p">)</span>
+ <span class="n">vLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">advancedGroup</span><span class="p">)</span>
+ <span class="n">advancedGroup</span><span class="o">.</span><span class="n">setCheckable</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">advancedLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">advancedGroup</span><span class="p">)</span>
+ <span class="n">advancedFrame</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">()</span>
+ <span class="n">advancedLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">advancedFrame</span><span class="p">)</span>
+ <span class="n">advancedFrameLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QVBoxLayout</span><span class="p">(</span><span class="n">advancedFrame</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #rotation interpolation</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">interpLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">advancedFrameLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">interpLayout</span><span class="p">)</span>
+
+ <span class="n">label3</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Rotation Interpolation: &quot;</span><span class="p">)</span>
+ <span class="n">interpLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label3</span><span class="p">)</span>
+ <span class="n">label3</span><span class="o">.</span><span class="n">setStyleSheet</span><span class="p">(</span><span class="s2">&quot;background: transparent;&quot;</span><span class="p">)</span>
+
+ <span class="n">interpCombo</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="n">interpLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">interpCombo</span><span class="p">)</span>
+ <span class="n">interpCombo</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;rotInterp&quot;</span><span class="p">)</span>
+ <span class="n">interpCombo</span><span class="o">.</span><span class="n">setMinimumWidth</span><span class="p">(</span><span class="mi">150</span><span class="p">)</span>
+
+ <span class="n">interpCombo</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Quaternion Slerp&quot;</span><span class="p">)</span>
+ <span class="n">interpCombo</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Independent Euler-Angle&quot;</span><span class="p">)</span>
+
+ <span class="c1"># =======================================================================</span>
+ <span class="c1"># #sample rate and root options</span>
+ <span class="c1"># =======================================================================</span>
+ <span class="n">rateRootLayout</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QHBoxLayout</span><span class="p">()</span>
+ <span class="n">advancedFrameLayout</span><span class="o">.</span><span class="n">addLayout</span><span class="p">(</span><span class="n">rateRootLayout</span><span class="p">)</span>
+
+ <span class="n">label4</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s2">&quot;Sample Rate: &quot;</span><span class="p">)</span>
+ <span class="n">rateRootLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">label4</span><span class="p">)</span>
+
+ <span class="n">sampleRate</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QDoubleSpinBox</span><span class="p">()</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;sampleRate&quot;</span><span class="p">)</span>
+ <span class="n">rateRootLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">sampleRate</span><span class="p">)</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setButtonSymbols</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QAbstractSpinBox</span><span class="o">.</span><span class="n">NoButtons</span><span class="p">)</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setSingleStep</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="mf">1.00</span><span class="p">)</span>
+
+ <span class="n">rootComboBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QComboBox</span><span class="p">()</span>
+ <span class="n">rootComboBox</span><span class="o">.</span><span class="n">setObjectName</span><span class="p">(</span><span class="s2">&quot;rootExportOptions&quot;</span><span class="p">)</span>
+ <span class="n">rootComboBox</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Export Root Animation&quot;</span><span class="p">)</span>
+ <span class="n">rootComboBox</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Zero Root&quot;</span><span class="p">)</span>
+ <span class="n">rootComboBox</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="s2">&quot;Zero Root, Keep World Space&quot;</span><span class="p">)</span>
+ <span class="n">rateRootLayout</span><span class="o">.</span><span class="n">addWidget</span><span class="p">(</span><span class="n">rootComboBox</span><span class="p">)</span>
+
+ <span class="c1"># signal slot for groupbox checkbox</span>
+ <span class="n">QtCore</span><span class="o">.</span><span class="n">QObject</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">advancedGroup</span><span class="p">,</span> <span class="n">QtCore</span><span class="o">.</span><span class="n">SIGNAL</span><span class="p">(</span><span class="s2">&quot;toggled(bool)&quot;</span><span class="p">),</span> <span class="n">advancedFrame</span><span class="o">.</span><span class="n">setVisible</span><span class="p">)</span>
+ <span class="n">advancedGroup</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># signal slot for groupbox title</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">currentIndexChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">valueChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">valueChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+ <span class="n">checkBox</span><span class="o">.</span><span class="n">stateChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">))</span>
+
+ <span class="c1"># create groupbox title</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_updateTitle</span><span class="p">(</span><span class="n">groupBox</span><span class="p">)</span>
+
+ <span class="c1"># set data if coming from duplicate call</span>
+ <span class="k">if</span> <span class="n">data</span><span class="p">:</span>
+
+ <span class="c1"># set character combo box</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">characterComboBox</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">characterComboBox</span><span class="o">.</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">characterComboBox</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="c1"># set export checkbox</span>
+ <span class="n">checkBox</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+ <span class="c1"># set export path</span>
+ <span class="n">pathField</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+
+ <span class="c1"># set start frame</span>
+ <span class="n">startFrame</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
+
+ <span class="c1"># set end frame</span>
+ <span class="n">endFrame</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
+
+ <span class="c1"># set FPS</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">frameRate</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">frameRate</span><span class="o">.</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">5</span><span class="p">]:</span>
+ <span class="n">frameRate</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="c1"># set rotation interpolation</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">interpCombo</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">interpCombo</span><span class="o">.</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">6</span><span class="p">]:</span>
+ <span class="n">interpCombo</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="c1"># set sample rate</span>
+ <span class="n">sampleRate</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">7</span><span class="p">])</span>
+
+ <span class="c1"># set root export</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">rootComboBox</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">text</span> <span class="o">=</span> <span class="n">rootComboBox</span><span class="o">.</span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="n">data</span><span class="p">[</span><span class="mi">8</span><span class="p">]:</span>
+ <span class="n">rootComboBox</span><span class="o">.</span><span class="n">setCurrentIndex</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_createContextMenu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">point</span><span class="p">):</span>
+
+ <span class="c1"># icons</span>
+ <span class="n">icon_delete</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/delete.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_duplicate</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/duplicate.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_collapse</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/upArrow.png&quot;</span><span class="p">))</span>
+ <span class="n">icon_expand</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QIcon</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">iconsPath</span><span class="p">,</span> <span class="s2">&quot;System/downArrow.png&quot;</span><span class="p">))</span>
+
+ <span class="c1"># create the context menu</span>
+ <span class="n">contextMenu</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMenu</span><span class="p">()</span>
+ <span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_delete</span><span class="p">,</span> <span class="s2">&quot;Remove Sequence&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_removeAnimSequence</span><span class="p">,</span> <span class="n">widget</span><span class="p">))</span>
+ <span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_duplicate</span><span class="p">,</span> <span class="s2">&quot;Duplicate Sequence&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_duplicateSequence</span><span class="p">,</span> <span class="n">widget</span><span class="p">))</span>
+ <span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_expand</span><span class="p">,</span> <span class="s2">&quot;Expand All Sequences&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_expandAllSequences</span><span class="p">,</span> <span class="kc">True</span><span class="p">))</span>
+ <span class="n">contextMenu</span><span class="o">.</span><span class="n">addAction</span><span class="p">(</span><span class="n">icon_collapse</span><span class="p">,</span> <span class="s2">&quot;Collapse All Sequences&quot;</span><span class="p">,</span> <span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbx_expandAllSequences</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+ <span class="n">contextMenu</span><span class="o">.</span><span class="n">exec_</span><span class="p">(</span><span class="n">widget</span><span class="o">.</span><span class="n">mapToGlobal</span><span class="p">(</span><span class="n">point</span><span class="p">))</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_removeAnimSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
+
+ <span class="n">widget</span><span class="o">.</span><span class="n">setParent</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_saveExportData</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_duplicateSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
+
+ <span class="n">sequenceData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbx_getSequenceInfo</span><span class="p">(</span><span class="n">widget</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbx_addSequence</span><span class="p">(</span><span class="n">sequenceData</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fileBrowse_export</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">okc</span><span class="o">=</span><span class="s2">&quot;Export&quot;</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.fbx&quot;</span><span class="p">)</span>
+ <span class="n">nicePath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">path</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">nicePath</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fileBrowse_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">checkbox</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">fileDialog2</span><span class="p">(</span><span class="n">fm</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">okc</span><span class="o">=</span><span class="s2">&quot;Accept&quot;</span><span class="p">,</span> <span class="nb">dir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">ff</span><span class="o">=</span><span class="s2">&quot;*.py;;*.mel&quot;</span><span class="p">)</span>
+ <span class="n">nicePath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">path</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="n">nicePath</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">checkbox</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">checkbox</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="k">pass</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_export</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="c1"># save settings</span>
+ <span class="n">characterData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbx_saveExportData</span><span class="p">()</span>
+
+ <span class="c1"># find mayapy interpreter location</span>
+ <span class="n">mayapy</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">getMayaPyLoc</span><span class="p">()</span>
+
+ <span class="c1"># message box for confirming save action</span>
+ <span class="n">msgBax</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;Please make sure any changes to the current file are saved before continuing.</span><span class="se">\</span>
+<span class="s2"> This process will be creating a temporary file to do all of the exporting from.&quot;</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Warning</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setStandardButtons</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span> <span class="o">|</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Cancel</span><span class="p">)</span>
+ <span class="n">msgBax</span><span class="o">.</span><span class="n">setDefaultButton</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span><span class="p">)</span>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">msgBax</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">ret</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span><span class="p">:</span>
+
+ <span class="c1"># save copy of scene to temp location</span>
+ <span class="n">sourceFile</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sceneName</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">filePath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">sourceFile</span><span class="p">)</span>
+ <span class="n">tempFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="s2">&quot;export_TEMP.ma&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">rename</span><span class="o">=</span><span class="n">tempFile</span><span class="p">)</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">save</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mayaAscii&quot;</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># pass tempFile and characterData to mayapy instance for processing</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">mayapy</span><span class="p">):</span>
+ <span class="n">script</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnFriendlyPath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">toolsPath</span><span class="p">,</span> <span class="s2">&quot;Core\Scripts\System\ART_FbxExport.py&quot;</span><span class="p">))</span>
+
+ <span class="c1"># create a temp file with the json data</span>
+ <span class="k">with</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">NamedTemporaryFile</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">as</span> <span class="n">temp</span><span class="p">:</span>
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">characterData</span><span class="p">,</span> <span class="n">temp</span><span class="p">)</span>
+ <span class="n">temp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="c1"># create a log file</span>
+ <span class="n">stdoutFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="s2">&quot;export_log.txt&quot;</span><span class="p">)</span>
+ <span class="n">out</span> <span class="o">=</span> <span class="n">file</span><span class="p">(</span><span class="n">stdoutFile</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span>
+
+ <span class="c1"># open mayapy, passing in export file and character data</span>
+ <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">mayapy</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">script</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">tempFile</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span>
+ <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">temp</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">out</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">out</span><span class="p">)</span>
+
+ <span class="c1"># close the output file (for logging)</span>
+ <span class="n">out</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">msgBox</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="p">()</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="s2">&quot;mayapy executable not found. Currently not implemented for mac and linux.&quot;</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setIcon</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Error</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setStandardButtons</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span> <span class="o">|</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Cancel</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">setDefaultButton</span><span class="p">(</span><span class="n">QtWidgets</span><span class="o">.</span><span class="n">QMessageBox</span><span class="o">.</span><span class="n">Ok</span><span class="p">)</span>
+ <span class="n">msgBox</span><span class="o">.</span><span class="n">exec_</span><span class="p">()</span>
+
+ <span class="c1"># reopen the original file</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="n">sourceFile</span><span class="p">,</span> <span class="nb">open</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">findMorphs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="c1"># clear list</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="n">characterMeshes</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get all characters</span>
+ <span class="n">characters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findCharacters</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">characters</span><span class="p">:</span>
+ <span class="n">currentCharacter</span> <span class="o">=</span> <span class="n">character</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+ <span class="c1"># get meshes off of character node</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">currentCharacter</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT&quot;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">currentCharacter</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.LOD_0_Meshes&quot;</span><span class="p">):</span>
+ <span class="n">characterMeshes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">currentCharacter</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT.LOD_0_Meshes&quot;</span><span class="p">)</span>
+
+ <span class="c1"># get skinClusters in scene and query their connections</span>
+ <span class="n">skins</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;skinCluster&quot;</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">skin</span> <span class="ow">in</span> <span class="n">skins</span><span class="p">:</span>
+ <span class="n">shapeInfo</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">skin</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;blendShape&quot;</span><span class="p">,</span> <span class="n">et</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">mesh</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listConnections</span><span class="p">(</span><span class="n">skin</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;mesh&quot;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">mesh</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="c1"># confirm that the blendshape found belongs to one of our character meshes. Then add to list</span>
+ <span class="k">if</span> <span class="n">mesh</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">characterMeshes</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">shapeInfo</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">info</span> <span class="ow">in</span> <span class="n">shapeInfo</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cmds</span><span class="o">.</span><span class="n">nodeType</span><span class="p">(</span><span class="n">info</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;blendShape&quot;</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">info</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">findCustomCurves</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="c1"># get all characters</span>
+ <span class="n">characters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">findCharacters</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">characters</span><span class="p">:</span>
+ <span class="n">currentCharacter</span> <span class="o">=</span> <span class="n">character</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">rootBone</span> <span class="o">=</span> <span class="n">currentCharacter</span> <span class="o">+</span> <span class="s2">&quot;:root&quot;</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">rootBone</span><span class="p">,</span> <span class="n">keyable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">standardAttrs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;translateX&quot;</span><span class="p">,</span> <span class="s2">&quot;translateY&quot;</span><span class="p">,</span> <span class="s2">&quot;translateZ&quot;</span><span class="p">,</span> <span class="s2">&quot;rotateX&quot;</span><span class="p">,</span> <span class="s2">&quot;rotateY&quot;</span><span class="p">,</span> <span class="s2">&quot;rotateZ&quot;</span><span class="p">,</span>
+ <span class="s2">&quot;scaleX&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleY&quot;</span><span class="p">,</span> <span class="s2">&quot;scaleZ&quot;</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</span><span class="p">]</span>
+
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">standardAttrs</span><span class="p">:</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QListWidgetItem</span><span class="p">(</span><span class="n">currentCharacter</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">addItem</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setSelected</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">findCharacters</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="n">characterInfo</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="n">allNodes</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">ls</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="s2">&quot;network&quot;</span><span class="p">)</span>
+ <span class="n">characterNodes</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">allNodes</span><span class="p">:</span>
+ <span class="n">attrs</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">listAttr</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+ <span class="k">if</span> <span class="s2">&quot;rigModules&quot;</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">characterNodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
+
+ <span class="c1"># go through each node, find the character name, the namespace on the node, and the picker attribute</span>
+ <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">characterNodes</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.namespace&quot;</span><span class="p">)</span>
+ <span class="k">except</span><span class="p">:</span>
+ <span class="n">namespace</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.name&quot;</span><span class="p">)</span>
+
+ <span class="c1"># add the icon found on the node&#39;s icon path attribute to the tab</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">cmds</span><span class="o">.</span><span class="n">getAttr</span><span class="p">(</span><span class="n">node</span> <span class="o">+</span> <span class="s2">&quot;.iconPath&quot;</span><span class="p">)</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">returnNicePath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">projectPath</span><span class="p">,</span> <span class="n">iconPath</span><span class="p">)</span>
+
+ <span class="n">characterInfo</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">namespace</span><span class="p">,</span> <span class="n">iconPath</span><span class="p">])</span>
+
+ <span class="k">return</span> <span class="n">characterInfo</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">updateIcon</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comboBox</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">characterInfo</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+
+ <span class="c1"># get current selection of combo box</span>
+ <span class="n">characterName</span> <span class="o">=</span> <span class="n">comboBox</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+
+ <span class="c1"># loop through characterInfo, find matching characterName, and get icon path</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">characterInfo</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">characterName</span> <span class="o">==</span> <span class="n">each</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">iconPath</span> <span class="o">=</span> <span class="n">each</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">img</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QImage</span><span class="p">(</span><span class="n">iconPath</span><span class="p">)</span>
+ <span class="n">pixmap</span> <span class="o">=</span> <span class="n">QtGui</span><span class="o">.</span><span class="n">QPixmap</span><span class="p">(</span><span class="n">img</span><span class="o">.</span><span class="n">scaledToWidth</span><span class="p">(</span><span class="mi">30</span><span class="p">))</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">setPixmap</span><span class="p">(</span><span class="n">pixmap</span><span class="p">)</span>
+ <span class="n">label</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">windowResized</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
+
+ <span class="n">currentSize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mainWin</span><span class="o">.</span><span class="n">size</span><span class="p">()</span>
+ <span class="n">height</span> <span class="o">=</span> <span class="n">currentSize</span><span class="o">.</span><span class="n">height</span><span class="p">()</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabLayoutFrame</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="mi">450</span><span class="p">,</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">50</span><span class="p">)</span>
+
+ <span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">size</span><span class="p">()</span>
+ <span class="n">width</span> <span class="o">=</span> <span class="n">width</span><span class="o">.</span><span class="n">width</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxTabs</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">50</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fbxMainScroll</span><span class="o">.</span><span class="n">setMinimumSize</span><span class="p">(</span><span class="mi">415</span><span class="p">,</span> <span class="n">height</span> <span class="o">-</span> <span class="mi">220</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">disableWidget</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">checkbox</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+
+ <span class="n">state</span> <span class="o">=</span> <span class="n">checkbox</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">state</span><span class="p">:</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">widget</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">widget</span><span class="o">.</span><span class="n">setEnabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">widget</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="n">item</span><span class="o">.</span><span class="n">setHidden</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_updateTitle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+
+ <span class="c1"># get info from interface</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">children</span> <span class="o">=</span> <span class="n">groupBox</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">:</span>
+ <span class="n">contents</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">contents</span><span class="p">:</span>
+ <span class="n">objectName</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;charComboBox&quot;</span><span class="p">:</span>
+ <span class="n">char</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;exportCheckBox&quot;</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;exportPath&quot;</span><span class="p">:</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">filename</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;startFrame&quot;</span><span class="p">:</span>
+ <span class="n">startFrame</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">startFrame</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;endFrame&quot;</span><span class="p">:</span>
+ <span class="n">endFrame</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">endFrame</span><span class="p">)</span>
+
+ <span class="n">titleString</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;, &quot;</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="n">data</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;, &quot;</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="s2">&quot;[&quot;</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="o">+</span> <span class="s2">&quot;: &quot;</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span> <span class="o">+</span> <span class="s2">&quot;]&quot;</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">titleString</span> <span class="o">+=</span> <span class="s2">&quot;Not Exporting..&quot;</span>
+ <span class="n">groupBox</span><span class="o">.</span><span class="n">setTitle</span><span class="p">(</span><span class="n">titleString</span><span class="p">)</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_saveExportData</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+
+ <span class="n">exportData</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="c1"># get main export settings</span>
+ <span class="n">exportMesh</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMeshCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">exportMorph</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphsCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">exportCurve</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportCustomAttrsCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exportMesh</span><span class="p">)</span>
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exportMorph</span><span class="p">)</span>
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exportCurve</span><span class="p">)</span>
+
+ <span class="c1"># get selected morphs</span>
+ <span class="n">morphs</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportMorphList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">isSelected</span><span class="p">():</span>
+ <span class="n">morphs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="c1"># get selected curves</span>
+ <span class="n">curves</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exportCurveList</span><span class="o">.</span><span class="n">item</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">isSelected</span><span class="p">():</span>
+ <span class="n">curves</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">text</span><span class="p">())</span>
+
+ <span class="c1"># pre and post script</span>
+ <span class="n">preScript</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">preScriptCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">preScript_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">preScript_path</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="n">postScript</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">postScriptCB</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">postScript_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">postScript_path</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">morphs</span><span class="p">)</span>
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curves</span><span class="p">)</span>
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">preScript</span><span class="p">,</span> <span class="n">preScript_path</span><span class="p">])</span>
+ <span class="n">exportData</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">postScript</span><span class="p">,</span> <span class="n">postScript_path</span><span class="p">])</span>
+
+ <span class="c1"># get fbx sequences and settings</span>
+ <span class="n">characterData</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">child</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">sequenceData</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbx_getSequenceInfo</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">exportData</span><span class="p">)</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sequenceData</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">sequenceData</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">characterData</span><span class="p">:</span>
+ <span class="n">characterData</span><span class="p">[</span><span class="n">sequenceData</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">]</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">currentData</span> <span class="o">=</span> <span class="n">characterData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">sequenceData</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+ <span class="n">currentData</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+ <span class="n">characterData</span><span class="p">[</span><span class="n">sequenceData</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">currentData</span>
+
+ <span class="c1"># loop through each key (character) in the dictionary, and write its data to the network node</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">characterData</span><span class="p">:</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">characterData</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">each</span><span class="p">)</span>
+
+ <span class="c1"># Add that data to the character node</span>
+ <span class="n">networkNode</span> <span class="o">=</span> <span class="n">each</span> <span class="o">+</span> <span class="s2">&quot;:ART_RIG_ROOT&quot;</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">cmds</span><span class="o">.</span><span class="n">objExists</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.fbxAnimData&quot;</span><span class="p">):</span>
+ <span class="n">cmds</span><span class="o">.</span><span class="n">addAttr</span><span class="p">(</span><span class="n">networkNode</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">&quot;fbxAnimData&quot;</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="n">cmds</span><span class="o">.</span><span class="n">setAttr</span><span class="p">(</span><span class="n">networkNode</span> <span class="o">+</span> <span class="s2">&quot;.fbxAnimData&quot;</span><span class="p">,</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">data</span><span class="p">),</span> <span class="nb">type</span><span class="o">=</span><span class="s2">&quot;string&quot;</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">characterData</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_getSequenceInfo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupBox</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+
+ <span class="c1"># get info from interface</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
+
+ <span class="n">children</span> <span class="o">=</span> <span class="n">groupBox</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">each</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">:</span>
+ <span class="n">contents</span> <span class="o">=</span> <span class="n">each</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">contents</span><span class="p">:</span>
+ <span class="n">objectName</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;charComboBox&quot;</span><span class="p">:</span>
+ <span class="n">char</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;exportCheckBox&quot;</span><span class="p">:</span>
+ <span class="n">value</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">isChecked</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;exportPath&quot;</span><span class="p">:</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">text</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;startFrame&quot;</span><span class="p">:</span>
+ <span class="n">startFrame</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">startFrame</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;endFrame&quot;</span><span class="p">:</span>
+ <span class="n">endFrame</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">endFrame</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">objectName</span> <span class="o">==</span> <span class="s2">&quot;frameRate&quot;</span><span class="p">:</span>
+ <span class="n">fps</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fps</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="n">subChildren</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+
+ <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">subChildren</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">sub</span><span class="p">)</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QFrame</span><span class="p">:</span>
+ <span class="n">advancedChildren</span> <span class="o">=</span> <span class="n">sub</span><span class="o">.</span><span class="n">children</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">advancedChild</span> <span class="ow">in</span> <span class="n">advancedChildren</span><span class="p">:</span>
+ <span class="n">advancedObj</span> <span class="o">=</span> <span class="n">advancedChild</span><span class="o">.</span><span class="n">objectName</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">advancedObj</span> <span class="o">==</span> <span class="s2">&quot;sampleRate&quot;</span><span class="p">:</span>
+ <span class="n">rate</span> <span class="o">=</span> <span class="n">advancedChild</span><span class="o">.</span><span class="n">value</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">rate</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">advancedObj</span> <span class="o">==</span> <span class="s2">&quot;rotInterp&quot;</span><span class="p">:</span>
+ <span class="n">interp</span> <span class="o">=</span> <span class="n">advancedChild</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">interp</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">advancedObj</span> <span class="o">==</span> <span class="s2">&quot;rootExportOptions&quot;</span><span class="p">:</span>
+ <span class="n">root</span> <span class="o">=</span> <span class="n">advancedChild</span><span class="o">.</span><span class="n">currentText</span><span class="p">()</span>
+ <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">data</span>
+
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="c1"># # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #</span>
+ <span class="k">def</span> <span class="nf">fbx_expandAllSequences</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
+
+ <span class="c1"># get info from interface</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">child</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fbxSequenceLayout</span><span class="o">.</span><span class="n">itemAt</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">())</span> <span class="o">==</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QGroupBox</span><span class="p">:</span>
+ <span class="n">child</span><span class="o">.</span><span class="n">widget</span><span class="p">()</span><span class="o">.</span><span class="n">setChecked</span><span class="p">(</span><span class="n">state</span><span class="p">)</span></div>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="../../genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="../../py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="nav-item nav-item-0"><a href="../../index.html">ARTv2 1.0 documentation</a> &#187;</li>
+ <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ &#169; Copyright 2017, Jeremy Ernst.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.2.
+ </div>
+ </body>
+</html> \ No newline at end of file