Skip to content

Commit

Permalink
Merge pull request #304 from davidlatwe/enhance
Browse files Browse the repository at this point in the history
Enhancement, fix #281, #274 and #119
  • Loading branch information
mottosso authored Oct 2, 2018
2 parents 9b5400a + e41387f commit 485aad9
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 15 deletions.
64 changes: 53 additions & 11 deletions pyblish_qml/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,12 @@ class Controller(QtCore.QObject):
detached = QtCore.pyqtSignal()

firstRun = QtCore.pyqtSignal()
publishing = QtCore.pyqtSignal()

collecting = QtCore.pyqtSignal()
validating = QtCore.pyqtSignal()
extracting = QtCore.pyqtSignal()
integrating = QtCore.pyqtSignal()

repairing = QtCore.pyqtSignal()
stopping = QtCore.pyqtSignal()
saving = QtCore.pyqtSignal()
Expand Down Expand Up @@ -181,7 +186,12 @@ def setup_statemachine(self):
operation = util.QState("operation", group)

ready = util.QState("ready", operation)
publishing = util.QState("publishing", operation)

collecting = util.QState("collecting", operation)
validating = util.QState("validating", operation)
extracting = util.QState("extracting", operation)
integrating = util.QState("integrating", operation)

finished = util.QState("finished", operation)
repairing = util.QState("repairing", operation)
initialising = util.QState("initialising", operation)
Expand Down Expand Up @@ -229,16 +239,28 @@ def setup_statemachine(self):
visible.addTransition(self.hide, hidden)

ready.addTransition(self.acting, acting)
ready.addTransition(self.publishing, publishing)
ready.addTransition(self.validating, validating)
ready.addTransition(self.initialising, initialising)
ready.addTransition(self.repairing, repairing)
ready.addTransition(self.saving, saving)
saving.addTransition(self.saved, ready)
publishing.addTransition(self.stopping, stopping)
publishing.addTransition(self.finished, finished)

collecting.addTransition(self.initialised, ready)
collecting.addTransition(self.stopping, stopping)

validating.addTransition(self.stopping, stopping)
validating.addTransition(self.finished, finished)
validating.addTransition(self.extracting, extracting)

extracting.addTransition(self.stopping, stopping)
extracting.addTransition(self.integrating, integrating)

integrating.addTransition(self.stopping, stopping)
integrating.addTransition(self.finished, finished)

finished.addTransition(self.initialising, initialising)
finished.addTransition(self.acting, acting)
initialising.addTransition(self.initialised, ready)
initialising.addTransition(self.collecting, collecting)
stopping.addTransition(self.acted, acted)
stopping.addTransition(self.finished, finished)

Expand All @@ -260,7 +282,10 @@ def setup_statemachine(self):
for state in (hidden,
visible,
ready,
publishing,
collecting,
validating,
extracting,
integrating,
finished,
repairing,
initialising,
Expand Down Expand Up @@ -320,10 +345,20 @@ def iterator(self, plugins, context):
"ordersWithError": set()
}

signals = {
pyblish.api.ValidatorOrder: self.validating,
pyblish.api.ExtractorOrder: self.extracting,
pyblish.api.IntegratorOrder: self.integrating,
}

for plug, instance in iterator(plugins, context):

state["nextOrder"] = plug.order

for order in list(signals.keys()):
if pyblish.lib.inrange(plug.order, order):
signals.pop(order).emit()

if not self.data["state"]["is_running"]:
raise StopIteration("Stopped")

Expand Down Expand Up @@ -481,13 +516,20 @@ def toggleInstance(self, index):
def toggleSection(self, checkState, sectionLabel):
model = self.data["models"]["item"]

states = set([item.isToggled for item in model.items
if (item.itemType == "instance" and
sectionLabel == item.family)])

if len(states) == 1:
checkState = not states.pop()

for item in model.items:
if item.itemType == 'instance' and sectionLabel == item.family:
if item.itemType == "instance" and sectionLabel == item.family:
if item.isToggled != checkState:
self.__toggle_item(model,
model.items.index(item))

if item.itemType == 'plugin' and item.optional:
if item.itemType == "plugin" and item.optional:
if item.verb == sectionLabel:
if item.isToggled != checkState:
self.__toggle_item(
Expand Down Expand Up @@ -813,6 +855,8 @@ def on_discover(plugins, context):

collectors.append(plugin)

self.collecting.emit()

self.run(collectors, context,
callback=on_run,
callback_args=[plugins])
Expand Down Expand Up @@ -949,7 +993,6 @@ def run(self, plugins, context, callback=None, callback_args=[]):

# Initial set-up
self.data["state"]["is_running"] = True
self.publishing.emit()

# Setup statistics for better debugging.
# (To be finalised in `on_finished`)
Expand Down Expand Up @@ -1016,7 +1059,6 @@ def repairPlugin(self, index):
self.error.emit("Not ready")
return

self.publishing.emit()
self.data["state"]["is_running"] = True

# Setup statistics
Expand Down
1 change: 1 addition & 0 deletions pyblish_qml/qml/Footer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ View {
// 0 = Default; 1 = Publishing; 2 = Finished
property int mode: 0
property bool paused: false
property bool startup: true

signal publish
signal validate
Expand Down
34 changes: 30 additions & 4 deletions pyblish_qml/qml/Overview.qml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Item {

property string __lastPlugin

property bool validated: false

signal instanceEntered(int index)
signal pluginEntered(int index)

Expand Down Expand Up @@ -206,7 +208,13 @@ Item {

visible: overview.state != "initialising"

mode: overview.state == "publishing" ? 1 : overview.state == "finished" ? 2 : 0
mode: {
if (startup == true) {
setMessage("Collecting..")
return 1
}
return overview.state == "publishing" ? 1 : overview.state == "finished" ? 2 : 0
}

width: parent.width
anchors.bottom: parent.bottom
Expand All @@ -228,6 +236,7 @@ Item {
onFirstRun: {
app.commentEnabled ? commentBox.up() : null
commentBox.text = app.comment()
footer.startup = false
}

onStateChanged: {
Expand All @@ -241,14 +250,31 @@ Item {
setMessage("Initialising..")
}

if (state == "publishing") {
if (state == "collecting") {
overview.state = "publishing"
setMessage("Collecting..")
}

if (state == "validating") {
overview.state = "publishing"
setMessage("Validating..")
overview.validated = false
}

if (state == "extracting") {
overview.state = "publishing"
setMessage("Extracting..")
overview.validated = true
}

if (state == "integrating") {
overview.state = "publishing"
setMessage("Publishing..")
setMessage("Integrating..")
}

if (state == "finished") {
overview.state = "finished"
setMessage("Finished..")
overview.validated ? setMessage("Published") : setMessage("Validated")
}

if (state == "stopping") {
Expand Down

0 comments on commit 485aad9

Please sign in to comment.