Skip to content

Releases: pyblish/pyblish-qml

1.4.0

28 Aug 08:48
Compare
Choose a tag to compare

Targets Workflow

This PR is to facilitate the targets workflow that was introduced in https://github.com/pyblish/pyblish-base/releases/tag/1.5.0.

The implementation for pyblish-qml is done so you can exclusively target plugins. For a demonstration you can execute:

$ python -m pyblish_qml --demo --targets studio

This will only load two plugins that are targeted directly for studio.
To get all plugins you can target both default and studio:

$ python -m pyblish_qml --demo --targets default studio

You can also specify the targets when showing pyblish-qml from a host:

import pyblish_qml
pyblish_qml.show(targets=["studio"])

1.3.1

25 Aug 09:44
Compare
Choose a tag to compare

Maintenance release.

This fixes #249 (Mangled Comment) and simplifies the look and feel of the comment box.

Thanks @yamahigashi for helping with this!

1.3.0

23 Aug 13:42
Compare
Choose a tag to compare

This release implements the longest-standing issue of this project (literally, issue #1) - parenting the Pyblish QML window to it's host.

Thanks to @DavidPower for this feature!

1.2.0

20 Jul 15:53
Compare
Choose a tag to compare

Warnings are now visualised in the GUI.

from pyblish import api

class ValidateAge(api.ContextPlugin):
  order = api.ValidatorOrder

  def process(self, context):
    if context.data["age"] > 100:
      raise Exception("Too old")

    elif context.data["age"] > 80:
      self.log.warning("Old, but still a few good years to go!")

Functionally, nothing has changed. Warnings doesn't prevent publishing from continuing, it's still just a log message.

untitled project

1.1.0

25 May 09:07
Compare
Choose a tag to compare

Support for comments!

  • Original issue: #9

comment_basics

Format

Comments made via the editor is stored in the comment data member of the context, as a single block of text.

context.data["comment"] = "Summary goes here\nDescription goes here, on a new line"

This is similar to comments on Git commits, the first line being dedicated to a short "summary" of your overall commit, with an (optional) longer description.

You can just add a summary, just add a description, or both. The first line always results in the first line of your comment.

Features

  • Automatically show comment on presence of context.data["comment"]
  • Remember comment across resets
  • Dedicated signal commented for optional data persistence
  • Maximisable, type out your excellent comment in fullscreen
  • Comment template, provide users with a starting point of guidelines for their comment.

comment_fullscreen

comment_persistence
Signal

A signal is emitted when entering a comment, so as to support data persistence, e.g. in Maya or on disk.

from pyblish import api

def persist(comment):
   # write to disk here

api.register_callback("commented", persist)

The comment can then be read via e.g. a Collector into the Context which would then become visible in the GUI.

from pyblish import api

class CollectComment(api.ContextPlugin):
  order = api.CollectorOrder

  def process(self, context):
    context.data["comment"] = # read from disk here

1.0.4

02 Mar 12:34
Compare
Choose a tag to compare

Automatically close window on host closing for Nuke, Hiero and Houdini, in addition to the already supported Maya.

See #120 and #230 for details.

1.0.3

01 Mar 17:12
Compare
Choose a tag to compare

Implemented #227, flashing of window in Windows taskbar on publish of validation completion.

Thanks to @BigRoy!

untitled project

1.0.2

01 Mar 15:36
Compare
Choose a tag to compare

Minor performance improvement.

Not setting PYBLISH_QML_PYQT5 implies an automatic search for PyQt5 on the provided Python's PYTHONPATH. But, the search is moot considering Python would already be searching for it when attempting to run the app. This meant that during startup, Python was instantiated twice; once to find PyQt5, and once to actually use it.

Assuming Python implies reading 50 mb off disk, this reduces the amount read from 100 mb to 50 mb, which in addition to PyQt5 libraries at another 50 mb means a (max) 33% reduction in startup time. In reality it will be less due to filesystem caching.

1.0.1

01 Mar 09:34
Compare
Choose a tag to compare

Added Linux compatibility.

Tested on CentOS 7

1.0.0

28 Feb 15:35
Compare
Choose a tag to compare

splash

New Interprocess Communication Foundation

This is a major release and introduces several improvements over the previous version.

See here for implementation details.


Usage

Register dependencies and show.

1. Register at run-time

from pyblish_qml import api
api.register_python_executable("C:/Python27/python.exe")
api.register_pyqt5("C:/modules/python-qt5")

2. Register via environment

$ set PYBLISH_QML_PYTHON_EXECUTABLE=c:\python36\python.exe
$ set PYBLISH_QML_PYQT5=c:\modules\python-qt5

Show the GUI either at run-time or from a terminal.

1. At run-time

import pyblish_qml
pyblish_qml.show()

2. From terminal

$ python -m pyblish_qml

QML will launch on-demand, with a splash screen if relevant.


Returning from Sleep

Due to the way communication between GUI and host was implemented, returning from sleep carried an opportunity for glitches in messages being sent. The communication used to occur over a dedicated port, one for every host interested in speaking with QML along with a fixed port for the GUI itself.

Now communication instead happens via standard in/out, meaning one less man in the middle to worry about.


Long-running publishes

Because communication happened via sockets, both the host and GUI acted as a web-server that sent and awaited messages from and to each other. Sometimes, due to the nature of messages passing through a middle man, the host and GUI must continually query each other for their existence - a process known as "heartbeat".

  • "Are you still there?"
  • "Yes"
  • "Are you still there?"
  • "Yes"
  • "Are you still there?"
  • ...

On not responding, the GUI will assume the host is no longer there and quit. The trouble with this is that sometimes the host is there, but is simply too busy to respond. Such as when performing a long-running geometry cache.

This is also resolved by direct communication and no middle-man, meaning no more heartbeats and accidental exit.


Multiple Users

All currently logged on users share sockets. Which means QML cannot know whether a host is asking it to appear from one user or another. This inhibited the ability to use QML from more than one user at a time.

With this release, this is no longer an issue.


Concurrent Publishing

Users may now launch multiple GUIs from many hosts and publish in parallel. This was not possible before due to every host sharing a single running instance of pyblis-qml.

As a side-effect of this however, it does mean each GUI now occupies its own memory (~50 mb) and launches individually which isn't as instant as before (1-7 seconds depending on disk access performance).


Connection Refused

No more network connection means no more asking the OS nicely for permission to communicate via sockets, and no more denials.


Splash Screen

Here's a little sneak peak of what the new splash screen looks like as well.

Enjoy!