git clone https://git.lucas.co/hou-control.git
housekeeping: delete stinky old files
desktop/Build copy.desk | 59 ---
python3.11libs/hclib/__init__.py | 14 -
python3.11libs/hclib/core/__init__.py | 19 -
python3.11libs/hclib/core/hccam.py | 206 ----------
python3.11libs/hclib/core/hcdefaultcam.py | 24 --
python3.11libs/hclib/core/hcgeo.py | 18 -
python3.11libs/hclib/core/hcglobal.py | 246 ------------
python3.11libs/hclib/core/hcnetworkeditor.py | 149 -------
python3.11libs/hclib/core/hcpane.py | 119 ------
python3.11libs/hclib/core/hcpathtab.py | 41 --
python3.11libs/hclib/core/hcsceneviewer.py | 264 -------------
python3.11libs/hclib/core/hctab.py | 59 ---
python3.11libs/hclib/core/hcviewport.py | 15 -
python3.11libs/hclib/ui/__init__.py | 0
python3.11libs/hclib/ui/hcfunctionpanel.py | 251 ------------
python3.11libs/hclib/ui/hcnewtabpanel.py | 104 -----
python3.11libs/hclib/ui/hcpanel.py | 221 -----------
python3.11libs/hclib/ui/hcresizepanel.py | 44 ---
python3.11libs/hclib/ui/hcstatuspanel.py | 69 ----
python3.11libs/hclib/ui/hcvisualizerpanel.py | 131 -------
python3.11libs/hclib/ui/hcwidgets.py | 18 -
python3.11libs/hclib/utils/__init__.py | 0
python3.11libs/hclib/utils/hcbindings.py | 264 -------------
python3.11libs/hclib/utils/hclayouts.py | 85 ----
python3.11libs/hclib/utils/hclistener.py | 107 -----
python3.11libs/hclib/utils/hcmenuutils.py | 28 --
python3.11libs/hclib/utils/hcprinter.py | 24 --
python3.11libs/hclib/utils/hcradialutils.py | 183 ---------
python3.11libs/hclib/utils/hcutils.py | 0
scripts/beforescenesave.py | 23 --
scripts/diffuse.py | 38 --
scripts/generate_menu.py | 18 -
scripts/morpho_combine_module.py | 12 -
scripts/morpho_combine_oninputchanged.py | 39 --
scripts/morpho_composite_module.py | 70 ----
scripts/morpho_develop_module.py | 7 -
scripts/morpho_panel_module.py | 528 -------------------------
scripts/morpho_ramp_module.py | 113 ------
scripts/source_created.py | 8 -
scripts/source_module.py | 564 ---------------------------
viewer_states/keycam_lop.py | 4 -
viewer_states/keycam_settings | 20 -
42 files changed, 4206 deletions(-)
diff --git a/desktop/Build copy.desk b/desktop/Build copy.desk
deleted file mode 100755
index bf5fe6d..0000000
--- a/desktop/Build copy.desk
+++ /dev/null
@@ -1,59 +0,0 @@
-fullscreen -1
-playbarshown 1
-playbar -1
-shelf -1
-menubar -1
-statusbar -1
-radial menu set main
-root {
- split 0.5 H {
- split 0.299034 V {
- tabs 0 1 {
- pane panetab4 -a 1 -l 10 -H /obj/ -T OBJ -m sceneview
- pane copy_of_panetab6_1 -a 1 -l 10 -H /img/ -T IMG -m imageview
- }
- tabs 0 1 {
- pane panetab2 -a 1 -l 10 -H /obj/ -T OBJ -m details
- }
- }
- split 0.658706 V {
- tabs 0 1 {
- pane panetab3 -a 1 -l 10 -H /obj/ -T OBJ -m parmeditor
- pane panetab5 -a 0 -l 0 -H /obj/ -T OBJ -m python
- }
- tabs 0 1 {
- pane panetab1 -a 0 -l 0 -H /obj/ -T OBJ -m neteditor
- }
- }
- }
-}
-shelfdock -o 0 -l small_icon -G 0.50 add my_shelf_set
-viewerstow -x stow -b stow -l stow -m hide -c hide -d open ${DESKNAME}.panetab4.world
-vieweroption -a 0 ${DESKNAME}.panetab4.world
-viewlayout -s 2 ${DESKNAME}.panetab4.world
-viewtype -t ortho_right ${DESKNAME}.panetab4.world.`vpname("${DESKNAME}.panetab4.world",4)`
-viewtype -t ortho_front ${DESKNAME}.panetab4.world.`vpname("${DESKNAME}.panetab4.world",3)`
-viewtype -t ortho_top ${DESKNAME}.panetab4.world.`vpname("${DESKNAME}.panetab4.world",1)`
-viewtype -t perspective ${DESKNAME}.panetab4.world.`vpname("${DESKNAME}.panetab4.world",2)`
-geospreadsheet -c 0 -l horizontal -s 0.5 -m none -f 0 panetab2
-scenegraphtree -S 0.25 -m 2 -p "/collections /lights" -c -i -o -x 1 -s 1 -M 0 -C primtype,childcount,kind,populated,loaded,activation,visibility,solo,selectability panetab2
-parmeditor -T 0.25 -w 0 panetab3
-networkeditor -p '{\n "backgroundimagebrightness":"1.0",\n "gridmode":"2",\n "showcopsmenu":"1",\n "taskgraphcollapsemode":"Off",\n "showtasksmenu":"1",\n "useworkitemcolorattribute":"1",\n "typesidebarsplit":"0.25",\n "showmenu":"1",\n "gridxstep":"8.0",\n "treesplit":"0.25",\n "showparmdialogmax":"1",\n "perfstatname":"Time",\n "palettemode":"0",\n "taskgraphsortdirection":"0",\n "showchilddep":"1",\n "backgroundimageediting":"0",\n "showtaskgraphperf":"0",\n "showgrouplist":"0",\n "showperfstats":"1",\n "showparmdialog":"0",\n "overviewmode":"2",\n "showdep":"0",\n "palettecolors":"",\n "showspareinputdep":"1",\n "workitemcolorattribute":"",\n "palettesize":"300 300",\n "showtypesidebar":"0",\n "showtree":"0",\n "overviewbounds":"0.000000 0.000000 440.700000 285.900000",\n "taskgraphperfstatname":"Cook Time",\n "gridystep":"6.0",\n "taskgraphsortcriteria":"Automatic",\n "workitemattrtocollapseby":"",\n "grouplistsplit":"0.75"\n}\n' panetab1
-netcolumns -c display,xray,select,origin,capture,bone -n OBJ panetab1
-netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP panetab1
-netcolumns -c delscript,comment -n CHOPNET panetab1
-netcolumns -c display,export,audio,bypass,lock -n CHOP panetab1
-netcolumns -c startrender,bypass,lock -n ROP panetab1
-netcolumns -c delscript,comment -n SHOP panetab1
-netcolumns -c display,render,template,bypass -n COP2 panetab1
-netcolumns -c delscript,comment -n IMG panetab1
-netcolumns -c delscript,comment,input -n VOP panetab1
-netcolumns -c delscript,comment -n VOPNET panetab1
-netcolumns -c delscript,comment -n DOP panetab1
-netcolumns -c delscript,comment -n TOP panetab1
-netcolumns -c delscript,comment -n TOPNET panetab1
-netcolumns -c display,bypass,delscript,comment,input -n LOP panetab1
-netcolumns -c display,export,template,selectabletemplate,bypass -n COP panetab1
-netcolumns -c delscript,comment -n MGR panetab1
-netcolumns -c delscript,comment -n DIR panetab1
-netcolumns -c delscript,comment -n DATA panetab1
diff --git a/python3.11libs/hclib/__init__.py b/python3.11libs/hclib/__init__.py
deleted file mode 100644
index fd164ae..0000000
--- a/python3.11libs/hclib/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from .core import HCCam, HCGeo, HCGlobal, HCNetworkEditor, HCPane, HCSceneViewer, HCTab
-from .utils import hcbindings, hcradialutils
-
-__all__ = [
- "HCCam",
- "HCGeo",
- "HCGlobal",
- "HCNetworkEditor",
- "HCPane",
- "HCUtils",
- "HCSceneViewer",
- "hcbindings",
- "hcradialutils"
-]
diff --git a/python3.11libs/hclib/core/__init__.py b/python3.11libs/hclib/core/__init__.py
deleted file mode 100644
index d8e8f2a..0000000
--- a/python3.11libs/hclib/core/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from .hccam import HCCam
-from .hcgeo import HCGeo
-from .hcglobal import HCGlobal
-from .hcnetworkeditor import HCNetworkEditor
-from .hcpane import HCPane
-from .hcsceneviewer import HCSceneViewer
-from .hctab import HCTab
-# from .hcviewport import HCViewport
-
-__all__ = [
- 'HCCam',
- 'HCGeo',
- 'HCGlobal',
- 'HCNetworkEditor',
- 'HCPane',
- 'HCSceneViewer',
- 'HCTab',
- # 'HCViewport'
-]
diff --git a/python3.11libs/hclib/core/hccam.py b/python3.11libs/hclib/core/hccam.py
deleted file mode 100644
index cf48cbc..0000000
--- a/python3.11libs/hclib/core/hccam.py
+++ /dev/null
@@ -1,206 +0,0 @@
-import hou
-from .hcgeo import HCGeo
-from .hcsceneviewer import HCSceneViewer
-
-
-class HCCam:
- def __init__(self, cam, viewer):
- self.cam = cam
- self.viewer = viewer
- self.hcviewer = HCSceneViewer(viewer)
- self.parms = Parms(cam)
- self.fitAspectRatio()
- self.lock()
- self.reset()
-
- def center(self):
- centroid = self.hcviewer.hcgeo().centroid()
- self.parms.t = hou.Vector3(centroid)
- self.parms.p = hou.Vector3(centroid)
-
- def fitAspectRatio(self):
- self.cam.parm('resx').set(1000)
- self.cam.parm('resy').set(1000)
- ratio = self.viewport().size()[2] / self.viewport().size()[3]
- self.cam.parm('aspect').set(ratio)
-
- def frame(self):
- centroid = self.hcviewer.hcgeo().centroid()
- self.parms.t = hou.Vector3(centroid)
- self.parms.p = hou.Vector3(centroid)
- # self.parms.ow = 10
- self.setZoom(10)
-
- def home(self):
- centroid = self.hcviewer.hcgeo().centroid()
- self.parms.t = centroid
- self.parms.p = centroid
- # self.parms.ow = 10
- # self.setZoom(6)
-
- def lock(self):
- viewport = self.viewport()
- viewport.setCamera(self.cam)
- viewport.lockCameraToView(1)
-
- def movePivot(self):
- # If origin
- if self.parms.target == 0:
- self.parms.t = [0, 0, self.parms.zoom]
- self.parms.r = [45, 45, 0]
- self.parms.p = [0, 0, self.parms.zoom * -1]
- self.parms.ow = 10
-
- def reset(self):
- self.parms.t = hou.Vector3(0, 0, 2)
- self.parms.r = hou.Vector3(0, 0, 0)
- self.parms.p = hou.Vector3(0, 0, 0)
- self.parms.zoom = 10
- self.parms.ow = 10
- self.parms.localx = hou.Vector3(1, 0, 0)
- self.parms.localy = hou.Vector3(0, 1, 0)
- self.parms.localz = hou.Vector3(0, 0, 1)
- self.parms.globalx = hou.Vector3(1, 0, 0)
- self.parms.globaly = hou.Vector3(0, 1, 0)
- self.parms.globalz = hou.Vector3(0, 0, 1)
- self.parms.deltat = 1
- self.parms.deltar = 15
- self.parms.deltazoom = 1
-
- def rotate(self, dir):
- axismap = {
- 'up': self.parms.localx,
- 'down': self.parms.localx,
- 'left': self.parms.globaly,
- 'right': self.parms.globaly,
- }
- dirmap = {'up': 1, 'down': -1, 'left': -1, 'right': 1}
- deltamap = {
- 'up': hou.Vector3(self.parms.deltar, 0, 0),
- 'down': hou.Vector3(self.parms.deltar, 0, 0),
- 'left': hou.Vector3(0, self.parms.deltar, 0),
- 'right': hou.Vector3(0, self.parms.deltar, 0),
- }
- self.parms.r += deltamap[dir] * dirmap[dir]
- m = hou.hmath.buildRotateAboutAxis(axismap[dir], self.parms.deltar * dirmap[dir])
- self.parms.t -= self.parms.p
- self.parms.t *= m
- self.parms.t += self.parms.p
- self.parms.localx *= m
- self.parms.localy *= m
- self.parms.localz *= m
-
- def setView(self):
- viewmap = {
- 'top': hou.Vector3(270, 0, 0),
- 'bottom': hou.Vector3(90, 0, 0),
- 'front': hou.Vector3(0, 180, 0),
- 'back': hou.Vector3(0, 0, 0),
- 'right': hou.Vector3(0, 90, 0),
- 'left': hou.Vector3(0, 270, 0)
- }
- self.hccam.r = viewmap[self.parms.view]
-
- def setZoom(self, amt):
- move = self.parms.localz * amt
- self.parms.t += move
-
- def translate(self, dir):
- axismap = {
- 'up': self.parms.localy,
- 'down': -self.parms.localy,
- 'left': -self.parms.localx,
- 'right': self.parms.localx,
- }
- move = axismap[dir] * self.parms.deltat
- self.parms.t += move
- self.parms.p += move
-
- def toggleProjection(self):
- projectionmap = {
- 'perspective': 'ortho',
- 'ortho': 'perspective'
- }
- parm = self.cam.parm('projection')
- parm.set(projectionmap[parm.evalAsString()])
-
- def unlock(self):
- self.viewport().lockCameraToView(0)
-
- def viewport(self):
- return self.hcviewer.viewports()[3]
-
- def zoom(self, dir):
- dirmap = {'out': 1, 'in': -1}
- move = self.parms.localz * self.parms.deltazoom * dirmap[dir]
- self.parms.t += move
-
- def zoomOrtho(self, dir):
- dirmap = {'out': 1, 'in': -1}
- self.parms.ow += self.parms.deltazoom * dirmap[dir]
-
-
-class Parms:
- def __init__(self, cam):
- self.cam = cam
- self._t = hou.Vector3(0, 0, 0)
- self._r = hou.Vector3(0, 0, 0)
- self._p = hou.Vector3(0, 0, 0)
- self._ow = 10
- self._projection = 'perspective'
- self.localx = hou.Vector3(1, 0, 0)
- self.localy = hou.Vector3(0, 1, 0)
- self.localz = hou.Vector3(0, 0, 1)
- self.globalx = hou.Vector3(1, 0, 0)
- self.globaly = hou.Vector3(0, 1, 0)
- self.globalz = hou.Vector3(0, 0, 1)
- self.zoom = 10
- self.deltat = 1
- self.deltar = 15
- self.deltazoom = 1
- self.target = None
-
- @property
- def t(self):
- return self._t
-
- @t.setter
- def t(self, val):
- self._t = val
- self.cam.parmTuple('t').set(val)
-
- @property
- def r(self):
- return self._r
-
- @r.setter
- def r(self, val):
- self._r = val
- self.cam.parmTuple('r').set(val)
-
- @property
- def p(self):
- return self._p
-
- @p.setter
- def p(self, val):
- self._p = val
- self.cam.parmTuple('p').set(val)
-
- @property
- def ow(self):
- return self._ow
-
- @ow.setter
- def ow(self, val):
- self._ow = val
- self.cam.parm('orthowidth').set(val)
-
- @property
- def projection(self):
- return self._projection
-
- @projection.setter
- def projection(self, val):
- self._projection = val
- self.cam.parm('projection').set(val)
diff --git a/python3.11libs/hclib/core/hcdefaultcam.py b/python3.11libs/hclib/core/hcdefaultcam.py
deleted file mode 100644
index 36dc445..0000000
--- a/python3.11libs/hclib/core/hcdefaultcam.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import hou
-
-class HCDefaultCam:
- def __init__(self, defaultcam):
- self.cam = defaultcam
-
- def frame(self):
- for viewport in self.viewports():
- cam = viewport.camera()
- # Is cam default or node.
- if not cam:
- viewport.frameAll()
-
- def nextView(self):
- return
-
- def rotate(self, key):
- return
-
- def translate(self, key):
- return
-
- def zoom(self):
- return
diff --git a/python3.11libs/hclib/core/hcgeo.py b/python3.11libs/hclib/core/hcgeo.py
deleted file mode 100644
index 14da33b..0000000
--- a/python3.11libs/hclib/core/hcgeo.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import hou
-
-class HCGeo:
- def __init__(self, geo):
- self.geo = geo
-
- def bbox(self):
- return geo.boundingBox()
-
- def centroid(self):
- geo_out = hou.Geometry()
- extract_centroid = hou.sopNodeTypeCategory().nodeVerb('extractcentroid')
- extract_centroid.setParms(
- {'partitiontype': 2}
- )
- extract_centroid.execute(geo_out, [self.geo])
- pt = geo_out.point(0)
- return pt.position()
diff --git a/python3.11libs/hclib/core/hcglobal.py b/python3.11libs/hclib/core/hcglobal.py
deleted file mode 100644
index 6836b9b..0000000
--- a/python3.11libs/hclib/core/hcglobal.py
+++ /dev/null
@@ -1,246 +0,0 @@
-import hou
-
-
-class HCGlobal:
- def __init__(self):
- return
-
- """
- Context
- """
-
- def node(self):
- return self.tab().currentNode()
-
- """
- Layout
- """
-
- def clearLayout(self):
- tabs = self.tabs()
- for tab in tabs:
- if tab != tabs[0]:
- tab.close()
-
- def desktop(self):
- return hou.ui.curDesktop()
-
- def hcPane(self):
- from .hcpane import HCPane
-
- return HCPane(self.pane())
-
- def hcTab(self):
- from .hctab import HCTab
-
- return HCTab(self.pane())
-
- def layout(self):
- lefts = []
- tops = []
- for pane in self.panes():
- geo = pane.qtScreenGeometry()
- lefts.append(geo.left())
- tops.append(geo.top())
- print(lefts)
- print(tops)
-
- def networkEditors(self):
- editors = []
- for tab in self.tabs():
- if tab.type() == hou.paneTabType.NetworkEditor:
- editors.append(tab)
- return editors
-
- def pane(self):
- return hou.ui.paneUnderCursor()
-
- def panes(self):
- return self.desktop().panes()
-
- def sceneViewers(self):
- viewers = []
- for tab in self.tabs():
- if tab.type() == hou.paneTabType.SceneViewer:
- viewers.append(tab)
- return viewers
-
- ## tab and tabs functions intentionally do not use the hou.ui.paneTabUnderCursor method
- def tab(self):
- return self.pane().currentTab()
-
- def tabs(self):
- return self.pane().tabs()
-
- def viewports(self):
- viewports = []
- viewers = self.sceneViewers
- for viewer in viewers:
- for viewport in viewer.viewports():
- viewports.append(viewport)
- return viewports
-
- """
- Menus
- """
-
- def colorEditor(self):
- hou.ui.selectColor()
-
- def floatingParameterEditor(self):
- tab = self.tab()
- if tab.type() == hou.paneTabType.NetworkEditor:
- hou.ui.showFloatingParameterEditor(self.node())
- else:
- hou.ui.setStatusMessage("Not a network editor", hou.severityType.Error)
-
- def openFile(self):
- hou.ui.selectFile()
-
- """
- Utils
- """
-
- def autosave(self):
- return hou.getPreference('autoSave')
-
- def keycam(self):
- msgmap = {
- "Object": "Entered keycam in an obj/object context",
- "Sop": "Entered keycam in a sop/geometry context",
- "Lop": "Entered keycam in a lop context"
- }
- viewer = self.sceneViewers()[0]
- category = viewer.pwd().childTypeCategory().name()
- if category in msgmap:
- viewer.setCurrentState('keycam')
- hou.ui.setStatusMessage(msgmap[category])
- else:
- hou.ui.setStatusMessage("Keycam is only available in obj, sop and lop contexts",
- hou.severityType.Error)
-
- def projectPath(self):
- return hou.hipFile.path()
-
- def reloadColorSchemes(self):
- hou.ui.reloadColorScheme()
- hou.ui.reloadViewportColorSchemes()
-
- def reloadHotkeys(self):
- from ..utils.hcbindings import load
-
- load()
-
- def reloadKeycam(self):
- hou.ui.reloadViewerState('keycam')
-
- def removeEventLoopCallbacks(self):
- callbacks = hou.ui.eventLoopCallbacks()
- for callback in callbacks:
- hou.ui.removeEventLoopCallback(callback)
-
- # def restartHoudini(self):
- # import os
- # import subprocess
- # executable = sys.argv[0]
- # executable = os.environ.get("HFS") + "/bin/houdini"
- # subprocess.Popen([executable])
- # hou.exit()
- # return
-
- def setUpdateModeAuto(self):
- hou.setUpdateMode(hou.updateMode.AutoUpdate)
-
- def setUpdateModeManual(self):
- hou.setUpdateMode(hou.updateMode.Manual)
-
- def triggerUpdate(self):
- hou.ui.triggerUpdate()
-
- def toggleAutoSave(self):
- map = {'0': '1', '1': '0'}
- hou.setPreference('autoSave', map[hou.getPreference('autoSave')])
-
- def updateMainMenuBar(self):
- hou.ui.updateMainMenuBar()
-
- """
- Visibility
- """
-
- def hideShelf(self):
- self.desktop().shelfDock().show(0)
-
- def showShelf(self):
- self.shelfDock().show(1)
-
- def toggleMainMenuBar(self):
- map = {'1': '0', '0': '1'}
- hou.setPreference('showmenu.val', map[hou.getPreference('showmenu.val')])
-
- def toggleMenus(self):
- visible = 0
- panes = self.panes()
- tabs = self.tabs()
- editors = self.networkEditors()
- viewers = self.sceneViewers()
- ## Main menu
- if hou.getPreference('showmenu.val') == '1':
- visible = 1
- ## Network editor menu
- elif any(editor.getPref('showmenu') == '1' for editor in editors):
- visible = 1
- ## Network controls
- elif any(tab.isShowingNetworkControls() for tab in tabs):
- visible = 1
- ## Scene viewer toolbars (top, right, left)
- elif any(viewer.isShowingOperationBar() for viewer in viewers):
- visible = 1
- elif any(viewer.isShowingDisplayOptionsBar() for viewer in viewers):
- visible = 1
- elif any(viewer.isShowingSelectionBar() for viewer in viewers):
- visible = 1
- ## Tabs
- elif any(pane.isShowingPaneTabs() for pane in panes):
- visible = 1
-
- ## Set state
- hou.setPreference('showmenu.val', str(not visible))
- for editor in editors:
- editor.setPref('showmenu', str(not visible))
- for tab in tabs:
- tab.showNetworkControls(not visible)
- for pane in panes:
- pane.showPaneTabs(not visible)
- for viewer in viewers:
- viewer.showOperationBar(not visible)
- viewer.showDisplayOptionsBar(not visible)
- viewer.showSelectionBar(not visible)
- ## Needs to be called twice for some reason
- hou.ui.setHideAllMinimizedStowbars(visible)
- hou.ui.setHideAllMinimizedStowbars(visible)
-
- def toggleNetworkControls(self):
- visible = 0
- tabs = self.tabs()
- for tab in tabs:
- if tab.isShowingNetworkControls():
- visible = 1
- for tab in tabs:
- tab.showNetworkControls(not visible)
-
- def toggleStowbars(self):
- if hou.ui.hideAllMinimizedStowbars():
- hou.ui.setHideAllMinimizedStowbars(False)
- else:
- hou.ui.setHideAllMinimizedStowbars(True)
- hou.ui.setHideAllMinimizedStowbars(True)
-
- def toggleTabs(self):
- visible = 0
- panes = self.panes()
- for pane in panes:
- if pane.isShowingPaneTabs():
- visible = 1
- for pane in panes:
- pane.showPaneTabs(not visible)
diff --git a/python3.11libs/hclib/core/hcnetworkeditor.py b/python3.11libs/hclib/core/hcnetworkeditor.py
deleted file mode 100644
index b2d53af..0000000
--- a/python3.11libs/hclib/core/hcnetworkeditor.py
+++ /dev/null
@@ -1,149 +0,0 @@
-import hou, math, types
-from .hcpathtab import HCPathTab
-
-
-class HCNetworkEditor(HCPathTab):
- def __init__(self, tab):
- self.tab = tab
- self.editor = tab
- self.deltat = 2
-
- def addDot(self):
- if len(self.selectedNodes()) == 1:
- dot = self.context().createNetworkDot()
- dot.setInput(node)
- dot.setPosition(self.cursorPos())
-
- def addNetworkBox(self):
- networkbox = self.context().createNetworkBox()
- networkbox.setPosition(self.currentNode().position())
-
- def addStickyNote(self):
- stickynote = self.context().createStickyNote()
- p = self.cursorPos()
- stickynote.setPosition(p)
- stickynote.setColor(hou.Color(0.71, 0.78, 1.0))
-
- def arrangeNodes(self):
- # self.context().layoutChildren(horizontal_spacing=5, vertical_spacing=
- return
-
- def bounds(self):
- return self.editor.visibleBounds()
-
- def cursorPos(self):
- return self.editor.cursorPosition()
-
- def deselectAll(self):
- self.selectedNodes().setSelected(False)
-
- def frameAll(self):
- self.editor.requestZoomReset()
-
- def quantizeNodes(self):
- return
-
- def renameNode(self):
- node = self.currentNode()
- name = hou.ui.readInput("Rename_node", buttons=("Yes", "No"))
- if name[0] == 0:
- node.setName(name[1])
-
- def screenSize(self):
- return self.editor.screenBounds().size()
-
- def setBounds(self, bounds):
- self.editor.setVisibleBounds(bounds)
-
- def showPathMessage(self):
- self.editor.flashMessage(image=None, message=self.path(), duration=1)
-
- def showRadialMenu(self):
- from ..utils.hcradialutils import editorRadialMain
- menu = editorRadialMain()
- print(menu)
- self.editor.displayRadialMenu("hc_editor_radial_menu")
-
- def size(self):
- return self.bounds().size()
-
- def toggleDimUnusedNodes(self):
- map = {
- '0': '1',
- '1': '0'
- }
- mode = self.editor.getPref('dimunusednodes')
- self.editor.setPref('dimunusednodes', map[mode])
-
- def toggleGridMode(self):
- map = {
- '0': '1',
- '1': '2',
- '2': '0'
- }
- mode = self.editor.getPref('gridmode')
- self.editor.setPref('gridmode', map[mode])
-
- def toggleMenu(self):
- map = {
- '0': '1',
- '1': '0'
- }
- mode = self.editor.getPref('showmenu')
- self.editor.setPref('showmenu', map[mode])
-
- def toggleUpdateMode(self):
- map = {
- 'updateMode.Manual': hou.updateMode.AutoUpdate,
- 'updateMode.AutoUpdate': hou.updateMode.Manual
- }
- mode = str(hou.updateModeSetting())
- hou.setUpdateMode(map[mode])
-
- def translateNodes(self, direction):
- idxmap = {
- 'up': 1,
- 'down': 1,
- 'left': 0,
- 'right': 0
- }
- rectifiermap = {
- 'up': hou.Vector2(0, 0.85),
- 'down': hou.Vector2(0, -0.85),
- 'left': hou.Vector2(0.-0.85, 0),
- 'right': hou.Vector2(0.85, 0)
- }
- for node in self.selectedNodes():
- idx = idxmap[direction]
- p = node.position() + rectifiermap[direction]
- val = p[idx]
- if val%1 <= 0.5:
- val = math.floor(val)
- else:
- val = math.ceil(val)
- p[idx] = val
- node.setPosition(p)
-
- def translateView(self, direction):
- xformmap = {
- 'up': hou.Vector2(0, self.deltat * self.zoomLevel()),
- 'down': hou.Vector2(0, self.deltat * self.zoomLevel() * -1),
- 'left': hou.Vector2(self.deltat * self.zoomLevel() * -1, 0),
- 'right': hou.Vector2(self.deltat * self.zoomLevel(), 0)
- }
- bounds = self.bounds()
- bounds.translate(xformmap[direction])
- self.setBounds(bounds)
-
- def zoom(self, direction):
- scalemap = {
- 'in': (0.75, 0.75),
- 'out': (1.25, 1.25)
- }
- bounds = self.bounds()
- bounds.scale(scalemap[direction])
- self.setBounds(bounds)
-
- def zoomLevel(self):
- zoomlevel = self.size()[0] / self.size()[0]
- return zoomlevel
diff --git a/python3.11libs/hclib/core/hcpane.py b/python3.11libs/hclib/core/hcpane.py
deleted file mode 100644
index 2c0a93a..0000000
--- a/python3.11libs/hclib/core/hcpane.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import hou
-from .hcglobal import HCGlobal
-
-
-class HCPane:
-
- def __init__(self, pane):
- self.hcglobal = HCGlobal()
- self.pane = pane
-
- """
- Pane
- """
-
- def close(self):
- for tab in self.tabs():
- tab.close()
-
- def isMaximized(self):
- return self.pane.isMaximized()
-
- def only(self):
- tabs = self.hcglobal.tabs()
- tabs.remove(self.tab())
- for tab in tabs:
- tab.close()
-
- def qtScreenGeometry(self):
- return self.pane.qtScreenGeometry()
-
- def setIsMaximized(self, bool):
- self.pane.setIsMaximized(bool)
-
- def toggleMaximize(self):
- self.setIsMaximized(not self.isMaximized())
-
- """
- Split
- """
-
- def contract(self):
- fraction = round(self.splitFraction(), 3) + 0.1
- self.setSplitFraction(fraction)
- hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
-
- def expand(self):
- fraction = round(self.splitFraction(), 3) - 0.1
- self.setSplitFraction(fraction)
- hou.ui.setStatusMessage("Pane fraction: " + str(fraction))
-
- def isSplitMaximized(self):
- return self.pane.isSplitMaximized()
-
- # def resize(self):
- # import hctl.ui.resizedialog
- # panel = hctl.ui.resizedialog.resizeWidget(self)
- # panel.show()
-
- def setIsSplitMaximized(self, bool):
- self.pane.setIsSplitMaximized(bool)
-
- def setRatioHalf(self):
- self.setSplitFraction(0.5)
-
- def setRatioQuarter(self):
- self.setSplitFraction(0.25)
-
- def setRatioThird(self):
- self.setSplitFraction(0.333)
-
- def setSplitFraction(self, fraction):
- self.pane.setSplitFraction(fraction)
-
- def splitFraction(self):
- return self.pane.getSplitFraction()
-
- def splitHorizontal(self):
- self.pane.splitHorizontally()
-
- def splitRotate(self):
- self.pane.splitRotate()
-
- def splitSwap(self):
- self.pane.splitSwap()
-
- def splitVertical(self):
- self.pane.splitVertically()
-
- def toggleSplitMaximized(self):
- self.setIsSplitMaximized(not self.isSplitMaximized())
-
- """
- Tabs
- """
-
- def hcTab(self):
- from .hctab import HCTab
-
- return HCTab(self.tab())
-
- def isShowingTabs(self):
- return self.pane.isShowingPaneTabs()
-
- # def newTab(self):
- # reload(hcnewpanetabmenu)
- # newPaneTabMenu = hcnewpanetabmenu.newPaneTabMenu()
- # newPaneTabMenu.show()
-
- def showTabs(self, bool):
- self.pane.showPaneTabs(bool)
-
- def tab(self):
- return self.pane.currentTab()
-
- def tabs(self):
- return self.pane.tabs()
-
- def toggleTabs(self):
- self.showTabs(not self.isShowingTabs())
diff --git a/python3.11libs/hclib/core/hcpathtab.py b/python3.11libs/hclib/core/hcpathtab.py
deleted file mode 100644
index a1c10e8..0000000
--- a/python3.11libs/hclib/core/hcpathtab.py
+++ /dev/null
@@ -1,41 +0,0 @@
-import hou
-from .hcgeo import HCGeo
-from .hctab import HCTab
-
-class HCPathTab(HCTab):
- def __init__(self, tab):
- self.tab = tab
-
- def context(self):
- return self.tab.pwd()
-
- def contextType(self):
- return self.tab.pwd().type().name()
-
- def currentNode(self):
- return self.tab.currentNode()
-
- def geo(self):
- map = {
- 'dop': self.tab.currentNode,
- 'lop': None,
- 'obj': self.tab.pwd().children()[0].displayNode,
- 'geo': self.tab.currentNode
- }
- node = map[self.contextType()]()
- return node.geometry()
-
- def hcgeo(self):
- return HCGeo(self.geo())
-
- def nodeType(self):
- return self.tab.currentNode().type().name()
-
- def path(self):
- return self.tab.pwd().path()
-
- def pwd(self):
- return self.tab.pwd()
-
- def selectedNodes(self):
- return self.tab.pwd().selectedChildren()
diff --git a/python3.11libs/hclib/core/hcsceneviewer.py b/python3.11libs/hclib/core/hcsceneviewer.py
deleted file mode 100644
index b70c38d..0000000
--- a/python3.11libs/hclib/core/hcsceneviewer.py
+++ /dev/null
@@ -1,264 +0,0 @@
-import hou, types
-from .hcpathtab import HCPathTab
-# Layout/viewport IDs
-#
-# DoubleSide: 2 3
-#
-# DoubleStack: 3
-# 0
-#
-# Quad: 2 3
-# 1 0
-#
-# QuadBottomSplit: 3
-# 2 1 0
-#
-# QuadLeftSplit: 2
-# 1 3
-# 0
-#
-# TripleBottomSplit: 3
-# 1 0
-#
-# TripleLeftSplit: 2
-# 0 3
-# 1
-#
-# Single:
-# setViewportLayout(layout, single=-1)
-# -1: current viewport (viewportmouse is/was over)
-# 0: top-left quad viewport (default: Top)
-# 1: top-right quad viewport (default: Perspective)
-# 2: bottom-left quad viewport (default: Front)
-# 3: bottom-right quad viewport (default: Right)
-
-class HCSceneViewer(HCPathTab):
- def __init__(self, tab):
- self.tab = tab
- self.viewer = tab
-
- """
- Geometry
- """
-
- def displaySets(self):
- displaySets = []
- for viewport in self.viewports():
- settings = viewport.settings()
- displaySet = settings.displaySet(hou.displaySetType.DisplayModel)
- displaySets.append(displaySet)
- return(displaySets)
-
- def toggleLightGeo(self):
- self.setShowLights(not self.showLights())
-
- def toggleBackface(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPrimBackfaces():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPrimBackfaces(not visible)
-
- def togglePointMarkers(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPointMarkers():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPointMarkers(not visible)
-
- def togglePointNormals(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPointNormals():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPointNormals(not visible)
-
- def togglePointNumbers(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPointNumbers():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPointNumbers(not visible)
-
- def togglePrimNormals(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPrimNormals():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPrimNormals(not visible)
-
- def togglePrimNumbers(self):
- visible = 0
- displaySets = self.displaySets()
- for displaySet in displaySets:
- if displaySet.isShowingPrimNumbers():
- visible = 1
- for displaySet in displaySets:
- displaySet.showPrimNumbers(not visible)
-
- def toggleVectors(self):
- for viewport in self.viewports():
- viewportSettings = viewport.settings()
- vector_scale = viewportSettings.vectorScale()
- if vector_scale == 1:
- viewportSettings.setVectorScale(0)
- elif vector_scale == 0:
- viewportSettings.setVectorScale(1)
- else:
- viewportSettings.setVectorScale(1)
-
- """
- Grids
- """
-
- def toggleGrid(self):
- refplane = self.referencePlane()
- refplane.setIsVisible(not refplane.isVisible())
-
- """
- Layout
- """
-
- def layout(self):
- return self.viewer.viewportLayout()
-
- def layouts(self):
- return (
- hou.geometryViewportLayout.DoubleSide,
- hou.geometryViewportLayout.DoubleStack,
- hou.geometryViewportLayout.Quad,
- hou.geometryViewportLayout.QuadBottomSplit,
- hou.geometryViewportLayout.QuadLeftSplit,
- hou.geometryViewportLayout.TripleBottomSplit,
- hou.geometryViewportLayout.TripleLeftSplit,
- hou.geometryViewportLayout.Single,
- )
-
- def layoutIndices(self):
- return (
- (2, 3),
- (3, 0),
- (2, 3, 1, 0),
- (3, 2, 1, 0),
- (2, 1, 0, 3),
- (3, 1, 0),
- (2, 3, 1),
- (3),
- )
-
- def nextLayout(self):
- index = self.layouts().index(self.layout())
- new_index = (index + 1) % len(self.layouts())
- self.setLayout(self.layouts()[new_index])
- return
-
- def setLayout(self, layout):
- layoutmap = {
- 'DoubleSide': hou.geometryViewportLayout.DoubleSide,
- 'DoubleStack': hou.geometryViewportLayout.DoubleStack,
- 'Quad': hou.geometryViewportLayout.Quad,
- 'QuadBottomSplit': hou.geometryViewportLayout.QuadBottomSplit,
- 'QuadLeftSplit': hou.geometryViewportLayout.QuadLeftSplit,
- 'Single': hou.geometryViewportLayout.Single,
- 'TripleBottomSplit': hou.geometryViewportLayout.TripleBottomSplit,
- 'TripleLeftSplit': hou.geometryViewportLayout.TripleLeftSplit
- }
- self.viewer.setViewportLayout(layoutmap[layout])
-
- """
- UI
- """
-
- def toggleDisplayOptionsToolbar(self):
- self.viewer.showDisplayOptionsBar(not self.viewer.isShowingDisplayOptionsBar())
-
- def toggleGroupList(self):
- self.viewer.setGroupListVisible(not self.viewer.isGroupListVisible())
-
- def toggleOperationBar(self):
- self.viewer.showOperationBar(not self.viewer.isShowingOperationBar())
-
- def toggleSelectionBar(self):
- self.viewer.showSelectionBar(not self.viewer.isShowingSelectionBar())
-
- def toggleToolbars(self):
- state1 = self.viewer.isShowingOperationBar()
- state2 = self.viewer.isShowingDisplayOptionsBar()
- state3 = self.viewer.isShowingSelectionBar()
- if state1 + state2 + state3 > 0:
- self.viewer.showOperationBar(0)
- self.viewer.showDisplayOptionsBar(0)
- self.viewer.showSelectionBar(0)
- else:
- self.viewer.showOperationBar(1)
- self.viewer.showDisplayOptionsBar(1)
- self.viewer.showSelectionBar(1)
-
- """
- Utils
- """
-
- def keycam(self):
- # Contexts:
- # Chop
- # ChopNet
- # Cop
- # Cop2
- # CopNet
- # Data
- # Director
- # Dop
- # Driver
- # Lop
- # Manager
- # Object
- # Shop
- # Sop
- # Top
- # TopNet
- # Vop
- # VopNet
- contextmap = {
- "Object": "Entered keycam in an obj context",
- "Sop": "Entered keycam in a sop context",
- "Lop": "Entered keycam in a lop context",
- }
- context = self.pwd().childTypeCategory().name()
- if context in contextmap:
- self.viewer.setCurrentState('keycam')
- hou.ui.setStatusMessage(contextmap[context])
- else:
- hou.ui.setStatusMessage("No obj, sop or lop context", hou.severityType.Error)
-
- """
- Viewports
- """
-
- def homeAllViewports(self):
- for viewport in self.viewports():
- viewport.home()
-
- def viewport(self):
- return self.viewer.curViewport()
-
- def viewports(self):
- return self.viewer.viewports()
-
- def frame(self):
- for viewport in self.viewports():
- cam = viewport.camera()
- # Is camera node or default.
- if not cam:
- viewport.frameAll()
- else:
- viewport.frameAll()
diff --git a/python3.11libs/hclib/core/hctab.py b/python3.11libs/hclib/core/hctab.py
deleted file mode 100644
index 16f9879..0000000
--- a/python3.11libs/hclib/core/hctab.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import hou
-import types
-
-
-class HCTab():
- def __init__(self, tab):
- self.tab = tab
-
- """
- Controls
- """
-
- def toggleNetworkControls(self):
- if self.tab.hasNetworkControls():
- self.tab.showNetworkControls(not self.tab.isShowingNetworkControls())
-
- def togglePin(self):
- self.tab.setPin(not self.tab.isPin())
-
- """
- Tab
- """
-
- def close(self):
- self.tab.close()
-
- def closeOtherTabs(self):
- for tab in self.pane().tabs():
- if tab != self.tab:
- tab.close()
-
- def hcPane(self):
- from .hcpane import HCPane
- return HCPane(self.pane())
-
- def setTypeDetailsView(self):
- self.setType(hou.paneTabType.DetailsView)
-
- def setTypeNetworkEditor(self):
- self.setType(hou.paneTabType.NetworkEditor)
-
- def setTypeParm(self):
- self.setType(hou.paneTabType.Parm)
-
- def setTypePythonShell(self):
- self.setType(hou.paneTabType.PythonShell)
-
- def setTypeSceneViewer(self):
- self.setType(hou.paneTabType.SceneViewer)
-
- def setType(self, type):
- tab = self.tab.setType(type)
- return tab
-
- def pane(self):
- return self.tab.pane()
-
- def type(self):
- return self.tab.type()
diff --git a/python3.11libs/hclib/core/hcviewport.py b/python3.11libs/hclib/core/hcviewport.py
deleted file mode 100644
index 5e79bfd..0000000
--- a/python3.11libs/hclib/core/hcviewport.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import hou
-
-
-class HCViewport():
- def __init__(self, viewport):
- self.viewport = viewport
- return
-
- def visualizers(self):
- category = hou.viewportVisualizerCategory.Scene
- vis_arr = hou.viewportVisualizers.visualizers(category)
- return vis_arr
-
- def setType(self, type):
- self.viewport.changeType(type)
diff --git a/python3.11libs/hclib/ui/__init__.py b/python3.11libs/hclib/ui/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/python3.11libs/hclib/ui/hcfunctionpanel.py b/python3.11libs/hclib/ui/hcfunctionpanel.py
deleted file mode 100644
index 4992493..0000000
--- a/python3.11libs/hclib/ui/hcfunctionpanel.py
+++ /dev/null
@@ -1,251 +0,0 @@
-import hou, inspect, platform
-from PySide6 import QtCore, QtGui, QtWidgets
-from PySide6.QtCore import Qt
-from fuzzyfinder import fuzzyfinder
-from .core.hcglobal import HCGlobal
-from .core.hcpane import HCPane
-from .core.tab import HCTab
-from importlib import reload
-
-
-class HCFunctionPanel(QtWidgets.QDialog):
- def __init__(self):
- super(HCFunctionPanel, self).__init__(hou.qt.mainWindow())
-
- ## WINDOW PARAMETERS
- self.resize(900, 400)
- self.setWindowTitle("hcfunctionpanel")
- self.setWindowFlags(Qt.Tool | Qt.WindowStaysOnTopHint)
- # Focus the input line AFTER setting window flags
- self.functionPanel.inputLine.setFocus()
-
- ## OBJECTS
- self.hc_global = HCGlobal()
- self.hc_pane = self.hc_global.hcPane()
- self.hc_tab = self.hc_global.hcTab()
- # self.hc_viewport = self.hc_tab.viewport()
-
- ## PATHS
- self.project_path = self.hc_global.projectPath()
- ct = self.project_path.count('/')
- self.project_path = self.project_path.split('/', ct - 2)[-1]
- self.network_path = self.hc_tab.pwd()
-
- ## LAYOUT
- self.main_layout = QtWidgets.QHBoxLayout()
- self.function_panel = FunctionPanel(self)
- self.main_layout.addWidget(self.function_panel)
- self.setLayout(self.main_layout)
-
- def closeEvent(self, event):
- self.setParent(None)
-
- def lists(self):
- # Define various arrays for navigating tabs
- self.tab_names = [tab.name() for tab in self.hc_global.tabs()]
- self.tab_types = (
- hou.paneTabType.ApexEditor,
- hou.paneTabType.CompositorViewer,
- hou.paneTabType.DetailsView,
- hou.paneTabType.NetworkEditor,
- hou.paneTabType.Parm,
- hou.paneTabType.PythonPanel,
- hou.paneTabType.PythonShell,
- hou.paneTabType.SceneViewer,
- hou.paneTabType.Textport
- )
- self.tab_type_names = (
- "ApexEditor",
- "CompositorViewer",
- "DetailsView",
- "NetworkEditor",
- "Parm",
- "PythonPanel",
- "PythonShell",
- "SceneViewer",
- "Textport"
- )
- self.tab_labels = []
- for tab in self.hc_global.tabs():
- index = self.tab_types.index(tab.type())
- label = self.tab_type_names[index]
- self.tab_labels.append(label)
-
- def nodes(self):
- self.node = self.hc_tab.currentNode()
-
-
-class FunctionPanel(QtWidgets.QFrame):
- def __init__(self, owner):
- super().__init__()
- self.owner = owner
- self.function_list = self.FunctionList(owner)
- self.input_line = self.InputLine(owner)
- self.input_line.function_list = self.function_list
- layout = QtWidgets.QVBoxLayout()
- layout.addWidget(self.input_line)
- layout.addWidget(self.function_list)
- self.setFrameShape(QtWidgets.QFrame.Panel)
- self.setLineWidth(1)
- self.setLayout(layout)
- self.setFixedWidth(300)
-
-
- class InputLine(QtWidgets.QLineEdit):
- def __init__(self, owner, parent=None):
- super().__init__(parent)
- self.owner = owner
- # self.returnPressed.connect(self.function_list.exec)
- self.key_ctl_n = QtCore.Signal()
- self.key_ctl_p = QtCore.Signal()
- self.key_down = QtCore.Signal()
- self.key_up = QtCore.Signal()
- # Enable fuzzy search
- self.textEdited.connect(self.filter)
-
- def event(self, event):
- if event.type() == QtCore.QEvent.Type.KeyPress:
- key = event.key()
- mods = event.modifiers()
- # Choose modifiers based on platform
- sys = platform.system()
- modifier = None
-
- # Macos or linux
- if sys == 'Darwin':
- modifier = Qt.MetaModifier
- elif sys == 'linux':
- modifier = Qt.ControlModifier
-
- # Highlight next item
- if mods == modifier and key == Qt.Key_N:
- self.next()
- return True
- elif key == Qt.Key_Down:
- self.next()
- return True
-
- # Highlight previous item
- elif mods == modifier and key == Qt.Key_P:
- self.prev()
- return True
- elif key == Qt.Key_Up:
- self.prev()
- return True
-
- # Upon nothing
- return QtWidgets.QLineEdit.event(self, event)
- else:
- return QtWidgets.QLineEdit.event(self, event)
-
- def filter(self):
- query = self.text()
- items = self.function_list.items()
- item_names = [item.text() for item in items]
- matches = list(fuzzyfinder(query, item_names))
- for item in items:
- if item.text() in matches:
- item.setHidden(0)
- else:
- item.setHidden(1)
- self.function_list.setIndex(0)
-
- def visibleItems(self):
- item_count = self.function_list.count()
- items = []
- for i in range(item_count):
- item = self.function_list.item(i)
- if not item.isHidden():
- items.append(item)
- return(items)
-
- def next(self):
- items = self.visibleItems()
- current_item = self.function_list.selectedItems()[0]
- index = items.index(current_item)
- index = (index + 1) % len(items)
- self.function_list.setIndex(index)
-
- def prev(self):
- items = self.visibleItems()
- current_item = self.function_list.selectedItems()[0]
- index = items.index(current_item)
- index = (index - 1) % len(items)
- self.function_list.setIndex(index)
-
-
- class FunctionList(QtWidgets.QListWidget):
- def __init__(self, owner, parent=None):
- super().__init__(parent)
- self.owner = owner
- self.populate()
- self.itemClicked.connect(self.execute)
- self.setSelectionMode(QtWidgets.QListWidget.SingleSelection)
- self.setIndex(0)
-
- def execute(self):
- items = self.items()
- current_item = self.selectedItems()[0]
- index = items.index(current_item)
- item = items[index]
- label = item.text()
- obj_name, method_name = label.split('.')
- # Populate functions based on context
- if obj_name == 'HCNetworkEditor':
- method = getattr(self.owner.hcNetworkEditor, method_name)
- method()
- elif obj_name == 'HCPane':
- method = getattr(self.owner.hcPane, method_name)
- method()
- elif obj_name == 'HCTab':
- method = getattr(self.owner.hcTab, method_name)
- method()
- elif obj_name == 'HCSceneViewer':
- method = getattr(self.owner.hcSceneViewer, method_name)
- method()
- elif obj_name == 'HCGlobal':
- method = getattr(self.owner.hcGlobal, method_name)
- method()
- # Close window on function execution
- # self.accept()
-
- def items(self):
- item_count = self.count()
- items = [self.item(i) for i in range(item_count)]
- return(items)
-
- def populate(self):
- items = []
-
- for name, obj in inspect.getmembers(HCNetworkEditor, inspect.isfunction):
- if hasattr(obj, 'interactive') and obj.interactive:
- items.append(('HCNetworkEditor', name))
-
- for name, obj in inspect.getmembers(hcu.HCPane, inspect.isfunction):
- if hasattr(obj, 'interactive') and obj.interactive:
- items.append(('HCPane', name))
-
- for name, obj in inspect.getmembers(hcu.HCTab, inspect.isfunction):
- if hasattr(obj, 'nteractive') and obj.interactive:
- items.append(('HCTab', name))
-
- if self.owner.hc_tab.type() == hou.paneTabType.SceneViewer:
- for name, obj in inspect.getmembers(HCSceneViewer, inspect.isfunction):
- if hasattr(obj, 'interactive') and obj.interactive:
- items.append(('HCSceneViewer', name))
-
- for name, obj in inspect.getmembers(HCGlobal, inspect.isfunction):
- if hasattr(obj, 'interactive') and obj.interactive:
- items.append(('HCGlobal', name))
-
- for item in items:
- self.addItem(item[0] + '.' + item[1])
-
- def setIndex(self, index):
- items = self.items()
- counter = 0
- for item in items:
- if not item.isHidden():
- if counter == index:
- self.setCurrentItem(item)
- counter += 1
diff --git a/python3.11libs/hclib/ui/hcnewtabpanel.py b/python3.11libs/hclib/ui/hcnewtabpanel.py
deleted file mode 100644
index 50e7c11..0000000
--- a/python3.11libs/hclib/ui/hcnewtabpanel.py
+++ /dev/null
@@ -1,104 +0,0 @@
-import hou
-from fuzzyfinder import fuzzyfinder
-from PySide6 import QtCore, QtWidgets
-from PySide6.QtWidgets import QLineEdit, QDialog
-from .core.hcglobal import HCGlobal
-
-
-class inputBox(QLineEdit):
- onTab = QtCore.Signal()
- def event(self, event):
- if event.type() == QtCore.QEvent.Type.KeyPress and event.key() == QtCore.Qt.Key_Tab:
- self.onTab.emit()
- return True
- else:
- return QLineEdit.event(self, event)
-
-
-class newTabPanel(QDialog):
- def __init__(self):
- super(newTabPanel, self).__init__(hou.qt.mainWindow())
-
- self.hc_global = HCGlobal()
-
- # Input box
- self.input_box = inputBox()
- self.input_box.onTab.connect(self.nextItem)
- self.input_box.textEdited.connect(self.filter)
- self.input_box.returnPressed.connect(self.execAction)
-
- # Item array
- self.items = []
- self.items.append(("Geometry Spreadsheet", hou.paneTabType.DetailsView))
- self.items.append(("Network Editor", hou.paneTabType.NetworkEditor))
- self.items.append(("Parameters", hou.paneTabType.Parm))
- self.items.append(("Python Shell", hou.paneTabType.PythonShell))
- self.items.append(("Scene Viewer", hou.paneTabType.SceneViewer))
-
- # List widget
- self.list_widget = QtWidgets.QListWidget()
- for item in self.items:
- self.list_widget.addItem(item[0])
- self.list_widget.itemClicked.connect(self.execAction)
-
- # Make layout
- self.layout = QtWidgets.QBoxLayout(QtWidgets.QBoxLayout.Direction.TopToBottom)
- self.layout.addWidget(self.input_box)
- self.layout.addWidget(self.list_widget)
- self.setLayout(self.layout)
- self.setIndex(0)
-
- def closeEvent(self, event):
- print("closing")
- self.setParent(None)
-
- def execAction(self):
- current_item = self.list_widget.selectedItems()[0]
- items = self.getItems()
- index = items.index(current_item)
- tab = self.hc_global.tab()
- tab.createTab(self.items[index][1])
- self.accept()
-
- def filter(self):
- text = self.input_box.text()
- items = self.getItems()
- names = [item.text() for item in items]
- suggestions = fuzzyfinder(text, names)
- suggestions = list(suggestions)
- for item in items:
- if item.text() in suggestions:
- item.setHidden(0)
- else:
- item.setHidden(1)
- self.setIndex(0)
-
- def getItems(self):
- item_count = self.list_widget.count()
- items = [self.list_widget.item(i) for i in range(item_count)]
- return(items)
-
- def getVisibleItems(self):
- item_count = self.list_widget.count()
- items = []
- for i in range(item_count):
- item = self.list_widget.item(i)
- if not item.isHidden():
- items.append(item)
- return(items)
-
- def nextItem(self):
- items = self.getVisibleItems()
- selected_item = self.list_widget.selectedItems()[0]
- index = items.index(selected_item)
- index = (index + 1) % len(items)
- self.setIndex(index)
-
- def setIndex(self, idx):
- items = self.getItems()
- counter = 0
- for item in items:
- if not item.isHidden():
- if counter == idx:
- self.listWidget.setItemSelected(item, 1)
- counter += 1
diff --git a/python3.11libs/hclib/ui/hcpanel.py b/python3.11libs/hclib/ui/hcpanel.py
deleted file mode 100644
index d74403e..0000000
--- a/python3.11libs/hclib/ui/hcpanel.py
+++ /dev/null
@@ -1,221 +0,0 @@
-import hou
-from PySide6.QtCore import Qt
-from PySide6.QtWidgets import (
- QCheckBox,
- QDialog,
- QHBoxLayout,
- QLabel,
- QMenu,
- QSlider,
- QVBoxLayout,
-)
-
-from ..core.hcglobal import HCGlobal
-from ..core.hcpane import HCPane
-from .hcwidgets import HCButton
-
-
-class HCPanel(QDialog):
- def __init__(self, hc_tab):
- super(HCPanel, self).__init__(hou.qt.mainWindow())
-
- # Objects
- self.hc_global= HCSession()
- self.hc_tab = hc_tab
- self.hc_pane = HCPane(hc_pane.pane())
-
- # Window parameters
- pane_geo = self.hcPane.qtScreenGeometry()
- pane_center = pane_geo.center()
- x = pane_center.x() - 200
- y = pane_center.y() - 75
- self.resize(200, 100)
- self.move(x, y)
- self.setWindowTitle("hctl panel")
- self.setWindowFlags(Qt.Tool | Qt.WindowStaysOnTopHint)
-
- # Utility lists
- self.tab_types = (
- hou.paneTabType.ApexEditor,
- hou.paneTabType.ChannelEditor,
- hou.paneTabType.ChannelViewer,
- hou.paneTabType.CompositorViewer,
- hou.paneTabType.DetailsView,
- hou.paneTabType.IPRViewer,
- hou.paneTabType.NetworkEditor,
- hou.paneTabType.Parm,
- hou.paneTabType.PythonPanel,
- hou.paneTabType.PythonShell,
- hou.paneTabType.SceneViewer,
- hou.paneTabType.Textport,
- hou.paneTabType.TreeView,
- )
- self.tab_names = [tab.name() for tab in self.hc_global.tabs()]
- self.tab_type_names = (
- "ApexEditor",
- "Channel Editor",
- "Channel Viewer",
- "CompositorViewer",
- "DetailsView",
- "IPR Viewer",
- "NetworkEditor",
- "Parm",
- "PythonPanel",
- "PythonShell",
- "SceneViewer",
- "Textport",
- "Tree View",
- )
- self.tab_labels = []
- for tab in self.hc_global.tabs():
- index = self.tab_types.index(tab.type())
- label = self.tab_type_names[index]
- self.tab_labels.append(label)
-
- # Paths
- self.project_path = hou.hipFile.name()
- ct = self.project_path.count("/")
- self.project_path = self.project_path.split("/", ct - 2)[-1]
- self.network_path = self.hc_tab.pwd()
-
- # Global column
- global_col = QVBoxLayout()
- # Label
- global_label = QLabel("Global")
- global_label.setStyleSheet("color: #909090")
- global_col.addWidget(global_label)
- # Toggle tabs
- global_tabs_btn = HCButton("Tabs")
- global_tabs_btn.clicked.connect(self.hc_global.toggleTabs)
- global_col.addWidget(global_tabs_btn)
- # Toggle network controls
- global_network_controls_btn = HCButton("Network Controls")
- global_network_controls_btn.clicked.connect(self.hc_global.toggleNetworkControls)
- global_col.addWidget(global_network_controls_btn)
- # Toggle autosave
- global_col.addWidget(self.SessionAutosaveCheckBox(self))
- # Toggle menus
- global_menus_btn = HCButton("Menus")
- global_menus_btn.clicked.connect(self.hc_global.toggleMenus)
- global_col.addWidget(global_menus_btn)
- # Toggle stowbars
- global_stowbars_btn = HCButton("Stowbars")
- global_stowbars_btn.clicked.connect(self.hc_global.toggleStowbars)
- global_col.addWidget(global_stowbars_btn)
- # Fill empty space
- global_col.addStretch()
-
- # Context column
- context_col = QVBoxLayout()
- # Label
- context_label = QLabel("Context")
- context_label.setStyleSheet("color: #909090")
- context_col.addWidget(context_label)
- # Toggle tabs
- context_tabs_btn = HCButton("Tabs")
- context_tabs_btn.clicked.connect(self.hc_pane.toggleTabs)
- context_col.addWidget(context_tabs_btn)
- # Toggle network controls
- context_network_controls_btn = HCButton("Network Controls")
- context_network_controls_btn.clicked.connect(self.hc_tab.toggleNetworkControls)
- context_col.addWidget(context_network_controls_btn)
- # Toggle pin
- context_col.addWidget(self.TabPinCheckBox(self))
- # Tab switcher
- context_col.addWidget(self.TabMenu(self))
- # Tab type switcher
- # context_col.addWidget(self.TabTypeMenu(self))
- # Toggle maximize
- context_maximize_btn = HCButton("Maximize")
- context_maximize_btn.clicked.connect(self.hc_pane.toggleMaximized)
- context_col.addWidget(context_maximize_btn)
- # Size slider
- context_size_slider = QSlider(Qt.Horizontal)
- context_size_slider.setFixedWidth(300 / 2)
- context_size_slider.setValue(self.hc_pane.splitFraction() * 100)
- context_size_slider.valueChanged.connect(self.sliderChange)
- context_col.addWidget(context_size_slider)
-
- # Scene viewer controls
- if self.hc_tab.type() == hou.paneTabType.SceneViewer:
- # Toggle keycam
- context_keycam_btn = HCButton("Keycam")
- context_keycam_btn.clicked.connect(self.hc_tab.keycam)
- context_col.addWidget(context_keycam_btn)
- # Home all viewports
- context_home_btn = HCButton("Home")
- context_home_btn.clicked.connect(self.hc_tab.homeAllViewports)
- context_col.addWidget(context_home_btn)
-
- # Fill empty space
- context_col.addStretch()
-
- # LAYOUT
- self.layout = QHBoxLayout()
- self.layout.addLayout(global_col)
- self.layout.addLayout(global_col)
- self.setLayout(self.layout)
-
- def sliderChange(self, value):
- self.hc_pane.setSplitFraction(value / 100)
-
- def closeEvent(self, event):
- self.setParent(None)
-
- class GlobalAutosaveCheckBox(QCheckBox):
- def __init__(self, owner):
- super().__init__("Autosave")
- state = owner.hc_global.autosave()
- if state == "1":
- self.setCheckState(Qt.Checked)
- elif state == "0":
- self.setCheckState(Qt.Unchecked)
- self.clicked.connect(owner.hc_global.toggleAutoSave)
-
- class TabPinCheckBox(QCheckBox):
- def __init__(self, owner):
- super().__init__("Pin")
- self.owner = owner
- self.clicked.connect(self.owner.hc_tab.togglePin)
- if self.owner.hc_tab.isPin():
- self.setCheckState(Qt.Checked)
- else:
- self.setCheckState(Qt.Unchecked)
-
- class TabMenu(HCButton):
- def __init__(self, owner):
- super().__init__(str(owner.hc_pane.currentTab().type()).split(".")[-1])
- self.owner = owner
- self.tabs = self.owner.hc_pane.tabs()
- self.tab_names = [str(tab.type()).split(".")[-1] for tab in self.tabs]
- self.menu = QMenu(self)
- idx = 0
- for tab_name in self.tab_names:
- action = self.menu.addAction(tab_name)
- action.triggered.connect(
- lambda checked=False, index=idx: self.changeTab(index)
- )
- idx += 1
- self.setMenu(self.menu)
-
- def changeTab(self, index):
- new_tab = self.tabs[index]
- new_tab.setIsCurrentTab()
- self.owner.close()
-
- class TabTypeMenu(HCButton):
- def __init__(self, owner):
- super().__init__("menu")
- self.owner = owner
- menu = QMenu(self)
- for label in owner.tab_type_names:
- menu.addAction(label)
- menu.triggered.connect(self.on_action_triggered)
- self.setMenu(menu)
-
- def on_action_triggered(self, action):
- self.setText(action.text())
- # index = self.owner.tab_type_names.index(action.text())
- # tab_type = self.owner.tab_types[index]
- # tab = self.owner.hctlTab.setType(tab_type)
- # self.owner.hctlTab = hcu.HctlTab(tab)
diff --git a/python3.11libs/hclib/ui/hcresizepanel.py b/python3.11libs/hclib/ui/hcresizepanel.py
deleted file mode 100644
index 879ed43..0000000
--- a/python3.11libs/hclib/ui/hcresizepanel.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import hou
-from PySide6 import QtGui, QtWidgets
-from PySide6.QtWidgets import QLabel, QShortcut, QBoxLayout
-
-
-class HCResizePanel(QtWidgets.QDialog):
- def __init__(self, pane):
- super(HCResizePanel, self).__init__(hou.qt.mainWindow())
-
- self.pane = pane
-
- # Keys
- key_j = QShortcut(QtGui.QKeySequence("J"), self)
- key_j.activated.connect(self.onJ)
- key_k = QShortcut(QtGui.QKeySequence("K"), self)
- key_k.activated.connect(self.onK)
-
- self.pane_label = QLabel()
- self.pane_label.setText("Pane: " + str(pane.currentTab().type()))
-
- self.is_maximized_label = QLabel()
- self.is_maximized_label.setText("Maximized: " + str(pane.isMaximized))
-
- self.split_fraction_label = QLabel()
- self.split_lraction_label.setText("Split Fraction: " + str(pane.getSplitFraction()))
-
- self.layout = QBoxLayout(QBoxLayout.Direction.TopToBottom)
- self.layout.addWidget(self.pane_label)
- self.layout.addWidget(self.is_maximized_label)
- self.layout.addWidget(self.split_fraction_label)
-
- self.setLayout(self.layout)
-
- def onJ(self):
- split_fraction = self.pane.getSplitFraction()
- split_fraction += 0.05
- self.pane.setSplitFraction(split_fraction)
- self.split_fraction_label.setText("Split Fraction: " + str(split_fraction))
-
- def onK(self):
- split_fraction = self.pane.getSplitFraction()
- split_fraction -= 0.05
- self.pane.setSplitFraction(split_fraction)
- self.split_fraction_label.setText("Split Fraction: " + str(split_fraction))
diff --git a/python3.11libs/hclib/ui/hcstatuspanel.py b/python3.11libs/hclib/ui/hcstatuspanel.py
deleted file mode 100644
index 622f880..0000000
--- a/python3.11libs/hclib/ui/hcstatuspanel.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import hou
-from PySide6 import QtWidgets
-from PySide6.QtWidgets import QLabel, QVBoxLayout
-from PySide6.QtCore import Qt
-
-
-class Dialog(QtWidgets.QDialog):
- def __init__(self):
- super(Dialog, self).__init__(hou.qt.mainWindow())
- self.resize(500, 200)
- self.setWindowTitle("hctl status")
- self.setWindowFlags(Qt.Tool | Qt.WindowStaysOnTopHint)
-
- # Widgets
- self.project_path_label = QLabel("Project Path")
- self.network_path_label = QLabel("Network Path")
- self.tab_type_label = QLabel("Tab Type")
-
- # Layout
- self.layout = QVBoxLayout()
- self.layout.addWidget(self.project_path_label)
- self.layout.addWidget(self.network_path_label)
- self.layout.addWidget(self.tab_type_label)
- self.layout.addStretch()
- self.setLayout(self.layout)
-
- self.update()
-
- def closeEvent(self, event):
- self.setParent(None)
-
- def lists(self):
- # Arrays for navigating pane tabs
- self.tab_types = (
- hou.paneTabType.ApexEditor,
- hou.paneTabType.CompositorViewer,
- hou.paneTabType.DetailsView,
- hou.paneTabType.NetworkEditor,
- hou.paneTabType.Parm,
- hou.paneTabType.PythonPanel,
- hou.paneTabType.PythonShell,
- hou.paneTabType.SceneViewer,
- hou.paneTabType.Textport
- )
- self.tab_type_names = (
- "ApexEditor",
- "CompositorViewer",
- "DetailsView",
- "NetworkEditor",
- "Parm",
- "PythonPanel",
- "PythonShell",
- "SceneViewer",
- "Textport"
- )
- self.tab_names = [tab.name() for tab in self.hc_global.tabs()]
-
- # Populate pane tab labels array
- self.tab_labels = []
- for tab in self.hc_global.tabs():
- index = self.tab_types.index(tab.type())
- label = self.tab_type_names[index]
- self.tab_labels.append(label)
-
- def update(self):
- # Labels
- self.project_path_label.setText("Project path: " + hou.session.projectPath)
- self.network_path_label.setText("Network Path: " + hou.session.networkPath)
- self.tab_type_label.setText("Tab type: " + str(hou.session.tabType))
diff --git a/python3.11libs/hclib/ui/hcvisualizerpanel.py b/python3.11libs/hclib/ui/hcvisualizerpanel.py
deleted file mode 100644
index ee40680..0000000
--- a/python3.11libs/hclib/ui/hcvisualizerpanel.py
+++ /dev/null
@@ -1,131 +0,0 @@
-import hou
-from fuzzyfinder import fuzzyfinder
-from PySide6 import QtCore
-from PySide6.QtWidgets import QListWidget, QListWidgetItem, QDialog, QLineEdit, QBoxLayout
-from PySide6.QtCore import Qt, QEvent
-
-
-class filterBox(QLineEdit):
- def __init__(self):
- # Key handler
- self.onTab = QtCore.Signal()
-
- def event(self, event):
- if event.type() == QEvent.Type.KeyPress:
- key = event.key()
- if key == Qt.Key_Tab:
- self.onTab.emit()
- return True
- return QLineEdit.event(self, event)
-
-
-class VisualizerMenu(QDialog):
- def __init__(self):
- super(VisualizerMenu, self).__init__(hou.qt.mainWindow())
-
- # Resources
- self.viewport = hou.session.hctlSession.viewport()
- self.vis_arr = self.viewport.visualizers()
-
- # Filter box
- self.filter_box = filterBox()
- self.filter_box.onTab.connect(self.listNext)
- self.filter_box.returnPressed.connect(self.itemToggle)
- self.filter_box.textEdited.connect(self.listFilter)
-
- # List widget
- self.list_widget = QListWidget()
- if self.vis_arr:
- for vis in self.vis_arr:
- list_item = QListWidgetItem()
- item_label = vis.label()
- item_state = vis.isActive(self.curViewport)
-
- list_item.setText(item_label)
-
- if item_state:
- list_item.setCheckState(Qt.Checked)
- else:
- list_item.setCheckState(Qt.Unchecked)
-
- self.list_widget.addItem(list_item)
-
- self.list_widget.itemClicked.connect(self.item_toggle)
-
- # Layout
- self.layout = QBoxLayout(QBoxLayout.Direction.TopToBottom)
- self.layout.addWidget(self.filter_box)
- self.layout.addWidget(self.list_widget)
- self.setLayout(self.layout)
- self.listSetIndex(0)
-
- def closeEvent(self, event):
- print("Closing")
- self.setParent(None)
-
- def itemToggle(self):
- current_item = self.list_widget.selectedItems()[0]
- item_name = current_tem.text()
- items = self.listGetItems()
- item_names = [item.text() for item in items]
- index = item_names.index(item_name)
-
- vis = self.vis_arr[index]
- state = vis.isActive(self.viewport)
-
- vis.setIsActive(not state, self.viewport)
-
- if state:
- current_item.setCheckState(Qt.Unchecked)
- else:
- current_item.setCheckState(Qt.Checked)
-
- def listFilter(self):
- text = self.input_box.text()
- items = self.getItems()
- names = [item.text() for item in items]
- suggestions = fuzzyfinder(text, names)
- suggestions = list(suggestions)
- for item in items:
- if item.text() in suggestions:
- item.setHidden(0)
- else:
- item.setHidden(1)
- self.listSetIndex(0)
-
- def listGetItems(self):
- item_count = self.list_widget.count()
- items = [self.list_widget.item(i) for i in range(item_count)]
- return(items)
-
- def listGetVisibleItems(self):
- item_count = self.list_widget.count()
- items = []
- for i in range(item_count):
- item = self.list_widget.item(i)
- if not item.isHidden():
- items.append(item)
- return(items)
-
- def listNext(self):
- visible_items = self.listGetVisibleItems()
- current_item = self.list_widget.selectedItems()[0]
- index = visible_items.index(current_item)
- index = (index + 1) % len(visible_items)
- self.listSetIndex(index)
-
- def listPrev(self):
- visible_items = self.listGetVisibleItems()
- current_item = self.list_widget.selectedItems()[0]
- index = visible_items.index(current_item)
- index = (index - 1) % len(visible_items)
- self.listSetIndex(index)
-
- def listSetIndex(self, index):
- visible_items = self.listGetVisibleItems()
- counter = 0
- for visible_item in visible_items:
- if counter == index:
- self.list_widget.setItemSelected(visible_item, 1)
- return
- counter += 1
diff --git a/python3.11libs/hclib/ui/hcwidgets.py b/python3.11libs/hclib/ui/hcwidgets.py
deleted file mode 100644
index c7f1cc6..0000000
--- a/python3.11libs/hclib/ui/hcwidgets.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from importlib import reload
-from PySide6 import QtWidgets
-from PySide6.QtCore import Qt
-
-
-class HCButton(QtWidgets.QPushButton):
- def __init__(self, text, parent=None):
- super().__init__(text, parent)
- self.setStyleSheet("text-align: left; padding: 0 0 0 0")
- self.setFlat(1)
- self.setFixedSize(120, 16)
-
-
-class HCMenu(QtWidgets.QPushButton):
- def __init__(self, label, parent=None):
- super().__init__(label, parent)
- self.setStyleSheet("text-align: left; padding: 0 0 0 0")
- self.setFlat(1)
diff --git a/python3.11libs/hclib/utils/__init__.py b/python3.11libs/hclib/utils/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/python3.11libs/hclib/utils/hcbindings.py b/python3.11libs/hclib/utils/hcbindings.py
deleted file mode 100644
index 67e7c8e..0000000
--- a/python3.11libs/hclib/utils/hcbindings.py
+++ /dev/null
@@ -1,264 +0,0 @@
-import hou, platform
-
-# KEY NAMES
-# uparrow, downarrow, leftarrow, rightarrow
-# alt, cmd, shift, ctrl, tab, del, backspace, enter, esc
-# f1...f12
-# pageup, pagedown, end, home, insert
-# /, \\
-# pad0...pad9
-# padstar, padslash
-# pause
-# space
-
-def load():
- clear_assignments()
- remove_assignments()
- add_assignments()
- return
-
-
-def clear_assignments():
- assignments = (
- ## h
- 'h.add_key',
- 'h.aliases',
- 'h.audio_panel',
- 'h.auto_key',
- 'h.cache_manager',
- 'h.channeleditor',
- 'h.clear_cop_caches',
- 'h.comp_project_manager',
- 'h.context_help',
- 'h.desktop_mgr',
- 'h.global_animation_options',
- 'h.mat_palette',
- 'h.merge',
- 'h.new',
- 'h.next_key',
- 'h.open',
- 'h.perf_monitor',
- # 'h.play_bwd',
- # 'h.play_fwd',
- # 'h.prev_key',
- 'h.python_shell',
- # 'h.range_end',
- # 'h.range_start',
- 'h.textport',
- ## deskmgr
- 'deskmgr.new',
- "deskmgr.save",
- ## h.pane
- 'h.pane.clone',
- 'h.pane.closetab',
- 'h.pane.copytab',
- 'h.pane.edit_bookmark',
- 'h.pane.editpathastext',
- # 'h.pane.jump_back',
- # 'h.pane.jump_forth',
- 'h.pane.link_minus',
- 'h.pane.link_plus',
- 'h.pane.nexttab',
- 'h.pane.prevtab',
- 'h.pane.to_cop_view',
- 'h.pane.to_chanedit',
- 'h.pane.to_chop_view',
- 'h.pane.to_geosheet',
- 'h.pane.to_ipr_viewer',
- 'h.pane.to_mat_palette',
- 'h.pane.to_net',
- 'h.pane.to_old_net',
- 'h.pane.to_parm',
- 'h.pane.to_scene_view',
- 'h.pane.to_textport',
- 'h.pane.to_treeview',
- ## h.pane.bundle
- 'h.pane.bundle.addbundle',
- 'h.pane.bundle.duplicate',
- ## h.pane.chedit
- 'h.pane.chedit.bsave',
- 'h.pane.chedit.load',
- 'h.pane.chedit.save',
- 'h.pane.chedit.scroll_to_current_frame',
- 'h.pane.chedit.show_groups',
- 'h.pane.chedit.show_layers',
- 'h.pane.chedit.show_parmbox',
- ## h.pane.group
- 'h.pane.group.addgroup',
- 'h.pane.group.equals',
- 'h.pane.group.minus',
- 'h.pane.group.selectall',
- 'h.pane.group.selectnone',
- 'h.pane.group.togpin',
- 'h.pane.group.togpinall',
- ## h.pane.gview
- 'h.pane.gview.increase_subd',
- 'h.pane.gview.decrease_subd',
- 'h.pane.gview.delete',
- 'h.pane.gview.dockhudhandles',
- 'h.pane.gview.edit_snap_options',
- 'h.pane.gview.operator_menu_branch',
- 'h.pane.gview.state.view.home_selection',
- 'h.pane.gview.repeat_current',
- 'h.pane.gview.repeat_current_branch',
- 'h.pane.gview.restore_prevcam',
- 'h.pane.gview.selectstylebox',
- 'h.pane.gview.selectstylebrush',
- 'h.pane.gview.selectstylelaser',
- 'h.pane.gview.selectstylelasso',
- ## h.pane.gview.handle
- 'h.pane.gview.handle.remove_keyframe',
- 'h.pane.gview.handle.set_keyframe',
- ## h.pane.gview.handle.agentcollisionlayer
- 'h.pane.gview.handle.agentcollisionlayer.boxhandle',
- 'h.pane.gview.handle.agentcollisionlayer.orientationhandle',
- ## h.pane.gview.handle.agentconfigurejoints
- 'h.pane.gview.handle.agentconfigurejoints.conehandle',
- 'h.pane.gview.handle.agentconfigurejoints.childrotationhandle',
- ## h.pane.gview.state
- 'h.pane.gview.state.volatile_chmodify',
- ## h.pane.wsheet
- 'h.pane.wsheet.add_image',
- 'h.pane.wsheet.add_postit',
- 'h.pane.wsheet.addfileop',
- 'h.pane.wsheet.allowdroponwire',
- 'h.pane.wsheet.batch_rename',
- 'h.pane.wsheet.color_palette',
- 'h.pane.wsheet.doautomovenodes',
- 'h.pane.wsheet.home',
- 'h.pane.wsheet.home_selected',
- 'h.pane.wsheet.up',
- 'h.pane.wsheet.down',
- 'h.pane.wsheet.left',
- 'h.pane.wsheet.right',
- 'h.pane.wsheet.edit_images',
- 'h.pane.wsheet.layout',
- 'h.pane.wsheet.layout_all',
- 'h.pane.wsheet.layout_mode',
- 'h.pane.wsheet.maximize',
- 'h.pane.wsheet.maximize_adjust',
- 'h.pane.wsheet.minimize',
- 'h.pane.wsheet.minimize_adjust',
- 'h.pane.wsheet.open_display_options',
- 'h.pane.wsheet.open_treeview',
- 'h.pane.wsheet.node_quick_nav',
- 'h.pane.wsheet.scope_chans',
- 'h.pane.wsheet.select',
- 'h.pane.wsheet.stitch_mode',
- 'h.pane.wsheet.zoom_in',
- 'h.pane.wsheet.zoom_out',
- ## h.playbar
- 'h.playbar.next_bookmark',
- 'h.playbar.prev_bookmark',
- 'h.playbar.show_range',
- ## inputfield
- 'inputfield.context_help',
- 'inputfield.editor',
- )
-
- for assignment in assignments:
- context = assignment.rpartition('.')[0]
- symbol = assignment
- hou.hotkeys.clearAssignments(context, symbol)
-
-
-def remove_assignments():
- assignments = (
- ## h
- ('h.copy', 'alt+c'),
- ('h.cut', 'alt+x'),
- ('h.find', 'alt+f'),
- )
-
-def add_assignments():
- assignments = (
- ## h
- ('h.stow_shelf', 'ctrl+['),
- ('h.stow_shelf', 'cmd+['),
- ## h.pane
- ('h.pane.shelf', 'ctrl+]'),
- ('h.pane.shelf', 'cmd+]'),
- ## h.pane.gview
- ('h.pane.gview.refplane', 'shift+g'),
- ('h.pane.gview.state.view.home_selection', 'shift+s'),
- ## h.pane.parms
- ('h.pane.parms.edit_expression', 'ctrl+e'),
- ## h.pane.editparms
- ('h.pane.editparms.selectall', 'alt+h'),
- ## h.pane.wsheet
- ('h.pane.wsheet.bypass_mode', 'b'),
- ('h.pane.wsheet.drop_on_wire_mode', 'pad8'),
- ('h.pane.wsheet.doautomovenodes', 'cmd+pad9'),
- ('h.pane.wsheet.home_selected', 'shift+s'),
- ('h.pane.wsheet.jump_mark_1', 'pad1'),
- ('h.pane.wsheet.jump_mark_2', 'pad2'),
- ('h.pane.wsheet.jump_mark_3', 'pad3'),
- ('h.pane.wsheet.jump_mark_4', 'pad4'),
- ('h.pane.wsheet.jump_mark_5', 'pad5'),
- ('h.pane.wsheet.up', 'shift+k'),
- ('h.pane.wsheet.down', 'shift+j'),
- ('h.pane.wsheet.left', 'shift+h'),
- ('h.pane.wsheet.right', 'shift+l'),
- ('h.pane.wsheet.set_mark_1', 'cmd+pad1'),
- ('h.pane.wsheet.set_mark_2', 'cmd+pad2'),
- ('h.pane.wsheet.set_mark_3', 'cmd+pad3'),
- ('h.pane.wsheet.set_mark_4', 'cmd+pad4'),
- ('h.pane.wsheet.set_mark_5', 'cmd+pad5'),
- ('h.pane.wsheet.node_quick_nav', 'ctrl+s'),
- ('h.pane.wsheet.select', 'ctrl+alt+h'),
- ## h.pane.textport - emacs
- ('h.pane.textport.up', 'ctrl+p'),
- ('h.pane.textport.down', 'ctrl+n'),
- ('h.pane.textport.next', 'ctrl+f'),
- ('h.pane.textport.prev', 'ctrl+b'),
- ('h.pane.textport.top', 'ctrl+a'),
- ('h.pane.textport.bottom', 'ctrl+e'),
- ('h.pane.textport.nextword', 'cmd+f'),
- ('h.pane.textport.pageup', 'cmd+v'),
- ('h.pane.textport.pagedown', 'ctrl+v'),
- ('h.pane.textport.firstline', 'cmd+shift+,'),
- ('h.pane.textport.lastline', 'cmd+shift+.'),
- ('h.pane.textport.jump_to_line', 'alt+g'),
- ('h.pane.textport.selectup', 'ctrl+shift+p'),
- ('h.pane.textport.selectdown', 'ctrl+shift+n'),
- ('h.pane.textport.selectnext', 'ctrl+shift+f'),
- ('h.pane.textport.selectprev', 'ctrl+shift+b'),
- ('h.pane.textport.selectbottom', 'ctrl+shift+e'),
- ('h.pane.textport.selecttop', 'ctrl+shift+a'),
- ('h.pane.textport.selectnextword', 'cmd+shift+f'),
- ('h.pane.textport.toggle_comment', 'ctrl+;'),
- ## inputfield - emacs
- ('inputfield.up', 'ctrl+p'),
- ('inputfield.down', 'ctrl+n'),
- ('inputfield.next', 'ctrl+f'),
- ('inputfield.prev', 'ctrl+b'),
- ('inputfield.next_word', 'alt+f'),
- ('inputfield.prev_word', 'alt+b'),
- ('inputfield.end', 'ctrl+e'),
- ('inputfield.home', 'ctrl+a'),
- )
-
- # list_mac = ()
-
- # list_linux = ()
-
- # if platform.system() == "Darwin":
- # return
- # elif platform.system() == "linux":
- # return
-
- for assignment in assignments:
- context = assignment[0].rpartition(".")[0]
- print(context)
- symbol = assignment[0]
- key = assignment[1]
- hou.hotkeys.addAssignment(context, symbol, key)
-
-
-def bind_commands():
-
- list = ()
- for command in list:
- context = binding[0]
- command = binding[1]
- hou.hotkeys.addCommandBinding(context, command)
diff --git a/python3.11libs/hclib/utils/hclayouts.py b/python3.11libs/hclib/utils/hclayouts.py
deleted file mode 100644
index 6c63f77..0000000
--- a/python3.11libs/hclib/utils/hclayouts.py
+++ /dev/null
@@ -1,85 +0,0 @@
-from ..core.hcglobal import HCGlobal
-
-def setLayoutQuad(self, hcglobal):
- hcglobal.clearLayout()
- hcglobal.tabs()[0].setType(hou.paneTabType.PythonShell)
- hcglobal.panes()[0].splitHorizontally()
- hcglobal.panes()[0].splitVertically()
- hcglobal.panes()[1].splitVertically()
-
-def setLayoutRamp(self, hc_global):
- hcglobal.removeEventLoopCallbacks()
- hcglobal.clearLayout()
- hcglobal.panes()[0].splitVertically()
- hcglobal.paneTabs()[1].setType(hou.paneTabType.Parm)
- hcglobal.panes()[1].setSplitRatio(0.3)
- hcglobal.panes()[1].createTab()
-
-def setLayoutTriH(self):
- hcglobal.removeEventLoopCallbacks()
- hcglobal.clearLayout()
- # Make panes
- hcglobal.tabs()[0].setType(hou.paneTabType.PythonShell)
- hcglobal.panes()[0].splitHorizontally()
- hcglobal.panes()[1].splitHorizontally()
- # Make paneTabs
- hcglobal.panes()[1].createTab(hou.paneTabType.PythonShell)
- hcglobal.panes()[1].tabs()[0].setIsCurrentTab()
- # Set types
- hcglobal.panes()[0].tabs()[0].setType(hou.paneTabType.SceneViewer)
- hcglobal.panes()[1].tabs()[0].setType(hou.paneTabType.Parm)
- hcglobal.panes()[1].tabs()[1].setType(hou.paneTabType.DetailsView)
- hcglobal.panes()[2].tabs()[0].setType(hou.paneTabType.NetworkEditor)
- # Ratios
- hcglobal.panes()[0].setSplitFraction(0.5)
- hou.session.last_pane = self.pane()
- hou.ui.addEventLoopCallback(triHCallback)
-
-def triHCallback(hcglobal):
- panes = hcglobal.panes()
- pane = hcglobal.pane()
- if str(pane) != str(hou.session.lastPane):
- hou.session.last_pane = pane
- if str(pane) == str(panes[1]):
- pane.setSplitFraction(0.6)
- elif str(pane) == str(panes[2]):
- pane.setSplitFraction(0.3)
- return True
-
-def setLayoutTriV(hcglobal):
- # Remove callbacks
- hcglobal.removeEventLoopCallbacks()
- # Reset layout
- hcglobal.clearLayout()
- # Make panes
- hcglobal.panes()[0].tabs()[0].setType(hou.paneTabType.PythonShell)
- hcglobal.panes()[0].splitHorizontally()
- hcglobal.panes()[1].splitVertically()
- # Make pane tabs
- hcglobal.panes()[1].createTab(hou.paneTabType.PythonShell)
- hcglobal.panes()[1].tabs()[0].setIsCurrentTab()
- # Set types
- hcglobal.panes()[0].tabs()[0].setType(hou.paneTabType.SceneViewer)
- hcglobal.panes()[1].tabs()[0].setType(hou.paneTabType.Parm)
- hcglobal.panes()[1].tabs()[1].setType(hou.paneTabType.DetailsView)
- hcglobal.panes()[2].tabs()[0].setType(hou.paneTabType.NetworkEditor)
- # Set ratios
- hcglobal.panes()[0].setSplitFraction(0.66)
- # Ok
- hou.session.last_pane = self.pane()
- hou.ui.addEventLoopCallback(self.triVCallback)
-
-def triVCallback(hcglobal):
- panes = hcglobal.panes()
- pane = hcglobal.pane()
- if str(pane) != str(hou.session.last_pane):
- hou.session.last_pane = pane
- if str(pane) == str(panes[0]):
- pane.setSplitFraction(0.7)
- elif str(pane) == str(panes[1]):
- panes[0].setSplitFraction(0.4)
- pane.setSplitFraction(0.33)
- elif str(pane) == str(panes[2]):
- panes[0].setSplitFraction(0.4)
- pane.setSplitFraction(0.66)
- return True
diff --git a/python3.11libs/hclib/utils/hclistener.py b/python3.11libs/hclib/utils/hclistener.py
deleted file mode 100644
index e9ee27e..0000000
--- a/python3.11libs/hclib/utils/hclistener.py
+++ /dev/null
@@ -1,107 +0,0 @@
-import hou
-# from importlib import reload
-from ..core.hcglobal import HCGlobal
-from ..core.hcpane import HCPane
-from ..core.hctab import HCTab
-# from .core.hcviewport import HCViewport
-
-
-class HCListener():
- def __init__(self):
- self.report_tab = 1
- hou.session.tab = None
- hou.session.pane = None
- hou.session.hc_global = None
- hou.session.hc_pane = None
- hou.session.hc_tab = None
- hou.session.hc_sceneviewer = None
- hou.session.hc_networkeditor = None
- hou.session.project_path = hou.hipFile.path()
- hou.session.network_path = None
- hou.session.tab_type = None
- self.update_objects()
- return
-
- def start(self):
- hou.ui.addEventLoopCallback(self.listener)
-
- def stop(self):
- hou.ui.removeEventLoopCallback(self.listener)
-
- def update_objects(self):
- hou.session.tab = hou.ui.paneTabUnderCursor()
- hou.session.pane = hou.ui.paneUnderCursor()
-
- hou.session.hc_global = HCGlobal()
- hou.session.hc_pane = HCPane(hou.ui.paneUnderCursor())
- hou.session.hc_tab = HCTab(hou.session.tab)
-
- if hou.session.hc_tab != None:
-
- if hou.session.hc_tab.hasNetworkControls():
- hou.session.network_path = hou.session.hc_tab.path()
- hou.session.tab_type = hou.session.hc_tab.type()
-
- if hou.session.tab.type() == hou.paneTabType.SceneViewer:
- hou.session.sceneviewer = HCSceneViewer(hou.session.tab)
- else: hou.session.sceneviewer = None
-
- if hou.session.tab.type() == hou.paneTabType.NetworkEditor:
- hou.session.networkeditor = HctlNetworkEditor(hou.session.tab)
- else: hou.session.networkeditor = None
-
- # Labels
- # self.project_path_label.setText("Project path: " + self.projectPath())
- # if hou.session.tab.hasNetworkControls():
- # self.network_path_label.setText("Network Path: " + self.networkPath())
- # else: self.network_path_label.setText("No Network Path")
- # self.tab_type_label.setText("Tab type: " + str(hou.session.hc_tab.type()))
-
- def listener(self):
- tab = hou.ui.paneTabUnderCursor()
- if tab == None:
- hou.session.tab = None
- elif tab != hou.session.tab:
- print(tab)
- self.update_objects()
-
- def lists(self):
- # Arrays for navigating pane tabs
- self.tab_types = (
- hou.paneTabType.ApexEditor,
- hou.paneTabType.CompositorViewer,
- hou.paneTabType.DetailsView,
- hou.paneTabType.NetworkEditor,
- hou.paneTabType.Parm,
- hou.paneTabType.PythonPanel,
- hou.paneTabType.PythonShell,
- hou.paneTabType.SceneViewer,
- hou.paneTabType.Textport
- )
- self.tab_type_names = (
- "ApexEditor",
- "CompositorViewer",
- "DetailsView",
- "NetworkEditor",
- "Parm",
- "PythonPanel",
- "PythonShell",
- "SceneViewer",
- "Textport"
- )
- self.tab_names = [tab.name() for tab in hou.session.hc_global.tabs()]
-
- # Populate pane tab labels array
- self.tab_labels = []
- for tab in self.hc_global.tabs():
- index = self.tab_types.index(tab.type())
- label = self.tab_type_names[index]
- self.tab_labels.append(label)
-
- def networkPath(self):
- return str(hou.session.tab.pwd())
-
- def projectPath(self):
- return hou.hipFile.name()
- # ct = self.project_path.count("/")
- # self.project_path = self.project_path.split("/", ct - 2)[-1]
diff --git a/python3.11libs/hclib/utils/hcmenuutils.py b/python3.11libs/hclib/utils/hcmenuutils.py
deleted file mode 100644
index a8f7701..0000000
--- a/python3.11libs/hclib/utils/hcmenuutils.py
+++ /dev/null
@@ -1,28 +0,0 @@
-import hou
-
-
-def vector3Test(kwargs):
- parms = kwargs['parms']
- print(parms[0])
- if len(parms) == 3 \
- and parms[0].parmTemplate().type() == hou.parmTemplateType.Float \
- and parms[1].parmTemplate().type() == hou.parmTemplateType.Float \
- and parms[2].parmTemplate().type() == hou.parmTemplateType.Float:
- return True
- else:
- return False
-
-def setVector3(kwargs, x, y, z):
- parms = kwargs['parms']
- name0 = parms[0].name()
- name1 = parms[1].name()
- name2 = parms[2].name()
- node = parms[0].node()
- node.setParmExpressions({name0: x, name1: y, name2: z})
-
-def vector3XMaster(kwargs):
- name0 = parms[0].name()
- name1 = parms[1].name()
- name2 = parms[2].name()
- node = parms[0].node()
- node.setParmExpressions({name1: 'ch("'+name0+'")', name2: 'ch("'+name0+'")'})
diff --git a/python3.11libs/hclib/utils/hcprinter.py b/python3.11libs/hclib/utils/hcprinter.py
deleted file mode 100644
index 2a30605..0000000
--- a/python3.11libs/hclib/utils/hcprinter.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import hou
-
-
-class Printer():
- def __init__(self):
- self.message = ""
- __init__.interactive = False
-
- def layout(self):
- message = "Layout:"
- desktop = hou.ui.curDesktop()
- panes = desktop.panes()
- ct = 0
- for pane in panes:
- message += " Pane" + str(ct) + " -"
- if pane.isSplit():
- message += " split"
- else:
- message += " whole"
- message += " "
- ct += 1
- message = message[0:-1]
- hou.ui.setStatusMessage(message)
- layout.interactive = True
diff --git a/python3.11libs/hclib/utils/hcradialutils.py b/python3.11libs/hclib/utils/hcradialutils.py
deleted file mode 100644
index dc84ef0..0000000
--- a/python3.11libs/hclib/utils/hcradialutils.py
+++ /dev/null
@@ -1,183 +0,0 @@
-import hou
-from hclib import HCGlobal, HCPane, HCSceneViewer, HCTab
-
-"""
-Notes: tab object is retrieved by calling kwargs["pane"]
-"""
-
-def createItem(label="label", pos=0, submenu=False, script='script'):
- item = hou.ui.createRadialItem(submenu=submenu)
- item.setLabel(label)
- item.setScript(script)
- hou.ui.injectRadialItem(pos, item)
-
-"""
-Viewer menu
-"""
-
-def viewerRadialMain(**kwargs):
- menu = hou.ui.createRadialMenu('hcviewerradial', "HC Viewer Radial")
- createItem(
- pos=0,
- label="UI",
- submenu=True, script='from hclib import hcradialutils; hcradialutils.viewerRadialUI()'
- )
- createItem(
- pos=7,
- label="Operation bar",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).toggleOperationBar()'
- )
- createItem(
- pos=6,
- label="Display bar",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).toggleDisplayOptionsToolbar()'
- )
- createItem(
- pos=5,
- label="Selection bar",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).toggleSelectionBar()'
- )
- createItem(
- pos=4,
- label="Keycam",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).keycam()'
- )
- return menu
-
-def viewerRadialLayout(**kwargs):
- menu = hou.ui.createRadialMenu('hcviewerradial', "HC Viewer Radial")
- createItem(
- pos=0,
- label="DoubleSide",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("DoubleSide")'
- )
- createItem(
- pos=1,
- label="DoubleStack",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("DoubleStack")'
- )
- createItem(
- pos=2,
- label="Quad",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("Quad")'
- )
- createItem(
- pos=3,
- label="QuadBottomSplit",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("QuadBottomSplit")'
- )
- createItem(
- pos=4,
- label="QuadLeftSplit",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("QuadLeftSplit")'
- )
- createItem(
- pos=5,
- label="Single",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("Single")'
- )
- createItem(
- pos=6,
- label="TripleBottomSplit",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("TripleBottomSplit")'
- )
- createItem(
- pos=7,
- label="TripleLeftSplit",
- script='from hclib import HCSceneViewer; HCSceneViewer(kwargs["pane"]).setLayout("TripleLeftSplit")'
- )
- return menu
-
-def viewerRadialUI(**kwargs):
- menu = hou.ui.createRadialMenu('hcviewerradial', "HC Viewer Radial")
- createItem(
- pos=0,
- label="Tabs",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).hcPane().toggleTabs()'
- )
- createItem(
- pos=7,
- label="Path",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).toggleNetworkControls()'
- )
- createItem(
- pos=6,
- label="Maximize",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).hcPane().toggleMaximize()'
- )
- createItem(
- pos=5,
- label="Stowbars",
- script='from hclib import HCGlobal; HCGlobal().toggleStowbars()'
- )
- createItem(
- pos=4,
- label="Global tabs",
- script='from hclib import HCGlobal; HCGlobal().toggleTabs()'
- )
- createItem(
- pos=3,
- label="Global paths",
- script='from hclib import HCGlobal; HCGlobal().toggleNetworkControls()'
- )
- createItem(
- pos=2,
- label="Layout",
- submenu=True, script='from hclib import hcradialutils; hcradialutils.viewerRadialLayout()'
- )
- return menu
-
-
-def editorRadialMain(**kwargs):
- menu = hou.ui.createRadialMenu('hceditorradial', "HC Editor Radial")
- createItem(
- pos=0,
- submenu=True,
- label="UI",
- script='from hclib import hcradialutils; hcradialutils.editorRadialUI()'
- )
- createItem(
- pos=7,
- label="Menu",
- script='from hclib import HCNetworkEditor; HCNetworkEditor(kwargs["pane"]).toggleMenu()'
- )
- createItem(
- pos=6,
- label="Frame all",
- script='from hclib import HCNetworkEditor; HCNetworkEditor(kwargs["pane"]).frameAll()'
- )
- return menu
-
-def editorRadialUI(**kwargs):
- menu = hou.ui.createRadialMenu('hceditorradial', "HC Editor Radial")
- createItem(
- pos=0,
- label="Tabs",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).hcPane().toggleTabs()'
- )
- createItem(
- pos=7,
- label="Path",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).toggleNetworkControls()'
- )
- createItem(
- pos=6,
- label="Global tabs",
- script='from hclib import HCGlobal; HCGlobal().toggleTabs()'
- )
- createItem(
- pos=5,
- label="Global paths",
- script='from hclib import HCGlobal; HCGlobal().toggleNetworkControls()'
- )
- createItem(
- pos=4,
- label="Stowbars",
- script='from hclib import HCGlobal; HCGlobal().toggleStowbars()'
- )
- createItem(
- pos=3,
- label="Maximize",
- script='from hclib import HCTab; HCTab(kwargs["pane"]).hcPane().toggleMaximize()'
- )
- return menu
diff --git a/python3.11libs/hclib/utils/hcutils.py b/python3.11libs/hclib/utils/hcutils.py
deleted file mode 100644
index e69de29..0000000
diff --git a/scripts/beforescenesave.py b/scripts/beforescenesave.py
deleted file mode 100644
index 5b9bf20..0000000
--- a/scripts/beforescenesave.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# import os.path
-
-# print("--BEGIN beforescenesave.py--")
-# #####################################
-
-
-# this_path = hou.hipFile.path()
-
-# path = "~/src/hou-ctl/recent_paths"
-# path = os.path.expanduser(path)
-# file = open(path, "r")
-# path_arr = file.read().split("\n")
-
-# if this_path in path_arr:
-# path_arr.remove(this_path)
-# path_arr.insert(0, this_path)
-
-# file = open(path, "w")
-# file.write("\n".join(path_arr))
-
-
-# ###################################
-# print("--END beforescenesave.py--")
diff --git a/scripts/diffuse.py b/scripts/diffuse.py
deleted file mode 100755
index 2997acc..0000000
--- a/scripts/diffuse.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import hou
-
-def gainlosslink(kwargs):
-
- node = kwargs["node"]
-
- gain = node.parm("gain").eval()
-
- loss = node.parm("loss")
-
- loss.set(gain)
-
-def avg(node):
-
- valnode = hou.node('./valnode')
- geo = valnode.geometry()
- avg = geo.attribValue('avg')
-
- thisnode = hou.pwd()
- thisnode.parm('diffusegoal').set(avg)
-
-def min(node):
-
- valnode = hou.node('./valnode')
- geo = valnode.geometry()
- min = geo.attribValue('min')
-
- thisnode = hou.pwd()
- thisnode.parm('diffusegoal').set(min)
-
-def max(node):
-
- valnode = hou.node('./valnode')
- geo = valnode.geometry()
- max = geo.attribValue('max')
-
- thisnode = hou.pwd()
- thisnode.parm('diffusegoal').set(max)
\ No newline at end of file
diff --git a/scripts/generate_menu.py b/scripts/generate_menu.py
deleted file mode 100755
index 794a75e..0000000
--- a/scripts/generate_menu.py
+++ /dev/null
@@ -1,18 +0,0 @@
-node = kwargs['node']
-geometry = node.geometry()
-pts = geometry.pointAttribs()
-dets = geometry.globalAttribs()
-menu = []
-menu.append('pt_attrs')
-menu.append('Point Attributes:')
-for pt in pts:
- menu.append('pt-' + pt.name())
- menu.append(pt.name())
-menu.append('_separator_')
-menu.append('_separator_')
-menu.append('det_attrs')
-menu.append('Detail Attributes:')
-for det in dets:
- menu.append('det-' + det.name())
- menu.append(det.name())
-return(menu)
\ No newline at end of file
diff --git a/scripts/morpho_combine_module.py b/scripts/morpho_combine_module.py
deleted file mode 100755
index 6985d8a..0000000
--- a/scripts/morpho_combine_module.py
+++ /dev/null
@@ -1,12 +0,0 @@
-def update_description(kwargs):
- node = kwargs['node']
- n_inputs = len(node.inputs())
- desc = ''
- for n in range(n_inputs):
- attr_parm = node.parm('attrs' + str(n))
- if n != 0:
- desc += '\n'
- attr_str = attr_parm.evalAsString()
- desc += str(n) + ': ' + attr_str
- desc_parm = node.parm('desc')
- desc_parm.set(desc)
\ No newline at end of file
diff --git a/scripts/morpho_combine_oninputchanged.py b/scripts/morpho_combine_oninputchanged.py
deleted file mode 100755
index 83c7d48..0000000
--- a/scripts/morpho_combine_oninputchanged.py
+++ /dev/null
@@ -1,39 +0,0 @@
-node = kwargs['node']
-
-inputs = node.inputs()
-n_inputs = len(inputs)
-
-group = hou.ParmTemplateGroup(())
-group.append(node.parm('iterations').parmTemplate())
-group.append(node.parm('desc').parmTemplate())
-
-for i in range(n_inputs):
- string_template = hou.StringParmTemplate(
- name='attrs' + str(i),
- label='Input ' + str(i) + ' Attributes',
- num_components=1,
- default_value=(''),
- item_generator_script="kwargs['node'].generateInputAttribMenu(" + str(i) + ", hou.attribType.Point)",
- menu_type=hou.menuType.StringToggle,
- script_callback='hou.phm().update_description(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- group.append(string_template)
-
-node.setParmTemplateGroup(group)
-
-iterations_parm = node.parm('iterations')
-iterations_parm.set(n_inputs)
-
-#############
-
-node = kwargs['node']
-n_inputs = len(node.inputs())
-desc = ''
-for n in range(n_inputs):
- attr_parm = node.parm('attrs' + str(n))
- if n != 0:
- desc += '\n'
- attr_str = attr_parm.evalAsString()
- desc += str(n) + ': ' + attr_str
-desc_parm = node.parm('desc')
-desc_parm.set(desc)
\ No newline at end of file
diff --git a/scripts/morpho_composite_module.py b/scripts/morpho_composite_module.py
deleted file mode 100755
index 33dfa72..0000000
--- a/scripts/morpho_composite_module.py
+++ /dev/null
@@ -1,70 +0,0 @@
-def update_description(kwargs):
- node = kwargs['node']
- n_ops_parm = node.parm('n_ops')
- n_ops = n_ops_parm.evalAsInt()
- desc = ''
- for n_op in range(n_ops):
- attr = node.parm('attr' + str(n_op)).evalAsString()
- op = node.parm('op' + str(n_op)).evalAsString()
- if op == 'set':
- desc = attr + ' '
-
- if op == 'add':
- desc += '+ ' + attr + ' '
-
- if op == 'sub':
- desc += '- ' + attr + ' '
-
- if op == 'multi':
- desc += '* ' + attr + ' '
-
- if op == 'raise':
- desc += '^ ' + attr + ' '
-
- if op == 'min':
- desc = 'min(' + attr + ') '
-
- if op == 'max':
- desc = 'max(' + attr + ') '
-
- if op == 'avg':
- desc = 'avg(' + attr + ') '
-
- result = node.parm('result').evalAsString()
- desc += '= ' + result
- desc_parm = node.parm('desc')
- desc_parm.set(desc)
-
-def op_menu(kwargs):
- menu = []
-
- node = kwargs['node']
- mp_index = kwargs['script_multiparm_index']
-
- new_type_parm = node.parm("type" + str(mp_index))
- new_type = new_type_parm.evalAsString()
-
- op_parm = node.parm("op" + str(mp_index))
- op = op_parm.evalAsString()
-
- current_type = "x"
- if mp_index > 0:
- current_type_parm = node.parm("type" + str(mp_index - 1))
- current_type = current_type_parm.evalAsString()
-
- if mp_index == 0:
- menu = ["set", "Set"]
-
- if new_type == "float" and current_type == "float":
- menu = ["set", "Set", "add", "Add", "sub", "Subtract", "multi", "Multiply", "raise", "Raise", "min", "Min", "max", "Max", "avg", "Average"]
-
- if new_type == "float" and current_type == "vec":
- menu = ["set", "Set", "multi", "Multiply", "raise", "Raise"]
-
- if new_type == "vec" and current_type == "float":
- menu = ["set", "Set", "multi", "Multiply"]
-
- if new_type == "vec" and current_type == "vec":
- menu = ["set", "Set", "add", "Add", "sub", "Subtract", "multi", "Multiply", "min", "Min", "max", "Max", "avg", "Average"]
-
- return menu
\ No newline at end of file
diff --git a/scripts/morpho_develop_module.py b/scripts/morpho_develop_module.py
deleted file mode 100755
index 290cca4..0000000
--- a/scripts/morpho_develop_module.py
+++ /dev/null
@@ -1,7 +0,0 @@
-def desc(kwargs):
- node = kwargs['node']
- dir_attr = node.parm('dir_attr').evalAsString()
- multi__attr = node.parm('multi_attr').evalAsString()
- desc_parm = node.parm('desc')
- desc = '@P += ' + dir_attr + ' * ' + multi__attr
- desc_parm.set(desc)
\ No newline at end of file
diff --git a/scripts/morpho_panel_module.py b/scripts/morpho_panel_module.py
deleted file mode 100755
index 772c0c5..0000000
--- a/scripts/morpho_panel_module.py
+++ /dev/null
@@ -1,528 +0,0 @@
-import hou
-import importlib
-import ramp_color_presets
-import ramp_color_schemes
-
-def add_vis_callback(kwargs):
- node = kwargs['node']
- group = node.parmTemplateGroup()
-
- vis_index = 0
- for parm in group.entries():
- if parm.type() == hou.parmTemplateType.Folder:
- vis_index += 1
-
- enable_template = hou.ToggleParmTemplate(
- name='enable_' + str(vis_index),
- label="Enable",
- default_value=True,
- script_callback='hou.phm().enable_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python,
- join_with_next=True)
-
- update_folder_name_template = hou.ButtonParmTemplate(
- name='update_folder_name_' + str(vis_index),
- label="Update Folder Name",
- script_callback='hou.phm().update_folder_name_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
-
- attr_template = hou.StringParmTemplate(
- name='attr_' + str(vis_index),
- label="Attribute",
- num_components=1,
- menu_items=('mag', 'mag2', 'mag3', 'dir', 'dir2', 'dir3'),
- menu_labels=("mag", "mag2", "mag3", "dir", "dir2", "dir3"),
- menu_type=hou.menuType.StringReplace,
- script_callback='hou.phm().attr_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
-
- type_template = hou.MenuParmTemplate(
- name='type_' + str(vis_index),
- label="Type",
- menu_items=('color', 'marker'),
- menu_labels=("Color", "Marker"),
- script_callback='hou.phm().type_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
-
- coloring_template = hou.MenuParmTemplate(
- name='coloring_' + str(vis_index),
- label="Coloring",
- menu_items=('fixed', 'vec_val', 'vec_dir', 'attr'),
- menu_labels=("Fixed Color", "Vector Values", "Vector Directions", "Attribute"),
- script_callback='hou.phm().coloring_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- coloring_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker }')
-
- coloring_attr_template = hou.StringParmTemplate(
- name='coloring_attr_' + str(vis_index),
- label="Coloring Attribute",
- num_components=1,
- menu_items=('mag', 'mag2', 'mag3', 'dir', 'dir2', 'dir3'),
- menu_labels=("mag", "mag2", "mag3", "dir", "dir2", "dir3"),
- menu_type=hou.menuType.StringReplace,
- script_callback='hou.phm().coloring_attr_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- coloring_attr_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker } { coloring_' + str(vis_index) + ' != attr }')
-
- sep1_template = hou.SeparatorParmTemplate(
- name='sep1_' + str(vis_index))
-
- preset_template = hou.MenuParmTemplate(
- name='preset_' + str(vis_index),
- label="Preset",
- menu_items=(),
- menu_labels=(),
- item_generator_script='hou.phm().generate_preset_menu()',
- script_callback='hou.phm().preset_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python,
- join_with_next=True)
- preset_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- del_preset_template = hou.ButtonParmTemplate(
- name='del_preset_' + str(vis_index),
- label="Delete",
- script_callback='hou.phm().del_preset_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- del_preset_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- interpol_template = hou.MenuParmTemplate(
- name='interpol_' + str(vis_index),
- label="Interpolation",
- menu_items=('Constant', 'Linear', 'CatmullRom', 'MonotoneCubic', 'Bezier', 'BSpline', 'Hermite'),
- menu_labels=("Constant", "Linear", "Catmull-Rom", "Monotone-Cubic", "Bezier", "B-Spline", "Hermite"),
- default_value=3,
- script_callback='hou.phm().interpol_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- interpol_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- ramp_template = hou.RampParmTemplate(
- name='ramp_' + str(vis_index),
- label=" ",
- ramp_parm_type=hou.rampParmType.Color,
- show_controls=False,
- script_callback='hou.phm().ramp_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- ramp_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- color_template = hou.FloatParmTemplate(
- name='color_' + str(vis_index),
- label="Color",
- num_components=3,
- naming_scheme=hou.parmNamingScheme.RGBA,
- look=hou.parmLook.ColorSquare,
- script_callback='hou.phm().color_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- color_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker } { coloring_' + str(vis_index) + ' != fixed }')
-
- length_template = hou.FloatParmTemplate(
- name='length_' + str(vis_index),
- label="Length",
- num_components=1,
- max=1.0,
- script_callback='hou.phm().length_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python)
- length_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker }')
-
- sep2_template = hou.SeparatorParmTemplate(
- name='sep2_' + str(vis_index))
-
- del_vis_template = hou.ButtonParmTemplate(
- name='del_vis_' + str(vis_index),
- label="Delete Visualizer",
- script_callback='hou.phm().del_vis_callback(kwargs)',
- script_callback_language=hou.scriptLanguage.Python,
- join_with_next=True)
-
- folder_template = hou.FolderParmTemplate(
- name='folder_' + str(vis_index),
- label="Vis " + str(vis_index),
- parm_templates=([
- enable_template,
- update_folder_name_template,
- attr_template,
- type_template,
- coloring_template,
- coloring_attr_template,
- sep1_template,
- preset_template,
- del_preset_template,
- interpol_template,
- ramp_template,
- color_template,
- length_template,
- sep2_template,
- del_vis_template]),
- folder_type=hou.folderType.Tabs)
-
- group.append(folder_template)
- node.setParmTemplateGroup(group)
-
- vis = hou.viewportVisualizers.createVisualizer(
- hou.viewportVisualizers.type('vis_color'),
- hou.viewportVisualizerCategory.Node,
- hou.node('./vis'))
- update(kwargs)
-
-def enable_callback(kwargs):
- vis_index = kwargs['parm_name'].removeprefix('enable_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsInt()
- if val == 1:
- vis.setIsActive(True)
- if val == 0:
- vis.setIsActive(False)
-
-def attr_callback(kwargs):
- vis_index = kwargs['parm_name'].removeprefix('attr_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsString()
- vis.setParm('attrib', val)
-
-def type_callback(kwargs):
- vis_index = kwargs['parm_name'].removeprefix('type_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsInt()
- if val == 0:
- vis.setType(hou.viewportVisualizers.types()[1])
- vis.setParm('colortype', 1)
- vis.setParm('rangespec', 1)
- vis.setParm('clamptype', 1)
- if val == 1:
- vis.setType(hou.viewportVisualizers.types()[0])
- vis.setParm('style', 4)
- kwargs['node'].parm('coloring_' + str(vis_index)).pressButton()
-
-def coloring_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('coloring_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsInt()
- vis.setParm('vectorcoloring', val)
- if val == 0:
- kwargs['node'].parm('color_' + str(vis_index) + 'r').pressButton()
- if val != 0:
- vis.setParm('ramptype', 6)
- vis.setParm('rangespec', 0)
- if val == 3:
- kwargs['node'].parm('coloring_attr_' + str(vis_index)).pressButton()
-
-def preset_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('preset_')
- val = kwargs['parm'].evalAsString()
- ramp_parm = kwargs['node'].parm('ramp_' + str(vis_index))
-
- if val == 'new':
- new_preset(parm, ramp_parm)
- kwargs['parm'].set(0)
- if val == '_separator_':
- return
- if val != 'new' and val != '_separator_':
- vis = get_vis(vis_index)
- ramp_val = getattr(ramp_color_schemes, val)
- ramp_parm.set(ramp_val)
- vis.setParm('colorramp', ramp_val)
-
-def del_preset_callback(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- vis_index = kwargs['parm_name'].removeprefix('del_preset_')
- preset_parm = kwargs['node'].parm('preset_' + str(vis_index))
- preset_val = preset_parm.evalAsString()
-
- menu = ramp_color_presets.menu
- menu.remove(preset_val)
- menu.remove(preset_val)
-
- presets_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_color_presets.py', 'w')
- presets_file.write('menu=' + str(menu))
- presets_file.close()
- preset_parm.set(0)
-
- scheme = getattr(ramp_color_schemes, preset_val)
- scheme = new_scheme(preset_val, scheme)
-
- path = 'C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_color_schemes.py'
-
- schemes_file = open(path, 'r').read()
- ramp_color_schemes = schemes_file.replace(scheme, '')
- schemes_file.close()
-
- schemes_file = open(path, 'w')
- schemes_file.write(ramp_color_schemes)
- schemes_file.close()
-
- importlib.reload(ramp_color_presets)
- importlib.reload(ramp_color_schemes)
-
-def interpol_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('interpol_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsString()
-
- ramp_parm = kwargs['node'].parm('ramp_' + str(vis_index))
- ramp_val = ramp_parm.evalAsRamp()
-
- basis = ramp_val.basis()
- keys = ramp_val.keys()
- values = ramp_val.values()
-
- new_basis = []
- for x in basis:
- new_basis.append(eval('hou.rampBasis.' + val))
-
- new_ramp = hou.Ramp(new_basis, keys, values)
- ramp_parm.set(new_ramp)
-
- vis.setParm('colorramp', new_ramp)
-
-def ramp_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('ramp_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsRamp()
-
- vis.setParm('colorramp', val)
-
-def color_callback(kwargs):
- vis_index = kwargs['parm_name'].removeprefix('color_')
- vis_index = str(vis_index).removesuffix('r')
- vis = get_vis(vis_index)
-
- if kwargs['node'].parm('color_' + vis_index + 'r').isHidden() == False:
- colorr = kwargs['node'].parm('color_' + vis_index + 'r').eval()
- colorg = kwargs['node'].parm('color_' + vis_index + 'g').eval()
- colorb = kwargs['node'].parm('color_' + vis_index + 'b').eval()
-
- vis.setParm('markercolorr', colorr)
- vis.setParm('markercolorg', colorg)
- vis.setParm('markercolorb', colorb)
-
-def coloring_attr_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('coloring_attr_')
- vis = get_vis(vis_index)
- val = kwargs['node'].parm('coloring_attr_' + str(vis_index)).evalAsString()
-
- vis.setParm('colorattrib', val)
-
-def length_callback(kwargs):
- if kwargs['parm'].isHidden() == False:
- vis_index = kwargs['parm_name'].removeprefix('length_')
- vis = get_vis(vis_index)
- val = kwargs['parm'].evalAsFloat()
- vis.setParm('lengthscale', val)
-
-def del_vis_callback(kwargs):
- vis_index = kwargs['parm_name'].removeprefix('del_vis_')
- vis = get_vis(vis_index)
- vis.destroy()
-
- group = kwargs['node'].parmTemplateGroup()
- entries = list(group.entries())
- entry_index = -1
- folder_name = 'folder_0'
- if vis_index != '0':
- folder_name = 'folder_0_' + str(vis_index)
- for entry in entries:
- entry_index += 1
- if entry.name() == folder_name:
- entries.pop(entry_index)
-
- vis_index = -1
- for entry in entries:
- if entry.type() == hou.parmTemplateType.Folder:
- vis_index += 1
- if vis_index == 0:
- entry.setName('folder_0')
- else:
- entry.setName('folder_0_' + str(vis_index))
- parm_templates = entry.parmTemplates()
- index = -1
- for parm_template in parm_templates:
- index += 1
- if parm_template.label() == 'Enable':
- new_name = 'enable_' + str(vis_index)
- parm_template.setName(new_name)
-
- if parm_template.label() == 'Update Folder Name':
- parm_template.setName('update_folder_name_' + str(vis_index))
-
- if parm_template.label() == 'Attribute':
- parm_template.setName('attr_' + str(vis_index))
-
- if parm_template.label() == 'Type':
- parm_template.setName('type_' + str(vis_index))
-
- if parm_template.label() == 'Coloring':
- parm_template.setName('coloring_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker }')
-
- if parm_template.label() == 'Coloring Attribute':
- parm_template.setName('coloring_attr_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker } { coloring_' + str(vis_index) + ' != attr }')
-
- if parm_template.name().find('sep1') >= 0:
- parm_template.setName('sep1_' + str(vis_index))
-
- if parm_template.label() == 'Preset':
- parm_template.setName('preset_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str('vis_index') + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- if parm_template.label() == 'Delete':
- parm_template.setName('del_preset_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str('vis_index') + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- if parm_template.label() == 'Interpolation':
- parm_template.setName('interpol_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- if parm_template.type() == hou.parmTemplateType.Ramp:
- parm_template.setName('ramp_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' == marker coloring_' + str(vis_index) + ' == fixed }')
-
- if parm_template.label() == 'Color':
- parm_template.setName('color_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker } { coloring_' + str(vis_index) + ' != fixed }')
-
- if parm_template.label() == 'Length':
- parm_template.setName('length_' + str(vis_index))
- parm_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + str(vis_index) + ' != marker }')
-
- if parm_template.name().find('sep2') >= 0:
- parm_template.setName('sep2_' + str(vis_index))
-
- if parm_template.label() == 'Delete Visualizer':
- parm_template.setName('del_vis_' + str(vis_index))
-
- entry.setParmTemplates(parm_templates)
-
- # print(entries)
-
- kwargs['node'].setParmTemplateGroup(hou.ParmTemplateGroup(entries))
-
- update(kwargs)
-
-def update(kwargs):
- visualizers = hou.viewportVisualizers.visualizers(hou.viewportVisualizerCategory.Node, hou.node('./vis'))
- vis_index = 0
- for visualizer in visualizers:
- vis_index = str(vis_index)
- kwargs['node'].parm('enable_' + vis_index).pressButton()
- kwargs['node'].parm('type_' + vis_index).pressButton()
- kwargs['node'].parm('attr_' + vis_index).pressButton()
- kwargs['node'].parm('preset_' + vis_index).pressButton()
- kwargs['node'].parm('coloring_' + vis_index).pressButton()
- kwargs['node'].parm('coloring_attr_' + vis_index).pressButton()
- kwargs['node'].parm('ramp_' + vis_index).pressButton()
- kwargs['node'].parm('color_' + vis_index + 'r').pressButton()
- kwargs['node'].parm('length_' + vis_index).pressButton()
- vis_index = int(vis_index)
- vis_index += 1
-
-def update_folder_name_callback(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- vis_index = kwargs['parm_name'].removeprefix('update_folder_name_')
- attr_parm = node.parm('attr_' + str(vis_index))
- attr_val = attr_parm.evalAsString()
-
- group = node.parmTemplateGroup()
-
- entries = group.entries()
-
- folder_template = entries[int(vis_index) + 2]
- new_folder_template = folder_template.clone()
-
- if attr_val == "":
- new_folder_template.setLabel("Vis " + vis_index)
-
- else:
- new_folder_template.setLabel(attr_val)
-
- group.replace(folder_template, new_folder_template)
-
- node.setParmTemplateGroup(group)
-
-def get_vis(vis_index):
- vistup = hou.viewportVisualizers.visualizers(
- hou.viewportVisualizerCategory.Node,
- hou.node('./vis'))
- vis = vistup[int(vis_index)]
- return(vis)
-
-def generate_preset_menu():
- importlib.reload(ramp_color_presets)
- menu = ramp_color_presets.menu
- return(menu)
-
-def new_preset(preset_parm, ramp_parm):
- new_name = hou.ui.readInput("New Preset", buttons = ("Add", "Cancel"))
- if new_name[0] == 0:
- menu = ramp_color_presets.menu
- menu.insert(0, new_name[1])
- menu.insert(0, new_name[1])
-
- ramp_val = ramp_parm.evalAsRamp()
- new_scheme = new_scheme(new_name[1], ramp_val)
-
- menu_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_color_presets.py', 'w')
- menu_file.write('menu=' + str(menu))
- menu_file.close()
-
- scheme_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_color_schemes.py', 'a')
- scheme_file.write(new_scheme)
- scheme_file.close()
-
- importlib.reload(ramp_color_presets)
- importlib.reload(ramp_color_schemes)
- preset_parm.set(0)
-
-def new_scheme(preset_val, ramp_val):
- basis = ramp_val.basis()
- basis = tuple('hou.' + str(x) for x in basis)
- basis = str(basis).replace("'", "")
-
- keys = ramp_val.keys()
- keys = tuple(round(x, 4) for x in keys)
-
- values = ramp_val.values()
- values = tuple(tuple(round(x2, 4) for x2 in x) for x in values)
-
- scheme = '\n' + preset_val + '=' + 'hou.Ramp(' + str(basis) + ',' + str(keys) + ',' + str(values) + ')\n'
-
- return(scheme)
\ No newline at end of file
diff --git a/scripts/morpho_ramp_module.py b/scripts/morpho_ramp_module.py
deleted file mode 100755
index 627524c..0000000
--- a/scripts/morpho_ramp_module.py
+++ /dev/null
@@ -1,113 +0,0 @@
-import hou
-import importlib
-import ramp_float_presets
-import ramp_color_presets
-import ramp_float_schemes
-import ramp_color_schemes
-
-def preset_float_callback(kwargs):
- importlib.reload(ramp_float_schemes)
- node = kwargs['node']
- preset_parm = kwargs['parm']
- preset_val = preset_parm.evalAsString()
- ramp_parm = node.parm('ramp_float')
-
- importlib.reload(ramp_float_presets)
- if preset_val == 'new':
- new_name = hou.ui.readInput("New Preset", buttons=("Add", "Cancel"))
-
- if new_name[0] == 0:
- presets = ramp_float_presets.presets
- presets.insert(0, new_name[1])
- presets.insert(0, new_name[1])
- presets_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_float_presets.py', 'w')
- presets_file.write('presets=' + str(presets))
- presets_file.close()
-
- ramp_basis = ramp_parm.eval().basis()
- ramp_keys = ramp_parm.eval().keys()
- ramp_values = ramp_parm.eval().values()
- new_scheme = (ramp_basis, ramp_keys, ramp_values)
- schemes_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_float_schemes.py', 'a')
- schemes_file.write('\n' + new_name[1] + '=Ramp' + str(new_scheme))
- schemes_file.close()
-
- importlib.reload(ramp_float_presets)
- importlib.reload(ramp_float_schemes)
- preset_parm.set(0)
-
- else:
- new_ramp_val = getattr(ramp_float_schemes, preset_val)
- ramp_parm.set(new_ramp_val)
-
-def del_preset_float_callback(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- preset_parm = node.parm('preset_float')
- preset_val = preset_parm.evalAsString()
- presets = ramp_float_presets.presets
- presets.remove(preset_val)
- presets.remove(preset_val)
- presets_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_float_presets.py', 'w')
- presets_file.write('presets=' + str(presets))
- presets_file.close()
- preset_parm.set(0)
-
- scheme = getattr(ramp_float_schemes, preset_val)
- basis = scheme.basis()
- keys = scheme.keys()
- values = scheme.values()
- scheme = preset_val + '=Ramp' + str((basis, keys, values))
- # print(scheme)
-
- schemes_file_path = 'C:/Users/lucas/OneDrive/Git/morphogen/scripts/ramp_float_schemes.py'
-
- schemes_file = open(schemes_file_path, 'r')
- schemes_str = schemes_file.read()
- schemes_file.close()
- schemes = schemes_str.replace(scheme, '')
-
- schemes_file = open(schemes_file_path, 'w')
- schemes_file.write(schemes)
- schemes_file.close()
-
- importlib.reload(ramp_float_presets)
- importlib.reload(ramp_float_schemes)
-
-def interpolation_float_callback(kwargs):
- node = kwargs['node']
- interpolation_parm = kwargs['parm']
- interpolation_val = interpolation_parm.evalAsString()
- ramp_parm = node.parm('ramp_float')
- ramp_basis = ramp_parm.eval().basis()
- new_basis = []
- for basis in ramp_basis:
- new_basis.append(eval('hou.rampBasis.' + interpolation_val))
- ramp_keys = ramp_parm.eval().keys()
- ramp_values = ramp_parm.eval().values()
- new_ramp_val = hou.Ramp(new_basis, ramp_keys, ramp_values)
- ramp_parm.set(hou.Ramp(new_basis, ramp_keys, ramp_values))
-
-def attr_menu_callback(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- val_str = parm.evalAsString()
- val_int = parm.evalAsInt()
- attr_parm = node.parm('attr')
- attr_parm.set(val_str)
-
- index = node.parm('index').evalAsInt()
- data_parm = node.parm('data')
- if val_int < index:
- data_parm.set(0)
- else:
- data_parm.set(1)
-
-def attr_callback(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- parm_int = parm.evalAsInt()
- print(parm_int)
- index = node.parm('index').evalAsInt()
\ No newline at end of file
diff --git a/scripts/source_created.py b/scripts/source_created.py
deleted file mode 100755
index 086499d..0000000
--- a/scripts/source_created.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import hou
-
-network = hou.node(".")
-node = kwargs['node']
-
-solver = network.createNode("morphosolver")
-
-solver.setInput(0, node, 0)
\ No newline at end of file
diff --git a/scripts/source_module.py b/scripts/source_module.py
deleted file mode 100755
index cfff4dc..0000000
--- a/scripts/source_module.py
+++ /dev/null
@@ -1,564 +0,0 @@
-import hou
-import importlib
-import stain_menu
-import stain_schemes
-
-def addvis(kwargs):
- node = kwargs['node']
- group = node.parmTemplateGroup()
- top_folder = group.findFolder("Visualizers")
-
- vis_id = 0
- bottom_folders = top_folder.parmTemplates()
- for bottom_folder in bottom_folders:
- vis_id += 1
-
- vis_id = str(vis_id)
-
- enable_template = hou.ToggleParmTemplate(
- 'enable_' + vis_id,
- label = "Enable Visualizer",
- default_value = True,
- script_callback = 'hou.phm().enable(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- attr_template = hou.StringParmTemplate(
- name = 'attr_' + vis_id,
- label = "Attribute",
- num_components = 1,
- menu_items = ('mag', 'mag2', 'mag3', 'dir', 'dir2', 'dir3'),
- menu_labels = ("mag", "mag2", "mag3", "dir", "dir2", "dir3"),
- menu_type = hou.menuType.StringReplace,
- script_callback = 'hou.phm().attr(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- type_template = hou.MenuParmTemplate(
- name = 'type_' + vis_id,
- label = "Type",
- menu_items = ('color', 'marker'),
- menu_labels = ("Color", "Marker"),
- script_callback = 'hou.phm().type(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- coloring_template = hou.MenuParmTemplate(
- name = 'coloring_' + vis_id,
- label = "Coloring",
- menu_items = ('fixed', 'val', 'dir', 'other'),
- menu_labels = ("Fixed Color", "Vector Values", "Vector Directions", "Other Attribute"),
- script_callback = 'hou.phm().coloring(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- coloring_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker }')
-
- otherattr_template = hou.StringParmTemplate(
- name = 'otherattr_' + vis_id,
- label = "Other Attribute",
- num_components = 1,
- menu_items = ('mag', 'mag2', 'mag3', 'dir', 'dir2', 'dir3'),
- menu_labels = ("mag", "mag2", "mag3", "dir", "dir2", "dir3"),
- menu_type = hou.menuType.StringReplace,
- script_callback = 'hou.phm().otherattr(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- otherattr_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker } { coloring_' + vis_id + ' != other }')
-
- sep1_template = hou.SeparatorParmTemplate(
- name = 'sep1_' + vis_id)
-
- preset_template = hou.MenuParmTemplate(
- name = 'preset_' + vis_id,
- label = "Preset",
- menu_items = (),
- menu_labels = (),
- item_generator_script = 'hou.phm().presetmenu()',
- script_callback = 'hou.phm().preset(kwargs)',
- script_callback_language = hou.scriptLanguage.Python,
- join_with_next = True)
-
- preset_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- delpreset_template = hou.ButtonParmTemplate(
- name = 'delpreset_' + vis_id,
- label = "Delete Preset",
- script_callback = 'hou.phm().delpreset(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- delpreset_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- interpol_template = hou.MenuParmTemplate(
- name = 'interpol_' + vis_id,
- label = "Interpolation",
- menu_items = ('Constant', 'Linear', 'CatmullRom', 'MonotoneCubic', 'Bezier', 'BSpline', 'Hermite'),
- menu_labels = ("Constant", "Linear", "Catmull-Rom", "Monotone-Cubic", "Bezier", "B-Spline", "Hermite"),
- default_value = 3,
- script_callback = 'hou.phm().interpol(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- interpol_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- ramp_template = hou.RampParmTemplate(
- name = 'ramp_' + vis_id,
- label = "Color Ramp",
- ramp_parm_type = hou.rampParmType.Color,
- show_controls = False,
- script_callback = 'hou.phm().ramp(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- ramp_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- color_template = hou.FloatParmTemplate(
- name = 'color_' + vis_id,
- label = "Color",
- num_components = 3,
- naming_scheme = hou.parmNamingScheme.RGBA,
- look = hou.parmLook.ColorSquare,
- script_callback = 'hou.phm().color(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- color_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker } { coloring_' + vis_id + ' != fixed }')
-
- length_template = hou.FloatParmTemplate(
- name = 'length_' + vis_id,
- label = "Length Scale",
- num_components = 1,
- max = 1.0,
- script_callback = 'hou.phm().length(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- length_template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker }')
-
- sep2_template = hou.SeparatorParmTemplate(
- name = 'sep2_' + vis_id)
-
- delvis_template = hou.ButtonParmTemplate(
- name = 'delvis_' + vis_id,
- label = "Delete Visualizer",
- script_callback = 'hou.phm().delvis(kwargs)',
- script_callback_language = hou.scriptLanguage.Python,
- join_with_next = True)
-
- foldername_template = hou.ButtonParmTemplate(
- name = 'foldername_' + vis_id,
- label = "Update Folder Name",
- script_callback = 'hou.phm().foldername(kwargs)',
- script_callback_language = hou.scriptLanguage.Python)
-
- folder_template = hou.FolderParmTemplate(
- name = 'folder_' + vis_id,
- label = "Vis " + vis_id,
- parm_templates = ([
- enable_template,
- attr_template,
- type_template,
- coloring_template,
- otherattr_template,
- sep1_template,
- preset_template,
- delpreset_template,
- interpol_template,
- ramp_template,
- color_template,
- length_template,
- sep2_template,
- delvis_template,
- foldername_template]),
- folder_type = hou.folderType.Tabs)
-
- group.appendToFolder(top_folder, folder_template)
- node.setParmTemplateGroup(group)
-
- ##
-
- vis = hou.viewportVisualizers.createVisualizer(
- hou.viewportVisualizers.type('vis_color'),
- hou.viewportVisualizerCategory.Node,
- hou.node('./vis'))
-
- update(kwargs)
-
-def enable(kwargs):
- parm = kwargs['parm']
- vis_id = parm.containingFolderIndices()[1]
- vis = getvis(vis_id)
- val = parm.evalAsInt()
- if val == 1:
- vis.setIsActive(True)
- if val == 0:
- vis.setIsActive(False)
-
-def attr(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- vis_id = parm.containingFolderIndices()[1]
- val = parm.evalAsString()
- vis = getvis(vis_id)
- vis.setParm('attrib', val)
-
-def type(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- val = parm.evalAsInt()
- vis_id = parm.containingFolderIndices()[1]
-
- vistypes = hou.viewportVisualizers.types()
- vis = getvis(vis_id)
- if val == 0:
- vis.setType(vistypes[1])
- vis.setParm('colortype', 1)
- vis.setParm('rangespec', 1)
- vis.setParm('clamptype', 1)
- if val == 1:
- vis.setType(vistypes[0])
- vis.setParm('style', 4)
- node.parm('coloring_' + str(vis_id)).pressButton()
-
-def coloring(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- vis_id = parm.containingFolderIndices()[1]
- val = parm.evalAsInt()
- vis = getvis(vis_id)
- vis.setParm('vectorcoloring', val)
- if val == 0:
- node.parm('color_' + str(vis_id) + 'r').pressButton()
- if val != 0:
- vis.setParm('ramptype', 6)
- vis.setParm('rangespec', 0)
- if val == 3:
- node.parm('otherattr_' + str(vis_id)).pressButton()
-
-def preset(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- val = parm.evalAsString()
- vis_id = parm.containingFolderIndices()[1]
- ramp_parm = node.parm('ramp_' + str(vis_id))
-
- if val == 'New...':
- newpreset(parm, ramp_parm)
- parm.set(0)
- if val == '_separator_':
- return
- if val != 'New...' and val != '_separator_':
- vis = getvis(vis_id)
- ramp_val = getattr(stain_schemes, val)
- ramp_parm.set(ramp_val)
- vis.setParm('colorramp', ramp_val)
-
-def delpreset(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- vis_id = parm.containingFolderIndices()[1]
- preset_parm = node.parm('preset_' + str(vis_id))
- preset_val = preset_parm.evalAsString()
-
- menu = stain_menu.menu
- menu.remove(preset_val)
- menu.remove(preset_val)
-
- file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/stain_menu.py', 'w')
- file.write('menu=' + str(menu))
- file.close()
- preset_parm.set(0)
-
- current_scheme = getattr(stain_schemes, preset_val)
- current_scheme = create_scheme(preset_val, current_scheme)
-
- path = 'C:/Users/lucas/OneDrive/Git/morphogen/scripts/stain_schemes.py'
-
- file = open(path, 'r').read()
- stain_schemes = file.replace(current_scheme, '')
- file.close()
-
- file = open(path, 'w')
- file.write(stain_schemes)
- write.close()
-
- importlib.reload(stain_menu)
- importlib.reload(stain_schemes)
-
-def interpol(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- vis_id = parm.containingFolderIndices()[1]
- val = parm.evalAsString()
-
- ramp_parm = node.parm('ramp_' + str(vis_id))
- ramp_val = ramp_parm.evalAsRamp()
-
- basis = ramp_val.basis()
- keys = ramp_val.keys()
- values = ramp_val.values()
-
- new_basis = []
- for x in basis:
- new_basis.append(eval('hou.rampBasis.' + val))
-
- new_ramp = hou.Ramp(new_basis, keys, values)
- ramp_parm.set(new_ramp)
-
- vis = getvis(vis_id)
- vis.setParm('colorramp', new_ramp)
-
-def ramp(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- val = parm.evalAsRamp()
- vis_id = parm.containingFolderIndices()[1]
-
- vis = getvis(vis_id)
- vis.setParm('colorramp', val)
-
-def color(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- vis_id = parm.containingFolderIndices()[1]
- vis = getvis(vis_id)
- vis_id = str(vis_id)
-
- colorr = node.parm('color_' + vis_id + 'r').eval()
- colorg = node.parm('color_' + vis_id + 'g').eval()
- colorb = node.parm('color_' + vis_id + 'b').eval()
-
- vis.setParm('markercolorr', colorr)
- vis.setParm('markercolorg', colorg)
- vis.setParm('markercolorb', colorb)
-
-def otherattr(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- vis_id = parm.containingFolderIndices()[1]
- vis = getvis(vis_id)
- val = node.parm('otherattr_' + str(vis_id)).evalAsString()
- vis.setParm('colorattrib', val)
-
-def length(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
-
- if parm.isHidden() == False:
- vis_id = parm.containingFolderIndices()[1]
- val = parm.evalAsFloat()
- vis = getvis(vis_id)
- vis.setParm('lengthscale', val)
-
-def delvis(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- vis_id = parm.containingFolderIndices()[1]
- vis = getvis(vis_id)
- vis.destroy()
-
- group = node.parmTemplateGroup()
- top_folder = group.findFolder("Visualizers")
- bottom_folders = list(top_folder.parmTemplates())
- bottom_folders.pop(vis_id)
- top_folder.setParmTemplates(bottom_folders)
- group.replace((4,), top_folder)
- node.setParmTemplateGroup(group)
-
- vis_id = 0
- for bottom_folder in bottom_folders:
- rename(kwargs, vis_id, 'enable')
- rename(kwargs, vis_id, 'attr')
- rename(kwargs, vis_id, 'type')
- rename(kwargs, vis_id, 'coloring')
- rename(kwargs, vis_id, 'otherattr')
- rename(kwargs, vis_id, 'sep1')
- rename(kwargs, vis_id, 'preset')
- rename(kwargs, vis_id, 'delpreset')
- rename(kwargs, vis_id, 'interpol')
- rename(kwargs, vis_id, 'ramp')
- rename(kwargs, vis_id, 'color')
- rename(kwargs, vis_id, 'length')
- rename(kwargs, vis_id, 'sep2')
- rename(kwargs, vis_id, 'delvis')
- rename(kwargs, vis_id, 'foldername')
- vis_id += 1
-
- update(kwargs)
-
-def rename(kwargs, vis_id, parmname):
- node = kwargs['node']
- vis_id = int(vis_id)
-
- group = node.parmTemplateGroup()
- top_folder = group.findFolder("Visualizers")
- bottom_folders = top_folder.parmTemplates()
- bottom_folder = bottom_folders[vis_id]
- bottom_contents = bottom_folder.parmTemplates()
-
- for template in bottom_contents:
- split = template.name().split('_')[0]
- vis_id = str(vis_id)
-
- if split == parmname:
- template.setName(parmname + '_' + vis_id)
-
- if parmname == 'coloring':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker }')
-
- if parmname == 'otherattr':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker } { coloring_' + vis_id + ' != other }')
-
- if parmname == 'preset':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- if parmname == 'delpreset':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- if parmname == 'interpol':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- if parmname == 'ramp':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' == marker coloring_' + vis_id + ' == fixed }')
-
- if parmname == 'color':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker } { coloring_' + vis_id + ' != fixed }')
-
- if parmname == 'length':
- template.setConditional(
- hou.parmCondType.HideWhen,
- '{ type_' + vis_id + ' != marker }')
-
- bottom_folder.setParmTemplates(bottom_contents)
- bottom_folders = list(bottom_folders)
- bottom_folders[int(vis_id)] = bottom_folder
- top_folder.setParmTemplates(bottom_folders)
- group.replace((4,), top_folder)
- node.setParmTemplateGroup(group)
-
-def update(kwargs):
- node = kwargs['node']
- group = node.parmTemplateGroup()
- top_folder = group.findFolder("Visualizers")
- bottom_folders = list(top_folder.parmTemplates())
-
- vis_id = 0
- for bottom_folder in bottom_folders:
- vis_id = str(vis_id)
- node.parm('enable_' + vis_id).pressButton()
- node.parm('type_' + vis_id).pressButton()
- node.parm('attr_' + vis_id).pressButton()
- node.parm('preset_' + vis_id).pressButton()
- node.parm('coloring_' + vis_id).pressButton()
- node.parm('otherattr_' + vis_id).pressButton()
- node.parm('ramp_' + vis_id).pressButton()
- node.parm('color_' + vis_id + 'r').pressButton()
- node.parm('length_' + vis_id).pressButton()
- vis_id = int(vis_id)
- vis_id += 1
-
-def foldername(kwargs):
- node = kwargs['node']
- parm = kwargs['parm']
- vis_id = parm.containingFolderIndices()[1]
-
- attr_parm = node.parm('attr_' + str(vis_id))
- attr_val = attr_parm.evalAsString()
- group = node.parmTemplateGroup()
- top_folder = group.findFolder("Visualizers")
- bottom_folders = top_folder.parmTemplates()
- bottom_folders = list(bottom_folders)
- bottom_folder = bottom_folders[vis_id]
- if attr_val == '':
- bottom_folder.setLabel('vis' + str(vis_id))
- if attr_val != '':
- bottom_folder.setLabel(attr_val)
- bottom_folders[vis_id] = bottom_folder
- top_folder.setParmTemplates(bottom_folders)
- group.replace((4,), top_folder)
- node.setParmTemplateGroup(group)
-
-def getvis(vis_id):
- vistup = hou.viewportVisualizers.visualizers(
- hou.viewportVisualizerCategory.Node,
- hou.node('./vis'))
- vis = vistup[int(vis_id)]
- return(vis)
-
-def presetmenu():
- importlib.reload(stain_menu)
- menu = stain_menu.menu
- return(menu)
-
-def newpreset(preset_parm, ramp_parm):
- new_name = hou.ui.readInput("New Preset", buttons = ("Add", "Cancel"))
-
- if new_name[0] == 0:
- menu = stain_menu.menu
- menu.insert(0, new_name[1])
- menu.insert(0, new_name[1])
-
- ramp_val = ramp_parm.evalAsRamp()
- new_scheme = create_scheme(new_name[1], ramp_val)
-
- menu_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/stain_menu.py', 'w')
- menu_file.write('menu=' + str(menu))
- menu_file.close()
-
- scheme_file = open('C:/Users/lucas/OneDrive/Git/morphogen/scripts/stain_schemes.py', 'a')
- scheme_file.write(new_scheme)
- scheme_file.close()
-
- importlib.reload(stain_menu)
- importlib.reload(stain_schemes)
- preset_parm.set(0)
-
-def newscheme(preset_val, ramp_val):
- basis = ramp_val.basis()
- basis = tuple('hou.' + str(x) for x in basis)
- basis = str(basis).replace("'", "")
-
- keys = ramp_val.keys()
- keys = tuple(round(x, 4) for x in keys)
-
- values = ramp_val.values()
- values = tuple(tuple(round(x2, 4) for x2 in x) for x in values)
-
- scheme = '\n' + preset_val + '=' + 'hou.Ramp(' + str(basis) + ',' + str(keys) + ',' + str(values) + ')\n'
-
- return(scheme)
\ No newline at end of file
diff --git a/viewer_states/keycam_lop.py b/viewer_states/keycam_lop.py
deleted file mode 100644
index fa44327..0000000
--- a/viewer_states/keycam_lop.py
+++ /dev/null
@@ -1,4 +0,0 @@
-
- if not hou.node("/stage/keycam"):
- stage_cam = hou.node("/stage").createNode("camera")
- stage_cam.setName("keycam")
diff --git a/viewer_states/keycam_settings b/viewer_states/keycam_settings
deleted file mode 100644
index 5bb88b1..0000000
--- a/viewer_states/keycam_settings
+++ /dev/null
@@ -1,20 +0,0 @@
-guides
- axis_size: 1
- axis_cam: 1
- axis_pvt: 1
- bbox: 0
- cam_geo: 1
- perim: 0
- pvt_2d: 0
- pvt_3d: 0
- ray: 1
- tie_axis_to_radius: 0
-startup
- center_on_geo: 1
- lock_cam: 1
- cam_reset: 1
-units
- r: 7.5
- t: 1
- ow: 1
- dist: 1