diff options
Diffstat (limited to 'Documentation/build/_modules/Interfaces')
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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"scriptPath"</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">"projectPath"</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">"""</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"> """</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">"pyART_AddToCanvasWIN"</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">"pyART_AddToCanvasWIN"</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">"Core/Scripts/Interfaces/StyleSheets/animPicker.qss"</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">"r"</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">"pyART_AddToCanvasWIN"</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">"Add Module To Canvas"</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">"Available Modules:"</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">"boldFont"</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">"Add Selected To Canvas"</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">"blueButton"</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">"""</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"> """</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">".moduleName"</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">"charNode"</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">"""</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"> """</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">"charNode"</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">".moduleType"</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">".moduleName"</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">"RigModules."</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">".namespace"</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">".namespace"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">namespace</span> <span class="o">=</span> <span class="s2">""</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'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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"charNode"</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">".rigModules"</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">".namespace"</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">".namespace"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</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'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">"""</span> +<span class="sd"> deletes the UI.</span> + +<span class="sd"> """</span> + + <span class="n">cmds</span><span class="o">.</span><span class="n">deleteUI</span><span class="p">(</span><span class="s2">"pyART_AddToCanvasWIN"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"Add Module"</span> +<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">"pyArtAddModuleUi"</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"mid"</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">"Choose Parent Bone"</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">"Search..."</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">"root"</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">"Prefix: "</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">"Suffix: "</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">"Module Name: "</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">"ART_Leg_Standard"</span><span class="p">,</span> <span class="s2">"ART_Arm_Standard"</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">""</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">"Right Side"</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">"Left Side"</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">"CREATE"</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">"blueButton"</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">"""</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"> """</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">""</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">></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">"_"</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">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">string</span> <span class="o">+=</span> <span class="s2">"_"</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">"""</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"> """</span> + + <span class="n">mod</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="s2">"RigModules."</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">".moduleName"</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">"Name Exists"</span><span class="p">,</span> + <span class="n">message</span><span class="o">=</span><span class="s2">"A module with that name already exists. Please enter a unique name."</span><span class="p">,</span> + <span class="n">icon</span><span class="o">=</span><span class="s2">"critical"</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'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">"ART_Leg_Standard"</span><span class="p">,</span> <span class="s2">"ART_Arm_Standard"</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">"Left"</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">"Right"</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">".side"</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">".side"</span><span class="p">,</span> <span class="s2">"Right"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"string"</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">".ma"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_"</span> <span class="o">+</span> <span class="n">side</span> <span class="o">+</span> <span class="s2">".ma"</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">></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">"_"</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">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="s2">"_"</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">".Created_Bones"</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">"::"</span><span class="p">)</span> + + <span class="n">attrString</span> <span class="o">=</span> <span class="s2">""</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">></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">"::"</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">".Created_Bones"</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">".Created_Bones"</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">"string"</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">".parentModuleBone"</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">".parentModuleBone"</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">"string"</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">""</span> + + <span class="k">if</span> <span class="n">parent</span> <span class="o">==</span> <span class="s2">"root"</span><span class="p">:</span> + <span class="n">mover</span> <span class="o">=</span> <span class="s2">"root_mover"</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">"_mover_grp"</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">"_mover_grp"</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">"moveSuperContext"</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">"""</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"> """</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"""</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"> """</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">"ART_addRemoveInfsWin"</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">"ART_addRemoveInfsWin"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"ART_addRemoveInfsWin"</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">"Add/Remove Influences"</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">"dark"</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">"Show Influences In Skin"</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">"Show Influences Not In Skin"</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">"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">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">"Refresh"</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">"blueButton"</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">"Add"</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">"blueButton"</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">"Remove"</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">"blueButton"</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">"Remove Unused"</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">"blueButton"</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">"Prune Weights"</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">"blueButton"</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">"""</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"> """</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">></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">"""</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"> """</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">></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">"|"</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">"|"</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">"""</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"> """</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">"*"</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">"""</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"> """</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">></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">"""</span> +<span class="sd"> Calls on Maya's built in prune skin weights tool.</span> + +<span class="sd"> """</span> + + <span class="n">mel</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="s2">"PruneSmallWeightsOptions;"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"""</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"> """</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">"ART_AimModeWin"</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">"ART_AimModeWin"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"ART_AimModeWin"</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">"Aim Mode"</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">"Select All"</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">"blueButton"</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">"Clear Selection"</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">"blueButton"</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">"On"</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">"Turn on Aim Mode for selected modules."</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">"blueButton"</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">"Off"</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">"Turn off Aim Mode for selected modules."</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">"blueButton"</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">".moduleName"</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">".canAim"</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">".canAim"</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">".aimMode"</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">"""</span> +<span class="sd"> Calls on each selected module'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"> """</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'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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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< maya2017> 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">"""</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"> """</span> + + <span class="c1"># get maya'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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"scriptPath"</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">"projectPath"</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">"Interfaces/StyleSheets/"</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">"""</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"> """</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">"Core/Scripts/Interfaces/StyleSheets/animPicker.qss"</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">"r"</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">"pyART_AnimTools_Win"</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">"Animation Tools"</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">"dark"</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">"Edit"</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">"blueButton"</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">"Make module pickers editable (move, scale, rotate)"</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">"Create"</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">"blueButton"</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">"Create a new picker for the given character."</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">"System/removeModule.png"</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">"toolbar"</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">"Remove a module's picker from the canvas."</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">"System/movePicker.png"</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">"toolbar"</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">"Move a picker from one tab to another."</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">"System/moduleList.png"</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">"toolbar"</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">"Add a module's picker to the current canvas."</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">"System/background.png"</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">"toolbar"</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">"Change the background of the current picker tab."</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">"System/normalSelect_On.png"</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">"toolbar"</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">"Change picker selection mode to normal selection"</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">"System/dragSelect.png"</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">"toolbar"</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">"Change picker selection mode to drag selection"</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">"System/commentMode.png"</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">"toolbar"</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">"Add Comment Box Mode"</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">"System/save.png"</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">"toolbar"</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">"Save a picker file"</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">"System/load.png"</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">"toolbar"</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">"Load a picker file"</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">"""</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"> """</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">"epic"</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">"tabVariant"</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">"No characters found in scene."</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">"epic2"</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">"System/animSelect.png"</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">"toolbar"</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">"Select All Controls"</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">"System/export.png"</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">"toolbar"</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">"Export Motion"</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">"System/import.png"</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">"toolbar"</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">"Import Motion"</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">"System/matchRange.gif"</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">"toolbar"</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">"Match Over Frame Range"</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">"System/animReset.png"</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">"toolbar"</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">"Reset modules tool"</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">"""</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"> """</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">"""</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"> """</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">"network"</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">"rigModules"</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">".namespace"</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">".name"</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">".pickerFile"</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">".pickerFile"</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">"Core/Pickers/"</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">"charNode"</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">"namespace"</span><span class="p">,</span> <span class="n">namespace</span><span class="p">)</span> + + <span class="c1"># add the icon found on the node'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">".iconPath"</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">""</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">"background-image: url("</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">"System/noPicker.png"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">");"</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">"background: transparent;"</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">"Help/createPicker.gif"</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">"""</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's picker.</span> + +<span class="sd"> .. seealso:: ART_AddModuleToCanvas</span> + +<span class="sd"> """</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">"Create a New Picker for "</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">" ?"</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">"Yes"</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">"Cancel"</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 "Yes", 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 "Main"</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 'add tab' 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">"Add Tab"</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">"blueButton"</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">"Add Picker Tab"</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">"""</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"> """</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">"Main"</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">"System/canvas.png"</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">"""</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"> """</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">"System/normalSelect_On.png"</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">"System/dragSelect.png"</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">"System/commentMode.png"</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">"System/normalSelect.png"</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">"System/dragSelect_On.png"</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">"System/commentMode.png"</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">"System/normalSelect.png"</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">"System/dragSelect.png"</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">"System/commentMode_on.png"</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"pickerButton"</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">"""</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 "canvases".</span> + +<span class="sd"> :param tabWidget: The QTabWidget to add a tab to.</span> +<span class="sd"> :param bypass: If not creating the "Main" tab or loading a picker from file, a tab name must be entered.</span> +<span class="sd"> :param tabName: If creating the "Main" 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"> """</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">"Tab Name"</span><span class="p">,</span> <span class="s2">"Enter Tab Name:"</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">""</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">"System/canvas.png"</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">"""</span> +<span class="sd"> Closes the interface.</span> + +<span class="sd"> """</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">"pyART_animToolsDock"</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">"pyART_AnimTools_Win"</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">"""</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"> """</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">"""</span> +<span class="sd"> Creates an instance of the ART_RemoveModuleFromCanvas tool, passing in modules valid to remove.</span> + +<span class="sd"> """</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">"""</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"> """</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">"""</span> +<span class="sd"> Called on when a tab is changed on a given character'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"> """</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">"pyART_AddToCanvasWIN"</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">"pyART_AddToCanvasWIN"</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">"Remove Module From Canvas"</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">"pyART_AddToCanvasWIN"</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">"""</span> +<span class="sd"> Makes all picker items editable again, making them selectable, movable, scalable, and rotatable.</span> + +<span class="sd"> """</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">"item"</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">"item"</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">"""</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"> """</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">"pickerData"</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">"commentData"</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">"buttonData"</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">"charNode"</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">".pickerFile"</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">"pickerFile"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"Core/Pickers"</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">"Save Picker"</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">"*.picker"</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">'w'</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">"Core/Pickers/"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"/"</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">":.pickerFile"</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">"string"</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">"""</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"> """</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">"charNode"</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">".rigModules"</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">"module"</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">"""</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"> """</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'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">"""</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"> """</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">"Core/Pickers"</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">"Load Picker"</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">"*.picker"</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">"charNode"</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">".rigModules"</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">".namespace"</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">".namespace"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</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">".name"</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">"pickerData"</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">"module"</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">"module"</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">"tab"</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">"transforms"</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">"subPicker"</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">"mirrored"</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">"path"</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">""</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'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">"customImg"</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">"filePath"</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">"Tried to load custom background image: "</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">", but file not found on disk."</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">></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">"commentData"</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">"rect"</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">"color"</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">"label"</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">"tab"</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">"buttonData"</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">"module"</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">"color"</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">"control"</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">"SelectionChanged"</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">".pickerFile"</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">"pickerFile"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"Core/Pickers/"</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"/"</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">".pickerFile"</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">"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> +<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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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'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">"tab"</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">"transforms"</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">"module"</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">"mirrored"</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">"subPicker"</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">"subPicker"</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">"item"</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">"customImg"</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">"filePath"</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">"tab"</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">"path"</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">"""</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"> """</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">"item"</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">"rect"</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">"color"</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">"tab"</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">"label"</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">"""</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"> """</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">"ART_Leaf_Module"</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">"module"</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">"color"</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">"control"</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">"""</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"> """</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">".moduleType"</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">".moduleName"</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">"RigModules."</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">"""</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"> """</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">"pyART_changeBackgroundImg_Win"</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">"pyART_changeBackgroundImg_Win"</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">"pyART_changeBackgroundImg_Win"</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">"Change Background"</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">"background: transparent;"</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'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">"442 x 600 PNG image file.."</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">"System/fileBrowse.png"</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">"System/exit.png"</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">"Clear custom background image, resetting back to default."</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">"""</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"> """</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">"Core/Icons"</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">"Load Picker"</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">"*.png"</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">"customImg"</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">"filePath"</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">"""</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"> """</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">"customImg"</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">"""</span> +<span class="sd"> Instantiates ART_ExportMotionUI to bring up the tool for exporting animation out to various file formats.</span> + +<span class="sd"> """</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">"""</span> +<span class="sd"> Instantiates ART_ImportMotionUI to bring up the tool for importing FBX animation onto the rig.</span> + +<span class="sd"> """</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">"""</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 "zeroing out".</span> + +<span class="sd"> """</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">"""</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"> """</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">&</span> <span class="mi">4</span><span class="p">)</span> <span class="o">></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">"""</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"> """</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">"""</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"> """</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">"left"</span><span class="p">,</span> <span class="s2">"right"</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">"pyArtv2AnimToolsDock"</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">"pyART_AnimTools_Win"</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">"pyArtv2AnimToolsDock"</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">"pyArtv2AnimToolsDock"</span><span class="p">,</span> <span class="n">area</span><span class="o">=</span><span class="s2">"right"</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s2">"pyART_AnimTools_Win"</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">"Animation Tools"</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">"UI failed to launch."</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"""</span> +<span class="sd"> Builds the interface, finding all modules and listing them for selection.</span> + +<span class="sd"> """</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">"ART_BakeOffsetsWin"</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">"ART_BakeOffsetsWin"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"ART_BakeOffsetsWin"</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">"Bake Offsets"</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">"Select All"</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">"blueButton"</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">"Clear Selection"</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">"blueButton"</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">"Bake Offsets"</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">"Turn on Aim Mode for selected modules."</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">"blueButton"</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">".moduleName"</span><span class="p">)</span> + <span class="k">if</span> <span class="n">moduleName</span> <span class="o">!=</span> <span class="s2">"root"</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">"""</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"> """</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">"_offset"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"_loc"</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">".tx"</span><span class="p">,</span> <span class="s2">".ty"</span><span class="p">,</span> <span class="s2">".tz"</span><span class="p">,</span> <span class="s2">".rx"</span><span class="p">,</span> <span class="s2">".ry"</span><span class="p">,</span> <span class="s2">".rz"</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">"parentConstraint"</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">".constraintRotateX"</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">"_mover_grp"</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">"_loc"</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">"_loc"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"""</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"> """</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">"ART_BoneCounterWin"</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">"ART_BoneCounterWin"</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">"ART_BoneCounterWin"</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">"Bone Counter"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"""</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 "Arial";</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"> """</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">progBarStyleMax</span> <span class="o">=</span> <span class="s2">"""</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 "Arial Black";</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"> """</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">"mid"</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">"Bone Count: "</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">"Set Target"</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">"blueButton"</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">"target = %m"</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">"ART_Root_Module.target"</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">"ART_Root_Module.target"</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"><</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"><=</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">></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">"ART_Root_Module"</span><span class="p">,</span> <span class="n">sn</span><span class="o">=</span><span class="s2">"target"</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">"ART_Root_Module.target"</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">".Created_Bones"</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">"::"</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">""</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"><=</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">></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">"""</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"> """</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">"ART_setBoneCountTarget_UI"</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">"Bone Count"</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">"Enter a target bone count: "</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">"background-color: rgb(255,255,255); color: rgb(0,0,0);"</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">"ART_targetWindowSpinBox"</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">"Confirm"</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">"System/blue_field_background.png"</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">"background-image: url("</span> <span class="o">+</span> <span class="n">buttonImage</span> <span class="o">+</span> <span class="s2">"); background-color: rgb(0,0,0);"</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">"""</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"> """</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">"ART_setBoneCountTarget_UI"</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">"ART_Root_Module.target"</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">"ART_Root_Module.target"</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"><</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"><=</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">></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">"""</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"> """</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">".Created_Bones"</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">"::"</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">""</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"><=</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">></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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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'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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"projectPath"</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">"iconPath"</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">"System/toolbar_background.png"</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">"System/blue_field_background.png"</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">"System/field_background.png"</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">"ART_BuildProgressWin"</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">"ART_BuildProgressWin"</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">"""</span> +<span class="sd"> Builds the interface, which doesn'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"> """</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">"background-color: rgb(0, 0, 0);, color: rgb(0,0,0);"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"ART_BuildProgressWin"</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">"Build Progress"</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">"epic"</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">"Total Progress.."</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">"Starting Build Process.."</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">"""</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"> """</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">"</span><span class="se">\n</span><span class="s2">"</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">"|| EXPORTING SKIN WEIGHTS ||"</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">'skinCluster'</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">".WEIGHTS"</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">".input"</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">"blendShape"</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">"weight"</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">"."</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">"."</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">" Exported Skin Weights for "</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">"</span><span class="se">\n</span><span class="s2">"</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">"""</span> +<span class="sd"> Sets the rig pose on each module's joints. Lastly, calls on ART_BuildProgressUI.exportWeights()</span> + +<span class="sd"> ..seealso :: ART_BuildProgressUI.exportWeights()</span> + +<span class="sd"> """</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">"Setting Rig Pose.."</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">"root"</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">"rigPose"</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">"""</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"> """</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">"root"</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">"Rebuilding Skeleton in Rig Pose.."</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">"""</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"> """</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">"</span><span class="se">\n</span><span class="s2">"</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">"|| IMPORTING SKIN WEIGHTS ||"</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">".WEIGHTS"</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">" Imported Skin Weights for "</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">" Could not import weights for "</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("Could not save file. Error: " + 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(" SUCCESS: FBX file exported.")</span> + <span class="c1"># self.infoText.append(" " + 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">"""</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 -> Export Skeletal Meshes</span> +<span class="sd"> """</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">"""</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'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'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"> """</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">" </span><span class="se">\n</span><span class="s2">"</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">".preScriptPath"</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">".preScriptPath"</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">"Executing Pre-Script.."</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">" "</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">" SUCCESS: Pre-Script Was Successfully Executed.."</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">" FAILED: Pre-Script Was Not Successfully Executed.."</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">"No Pre-Script To Run.."</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">"""</span> +<span class="sd"> First, create a driver skeleton which the rig will build upon, then calls on each module'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"> """</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">" </span><span class="se">\n</span><span class="s2">"</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">"|| PREPARING TO BUILD CONTROL RIGS.. ||"</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">" </span><span class="se">\n</span><span class="s2">"</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">" Building: "</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">"driver_root"</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">"offset_anim"</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">"offset_anim"</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">"constraint"</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">".target"</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">>=</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">".target["</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">"].targetWeight"</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">"."</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">"W"</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">"pointConstraint"</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">"orientConstraint"</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">"parentConstraint"</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">".target"</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">".target["</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">"].targetWeight"</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">></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">"ART_RIG_ROOT.state"</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">"ART_RIG_ROOT.state"</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">"joint"</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">".v"</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">".v"</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">"removeAllUnusedSkinInfs()"</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">"mayaAscii"</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">"""</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"> """</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">" </span><span class="se">\n</span><span class="s2">"</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">".postScriptPath"</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">".postScriptPath"</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">"Executing Post-Script.."</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">" "</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">" SUCCESS: Post-Script Was Successfully Executed.."</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">" FAILED: Post-Script Was Not Successfully Executed.."</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">"No Post-Script To Run.."</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">"mayaAscii"</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">"""</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"> """</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">" </span><span class="se">\n</span><span class="s2">"</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">"Cleaning Up.."</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">"rig_grp"</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">"mayaAscii"</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">"</span><span class="se">\n\n</span><span class="s2">PUBLISH COMPLETE!"</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">"ART_RIG_ROOT.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="s2">"Assets Created: "</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">" "</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">" "</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">" warnings"</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">" errors"</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">"Rig Build Complete!"</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">"New Scene"</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">"Edit Rig"</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">"pyArtRigCreatorDock"</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">"pyArtRigCreatorDock"</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">"pyArtRigCreatorUi"</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">"pyArtRigCreatorDock"</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">"""</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"> """</span> + + <span class="n">sourceType</span> <span class="o">=</span> <span class="s2">""</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">".py"</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">"python"</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">".mel"</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">"mel"</span> + + <span class="c1"># MEL</span> + <span class="k">if</span> <span class="n">sourceType</span> <span class="o">==</span> <span class="s2">"mel"</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">""</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">'r'</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">"mayaAscii"</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">"python"</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">""</span> <span class="o">+</span> <span class="n">scriptPath</span> <span class="o">+</span> <span class="s2">""</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">"mayaAscii"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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< maya2017> 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">"""</span> +<span class="sd"> Returns a pointer to Maya's window as a QWidget.</span> + +<span class="sd"> """</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">"Change Module Name"</span> +<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">"pyArtChangeModuleNameUi"</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"Prefix: "</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">"Suffix: "</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">"Preview: "</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">"UPDATE"</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">"blueButton"</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">"""</span> +<span class="sd"> Updates the QLabel with the current prefix + basename + suffix, adding in underscores where needed.</span> + +<span class="sd"> """</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">""</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">></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">"_"</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">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">string</span> <span class="o">+=</span> <span class="s2">"_"</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">"""</span> +<span class="sd"> Checks to make sure a module doesn'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' 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"> """</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">"A module with that name already exists. Please enter a unique name for the module"</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">".moduleName"</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">"Name Exists"</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">"critical"</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">".moduleName"</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">".moduleName"</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">"string"</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">></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">"_"</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">></span> <span class="mi">0</span><span class="p">:</span> + <span class="n">suffix</span> <span class="o">=</span> <span class="s2">"_"</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">""</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">></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">""</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">""</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">"::"</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">".Created_Bones"</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">".Created_Bones"</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">"string"</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">"_mover_grp"</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">"transform"</span><span class="p">)</span> + <span class="n">constraints</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"pointConstraint"</span><span class="p">,</span> <span class="s2">"orientConstraint"</span><span class="p">,</span> <span class="s2">"parentConstraint"</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">"_treeModule"</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">"_treeModule"</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'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">":"</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'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">"parentModuleBone"</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">".parentModuleBone"</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' 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">".parentModuleBone"</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">".parentModuleBone"</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">"string"</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' 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">".moduleName"</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">"mirrorModule"</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">".mirrorModule"</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">".mirrorModule"</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">".mirrorModule"</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">"string"</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' 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">".moduleName"</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">"|"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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< maya2017> 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">"""</span> +<span class="sd"> Returns a pointer to Maya's window as a QWidget.</span> + +<span class="sd"> """</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">"Change Module Parent"</span> +<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">"pyArtChangeModuleParentUi"</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"mid"</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">"Choose New Parent:"</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">"Search.."</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">"root"</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">"UPDATE"</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">"blueButton"</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">"""</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"> """</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">"""</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't a bone that is part of the module we'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"> """</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'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">"Error"</span><span class="p">,</span> <span class="n">icon</span><span class="o">=</span><span class="s2">"critical"</span><span class="p">,</span> + <span class="n">message</span><span class="o">=</span><span class="s2">"Cannot parent a module to a bone created by the module."</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">".parentModuleBone"</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">".parentModuleBone"</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">"string"</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">"_parentGrp"</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">"_parentGrp"</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">".moduleName"</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">"_mover_grp"</span> + + <span class="k">if</span> <span class="n">newParent</span> <span class="o">==</span> <span class="s2">"root"</span><span class="p">:</span> + <span class="n">mover</span> <span class="o">=</span> <span class="s2">"root_mover"</span> + <span class="n">offsetMover</span> <span class="o">=</span> <span class="s2">"root_mover"</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">"_mover_grp_parentConstraint*"</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">"_mover_grp_parentConstraint*"</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">"_mover_grp"</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">"_mover_grp_scaleConstraint*"</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">"_mover_grp_scaleConstraint*"</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">"_mover_grp"</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">"|"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"projectPath"</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">"System/toolbar_background.png"</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">"System/blue_field_background.png"</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">"System/field_background.png"</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">"ART_DebugRigsWin"</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">"ART_DebugRigsWin"</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">"""</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"> """</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"ART_DebugRigsWin"</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">"Build Rigs"</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">"mid"</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">"This tool is only for testing rigs in development. "</span> + <span class="n">infoText</span> <span class="o">+=</span> <span class="s2">"It will leave behind nodes in your scene that you do NOT want to publish with. "</span> + <span class="n">infoText</span> <span class="o">+=</span> <span class="s2">"When using this tool, it is advised to open a clean scene to publish your final asset."</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">"Build Rigs For Selected"</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">"blueButton"</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">"Remove Selected Rigs"</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">"blueButton"</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">"Close"</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">"blueButton"</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">"""</span> +<span class="sd"> Builds the rigs for the selected module by calling on that module's buildRig function.</span> + +<span class="sd"> """</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">"driver_root"</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">"""</span> +<span class="sd"> Deletes the rigs for the selected module by calling on that module's deleteRig function.</span> + +<span class="sd"> """</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">"""</span> +<span class="sd"> Close the interface and delete the window.</span> + +<span class="sd"> """</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">"ART_DebugRigsWin"</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">"ART_DebugRigsWin"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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< maya2017> 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">"""</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"> """</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">"Edit Rig"</span> +<span class="n">windowObject</span> <span class="o">=</span> <span class="s2">"pyArtEditRigWin"</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">"""</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"> """</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"scriptPath"</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">"projectPath"</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">"""</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"> """</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"Add Rig For Animation"</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">"mid"</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">"System/noCharacter.png"</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">"Edit Selected"</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">"blueButton"</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">"Add Selected"</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">"blueButton"</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">"Close"</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">"blueButton"</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">"""</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"> """</span> + + <span class="c1"># if the project path doesn'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">"""</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"> """</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">" "</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">"""</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"> """</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">></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">"."</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"ma"</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">".ma"</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">"""</span> +<span class="sd"> Given the selected character, display the correct icon for that character in the UI.</span> + +<span class="sd"> """</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">></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">".png"</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">"""</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"> """</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">></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">".ma"</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">".png"</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">"v=0"</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">"mayaAscii"</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">"v=0"</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">"mayaAscii"</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">"v=0"</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">"mayaAscii"</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">"""</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"> """</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">></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">".ma"</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">".png"</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">"mayaAscii"</span><span class="p">,</span> <span class="n">loadReferenceDepth</span><span class="o">=</span><span class="s2">"all"</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">"v=0"</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">'modelPanel'</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">"smoothShaded"</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">":ART_RIG_ROOT"</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">":ART_RIG_ROOT.namespace"</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">":ART_RIG_ROOT"</span><span class="p">,</span> <span class="n">ln</span><span class="o">=</span><span class="s2">"namespace"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">":ART_RIG_ROOT.namespace"</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">"string"</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">"pyArtRigCreatorDock"</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">"pyArtRigCreatorUi"</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">"pyArtRigCreatorUi"</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">"pyArtRigCreatorDock"</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">"Interfaces/StyleSheets/"</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">"""</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't Save, Cancel)</span> + +<span class="sd"> """</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">"Current File Has Unsaved Changes!"</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">"Save Changes"</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">"Don't Save"</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">"Cancel"</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">"""</span> +<span class="sd"> Closes and deletes the interface for the class.</span> + +<span class="sd"> """</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">"pyArtEditRigWin"</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">"pyArtEditRigWin"</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">"""</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"> """</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">"pyArtEditRigWin"</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">"pyArtEditRigWin"</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">"""</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"> """</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">"pyArtEditRigWin"</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">"pyArtEditRigWin"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> "paddle hands"</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"> """</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">"""</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"> """</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">"pyART_ExportMeshesWin"</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">"pyART_ExportMeshesWin"</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"scriptPath"</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">"iconPath"</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">"projectPath"</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">"Please make sure any changes to the current file are saved before continuing. This process will be "</span> + <span class="s2">"creating a temporary file to do all of the exporting from."</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">"exportFile.ma"</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">"root"</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">".translate"</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">''</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">".translate"</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">".rotate"</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">''</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">".rotate"</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">".scale"</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">''</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">".scale"</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">"rig_grp"</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">"rig_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="s2">"driver_root"</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">"root"</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">".v"</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">".v"</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'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">"modelPose"</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">"""</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"> """</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">"_Pose"</span><span class="p">,</span> <span class="s2">"_Bones"</span><span class="p">,</span> <span class="s2">"_Meshes"</span><span class="p">,</span> <span class="s2">"_FilePath"</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">"."</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">"_Meshes"</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">"string"</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">"message"</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">"."</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">"_FilePath"</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">"string"</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">"."</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">"_Bones"</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">"string"</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">"."</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">"_Pose"</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">"string"</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">"_"</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">"."</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">"_Meshes"</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">"."</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">"_Meshes"</span><span class="p">,</span> <span class="n">conn</span> <span class="o">+</span> <span class="s2">".lodGroup"</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">".lodGroup"</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">"lodGroup"</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">"message"</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">"."</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">"_Meshes"</span><span class="p">,</span> <span class="n">mesh</span> <span class="o">+</span> <span class="s2">".lodGroup"</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">"""</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"> """</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">"Core/Scripts/Interfaces/StyleSheets/mainScheme.qss"</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">"r"</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">"pyART_ExportMeshesWin"</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">"Export Skeletal Meshes"</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">"""</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"> """</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">"dark"</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't seem to work for some reason</span> + <span class="n">stylesheet</span> <span class="o">=</span> <span class="s2">"""</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"> """</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">"LOD_0"</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">" - "</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">"blueButton"</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">"Remove Mesh LOD (current tab)"</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">" + "</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">"blueButton"</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">"Add Mesh LOD"</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">"Export"</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">"blueButton"</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">"""</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"> """</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">"mid"</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">"Meshes For "</span> <span class="o">+</span> <span class="n">label</span> <span class="o">+</span> <span class="s2">":"</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">'background: transparent'</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">"Choose Meshes"</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">"blueButton"</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">"Select the meshes you want to include in this mesh LOD."</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">"listType"</span><span class="p">,</span> <span class="s2">"mesh"</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">"List of meshes to include for this LOD"</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">"FBX Export Path..."</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">"Define the file name and file location for this LOD FBX file."</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">"System/fileBrowse.png"</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">"Bones to remove for "</span> <span class="o">+</span> <span class="n">label</span> <span class="o">+</span> <span class="s2">":"</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">'background: transparent;'</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">"+"</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">"blueButton"</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">"listType"</span><span class="p">,</span> <span class="s2">"bone"</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">"List of joints to remove from this LOD"</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">"""</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"> """</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">"mid"</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">"ART_AddBoneToLODlistWin"</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">"light"</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">""</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">"Skeleton 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">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">"Weighting Transfer"</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">"light"</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">" Add Entry "</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">"blueButton"</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">"dark"</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">"LOD Posing"</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">"light"</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">"View LOD Pose"</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">"Reset LOD Pose"</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">"blueButton"</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">"Save LOD Pose"</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">"blueButton"</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">"Save and Close"</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">"blueButton"</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">"root"</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">"joint"</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">"joint"</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">"LOD_*_Bones"</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">"_Bones"</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">"_Bones"</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">"."</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">"_Bones"</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">"."</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">"""</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"> """</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">"Core/Scripts/Interfaces/StyleSheets/skeletonSettings.qss"</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">"r"</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">"list"</span><span class="p">,</span> <span class="s2">"remove"</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">" + "</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">"blueButton"</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">" - "</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">"blueButton"</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">"list"</span><span class="p">,</span> <span class="s2">"xfer"</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">"<-"</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">"blueButton"</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">"""</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"> """</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">"""</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"> """</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">"LOD_"</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">"""</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'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"> """</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">"mid"</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">"ART_AddMeshesToLODlistWin"</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">"light"</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">""</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">"Geometry"</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">"Save and Close"</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">"blueButton"</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">"""</span> +<span class="sd"> Finds the selected items in addMeshToList_UI's treeWidget, and adds them back to the main LOD page'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"> """</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">"System/mesh.png"</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">"""</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"> """</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">"ART_Root_Module"</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">".Created_Bones"</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">"::"</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">""</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">".translate"</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">'</span><span class="si">{:.3f}</span><span class="s1">'</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">".rotate"</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">'</span><span class="si">{:.3f}</span><span class="s1">'</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">".scale"</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">'</span><span class="si">{:.3f}</span><span class="s1">'</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">"modelPose"</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">"""</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 "View LOD Pose" 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"> """</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">".translateX"</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">".translateY"</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">".translateZ"</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">".rotateX"</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">".rotateY"</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">".rotateZ"</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">".scaleX"</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">".scaleY"</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">".scaleZ"</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Pose"</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Pose"</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">".translateX"</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">".translateY"</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">".translateZ"</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">".rotateX"</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">".rotateY"</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">".rotateZ"</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">".scaleX"</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">".scaleY"</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">".scaleZ"</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'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">"modelPose"</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">"""</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"> """</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'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">"modelPose"</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">"""</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"> """</span> + + <span class="n">style</span> <span class="o">=</span> <span class="s2">"""</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"> """</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">"Clear Selection"</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">"Select All"</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">"Remove This Entry"</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">"""</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"> """</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">"""</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"> """</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">"*"</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">"Cannot remove LOD 0"</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">"""</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"> """</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">"*.fbx"</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">></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">"Only 1 bone can be selected to transfer weighting to."</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">"""</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"> """</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">></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">"Parent of the joint is also being removed. Cannot complete request unless parent joint "</span> + <span class="s2">"is not removed."</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">"Was not able to find a matching entry in the skeleton tree."</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">"""</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"> """</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">"joint"</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">"""</span> +<span class="sd"> Called from the "Save and Close" 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 "View LOD Pose" button instance</span> + +<span class="sd"> """</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Pose"</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">"_Pose"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Bones"</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">"_Bones"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"list"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"remove"</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">"list"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"xfer"</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">"System/boneDisplay.png"</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Bones"</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">"string"</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">"."</span> <span class="o">+</span> <span class="n">lod</span> <span class="o">+</span> <span class="s2">"_Pose"</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">"string"</span><span class="p">)</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span> <span class="s2">"no LOD pose given. Using model pose."</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">"ART_AddBoneToLODlistWin"</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">"ART_AddBoneToLODlistWin"</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">"""</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"> """</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">'skinCluster'</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">"System/mesh.png"</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">"System/mesh.png"</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">"""</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"> """</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">"LOD_*_FilePath"</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">"_FilePath"</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">"_Pose"</span><span class="p">,</span> <span class="s2">"_Bones"</span><span class="p">,</span> <span class="s2">"_Meshes"</span><span class="p">,</span> <span class="s2">"_FilePath"</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">"."</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">"_Bones"</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">"."</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">"_Meshes"</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">"."</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">"_FilePath"</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">"."</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"><</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">"listType"</span><span class="p">)</span> + + <span class="k">if</span> <span class="nb">property</span> <span class="o">==</span> <span class="s2">"mesh"</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">"System/mesh.png"</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">"bone"</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">"System/boneDisplay.png"</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">"""</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"> """</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_FilePath"</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">"_FilePath"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_FilePath"</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">"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_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">"""</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"> """</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_Meshes"</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">"_Meshes"</span><span class="p">,</span> <span class="n">at</span><span class="o">=</span><span class="s2">"message"</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_FilePath"</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">"_FilePath"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">"_"</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_Meshes"</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_Meshes"</span><span class="p">,</span> <span class="n">conn</span> <span class="o">+</span> <span class="s2">".lodGroup"</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">".lodGroup"</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">"lodGroup"</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">"message"</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">"."</span> <span class="o">+</span> <span class="n">tabText</span> <span class="o">+</span> <span class="s2">"_Meshes"</span><span class="p">,</span> <span class="n">mesh</span> <span class="o">+</span> <span class="s2">".lodGroup"</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">"""</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"> """</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">"There are LODs with no valid file path to export to. Aborting."</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">"There are LODs that have no meshes associated with them. Aborting."</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">"Could not save file. Error: "</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">"Export Complete!"</span><span class="p">)</span> + + <span class="n">string</span> <span class="o">=</span> <span class="s2">""</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">"</span><span class="se">\n</span><span class="s2">"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 — 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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</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">"""</span> +<span class="sd">Author: Jeremy Ernst</span> +<span class="sd">"""</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">"""</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"> """</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">"Epic Games"</span><span class="p">,</span> <span class="s2">"ARTv2"</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">"toolsPath"</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">"iconPath"</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">"scriptPath"</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">"projectPath"</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">"Interfaces/StyleSheets/"</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">"pyART_ExportMotionWIN"</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">"pyART_ExportMotionWIN"</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">"Core/Scripts/Interfaces/StyleSheets/animPicker.qss"</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">"r"</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">"pyART_ExportMotionWIN"</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">"Export Motion"</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">"""</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"> """</span> + + <span class="n">stylesheet2</span> <span class="o">=</span> <span class="s2">"""</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"> """</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">"FBX"</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">"ABC"</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">"Animation"</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">"dark"</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">"Export Settings"</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">"Sequences"</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">"dark"</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">"Export Meshes"</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">"Export Morph Targets"</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">"Export Custom Attribute Curves"</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">"Pre-Script: "</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">"System/fileBrowse.png"</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">"Post-Script: "</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">"System/fileBrowse.png"</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">"Save Export Settings"</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">"Add Sequence"</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">"blueButton"</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">"dark"</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">"Export"</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">"blueButton"</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">":ART_RIG_ROOT.fbxAnimData"</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">":ART_RIG_ROOT.fbxAnimData"</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">"light"</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">"vLayout"</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">"toggled(bool)"</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">"charLayout"</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">"charPortrait"</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">"charComboBox"</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">"pathLayout"</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">"exportCheckBox"</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">"exportPath"</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">"System/fileBrowse.png"</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">"optionLayout"</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">"Start Frame: "</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">"background: transparent;"</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">"startFrame"</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">" End Frame: "</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">"background: transparent;"</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">"endFrame"</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">"frameRate"</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">"ntsc"</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">"ntscf"</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">"film"</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">"film"</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">"ntsc"</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">"ntscf"</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">"Advanced Settings"</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">"Rotation Interpolation: "</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">"background: transparent;"</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">"rotInterp"</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">"Quaternion Slerp"</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">"Independent Euler-Angle"</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">"Sample Rate: "</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">"sampleRate"</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">"rootExportOptions"</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">"Export Root Animation"</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">"Zero Root"</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">"Zero Root, Keep World Space"</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">"toggled(bool)"</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">"System/delete.png"</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">"System/duplicate.png"</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">"System/upArrow.png"</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">"System/downArrow.png"</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">"Remove Sequence"</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">"Duplicate Sequence"</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">"Expand All Sequences"</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">"Collapse All Sequences"</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">"Export"</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">"*.fbx"</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">"Accept"</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">"*.py;;*.mel"</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">"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."</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">"export_TEMP.ma"</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">"mayaAscii"</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">"Core\Scripts\System\ART_FbxExport.py"</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">"export_log.txt"</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">'w'</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">' '</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span> <span class="o">+</span> <span class="n">script</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span> <span class="o">+</span> <span class="n">tempFile</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> + <span class="s2">"</span><span class="se">\"</span><span class="s2">"</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">"</span><span class="se">\"</span><span class="s2">"</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">"mayapy executable not found. Currently not implemented for mac and linux."</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">":ART_RIG_ROOT"</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">":ART_RIG_ROOT.LOD_0_Meshes"</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">":ART_RIG_ROOT.LOD_0_Meshes"</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">"skinCluster"</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">"blendShape"</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">"mesh"</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">"blendShape"</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">":root"</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">"translateX"</span><span class="p">,</span> <span class="s2">"translateY"</span><span class="p">,</span> <span class="s2">"translateZ"</span><span class="p">,</span> <span class="s2">"rotateX"</span><span class="p">,</span> <span class="s2">"rotateY"</span><span class="p">,</span> <span class="s2">"rotateZ"</span><span class="p">,</span> + <span class="s2">"scaleX"</span><span class="p">,</span> <span class="s2">"scaleY"</span><span class="p">,</span> <span class="s2">"scaleZ"</span><span class="p">,</span> <span class="s2">"visibility"</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">":"</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">"network"</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">"rigModules"</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">".namespace"</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">".name"</span><span class="p">)</span> + + <span class="c1"># add the icon found on the node'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">".iconPath"</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">"charComboBox"</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">"exportCheckBox"</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">"exportPath"</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">"."</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">"startFrame"</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">"endFrame"</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">""</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">", "</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">", "</span> + <span class="n">titleString</span> <span class="o">+=</span> <span class="s2">"["</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">": "</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">"]"</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">titleString</span> <span class="o">+=</span> <span class="s2">"Not Exporting.."</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">":ART_RIG_ROOT"</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">".fbxAnimData"</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">"fbxAnimData"</span><span class="p">,</span> <span class="n">dt</span><span class="o">=</span><span class="s2">"string"</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">".fbxAnimData"</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">"string"</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">"charComboBox"</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">"exportCheckBox"</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">"exportPath"</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">"startFrame"</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">"endFrame"</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">"frameRate"</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">"sampleRate"</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">"rotInterp"</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">"rootExportOptions"</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> »</li> + <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer" role="contentinfo"> + © 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 |