Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
72ba84f
Refactor tools cross-referencing each other, plus cleanup:
BigRoy Sep 4, 2019
e31d9d9
Refactor absolute import to relative import
BigRoy Sep 4, 2019
d07dcf6
Fix import consistency, order by most global to closest relative
BigRoy Sep 4, 2019
e2b59e7
Refactor `node` to `item` in variables for consistency/clarity
BigRoy Sep 4, 2019
c350d18
Refactor family and group config cache from `loader.lib` to `tools.lib`
BigRoy Sep 4, 2019
93ed86f
Refactor model COLUMNS to columns
BigRoy Sep 4, 2019
5ea6fb7
Fix refactored imports
BigRoy Sep 4, 2019
df4ec95
Fix refactored Qt
BigRoy Sep 4, 2019
90e159e
Fix missing QtGui import
BigRoy Sep 4, 2019
8bf7bc8
Fix some outdated/wrong docstrings
BigRoy Sep 4, 2019
3904439
Use list literal
BigRoy Sep 4, 2019
dc1a3fc
Move utility function to top (ease debugging import error stack trace)
BigRoy Sep 4, 2019
27449a5
Move RecursiveSortFilterProxyModel to tools.models + fix imports
BigRoy Sep 4, 2019
4c6343a
Comment example code again as it requires database/qt app to pass tests
BigRoy Sep 4, 2019
bc3df32
Remove unused model
BigRoy Sep 4, 2019
db6f6e6
Fix missed refactoring of model.COLUMNS to model.columns
BigRoy Sep 4, 2019
a475623
Fix refactor of NodeRole to ItemRole
BigRoy Sep 4, 2019
9bc098e
Remove "import as" for qtawesome imports
BigRoy Sep 4, 2019
ae70d90
Unify quote style from single quotes to double quotes (only in tools)
BigRoy Sep 5, 2019
8f798ca
Refactor model columns to Columns to separate from variables and methods
BigRoy Sep 6, 2019
5de72f3
Cleanup multiple lib imports + reduce importing of specific functions
BigRoy Sep 9, 2019
3fa9636
Bump version to 5.4.0
BigRoy Sep 10, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions avalon/tools/contextmanager/app.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import sys
import logging

import avalon.api as api

from avalon.vendor.Qt import QtWidgets, QtCore
from avalon.tools.projectmanager.widget import AssetWidget
from avalon.tools.projectmanager.app import TasksModel
from ... import api

from ...vendor.Qt import QtWidgets, QtCore
from ..widgets import AssetWidget
from ..models import TasksModel

module = sys.modules[__name__]
module.window = None
Expand Down Expand Up @@ -109,7 +108,7 @@ def _get_selected_task_name(self):

def _get_selected_asset_name(self):
asset_index = self._assets.get_active_index()
asset_data = asset_index.data(self._assets.model.NodeRole)
asset_data = asset_index.data(self._assets.model.ItemRole)
if not asset_data or not isinstance(asset_data, dict):
return

Expand Down
13 changes: 6 additions & 7 deletions avalon/tools/creator/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ def __init__(self, parent=None):
create_btn.setEnabled(False)

def _on_state_changed(self, state):
self.state['valid'] = state
self.data['Create Button'].setEnabled(state)
self.state["valid"] = state
self.data["Create Button"].setEnabled(state)

def _build_menu(self, default_names):
"""Create optional predefined subset names
Expand Down Expand Up @@ -311,7 +311,7 @@ def refresh(self):
def on_create(self):

# Do not allow creation in an invalid state
if not self.state['valid']:
if not self.state["valid"]:
return

asset = self.data["Asset"]
Expand Down Expand Up @@ -415,7 +415,7 @@ def set_item(self, item):
"""Update elements to display information of a family item.

Args:
family (dict): A family item as registered with name, help and icon
item (dict): A family item as registered with name, help and icon

Returns:
None
Expand Down Expand Up @@ -445,11 +445,10 @@ def show(debug=False, parent=None):
"""Display asset creator GUI

Arguments:
creator (func, optional): Callable function, passed `name`,
`family` and `use_selection`, defaults to `creator`
defined in :mod:`pipeline`
debug (bool, optional): Run loader in debug-mode,
defaults to False
parent (QtCore.QObject, optional): When provided parent the interface
to this QObject.

"""

Expand Down
71 changes: 71 additions & 0 deletions avalon/tools/delegates.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
from ..vendor.Qt import QtWidgets, QtCore
from .. import io

from .models import TreeModel


class VersionDelegate(QtWidgets.QStyledItemDelegate):
"""A delegate that display version integer formatted as version string."""

version_changed = QtCore.Signal()
first_run = False
lock = False

def _format_version(self, value):
"""Formats integer to displayable version name"""
return "v{0:03d}".format(value)

def displayText(self, value, locale):
assert isinstance(value, int), "Version is not `int`"
return self._format_version(value)

def createEditor(self, parent, option, index):
item = index.data(TreeModel.ItemRole)
if item.get("isGroup"):
return

editor = QtWidgets.QComboBox(parent)

def commit_data():
if not self.first_run:
self.commitData.emit(editor) # Update model data
self.version_changed.emit() # Display model data
editor.currentIndexChanged.connect(commit_data)

self.first_run = True
self.lock = False

return editor

def setEditorData(self, editor, index):
if self.lock:
# Only set editor data once per delegation
return

editor.clear()

# Current value of the index
value = index.data(QtCore.Qt.DisplayRole)
assert isinstance(value, int), "Version is not `int`"

# Add all available versions to the editor
item = index.data(TreeModel.ItemRole)
parent_id = item["version_document"]["parent"]
versions = io.find({"type": "version", "parent": parent_id},
sort=[("name", 1)])
index = 0
for i, version in enumerate(versions):
label = self._format_version(version["name"])
editor.addItem(label, userData=version)

if version["name"] == value:
index = i

editor.setCurrentIndex(index) # Will trigger index-change signal
self.first_run = False
self.lock = True

def setModelData(self, editor, model, index):
"""Apply the integer version back in the model"""
version = editor.itemData(editor.currentIndex())
model.setData(index, version["name"])
Loading