Package: qtazu
Python Qt widgets forCG-Wireusing`gazu<https://github.com/cgwire/gazu>`__.DependenciesThis requiresGazuandQt.py.What is Qtazu?Qtazuimplements Qt widgets to connect and work with a CG-Wire
instance through an interface running in Python.Reusable components to develop your own interfaces to interact with
CG-Wire.Embeddable in DCCs supporting Python and QtOruse them in your own standalone Python application, like a
studio pipeline.Agnostic widgets so you can easily instantiate them as you needSupport PyQt5, PySide2, PyQt4 and PySide through`Qt.py<https://github.com/mottosso/Qt.py>`__WIP:This is a WIP repositoryExamplesThe Widgets initialize in such a way you can easily embed them for your
needs.The examples assume a running Qt application instance exists.Logging inqtazu_loginfromqtazu.widgets.loginimportLoginwidget=Login()widget.show()If you want to set your CG-Wire instance URL so the User doesn’t have to
you can set it through environment variable:CGWIRE_HOSTfromqtazu.widgets.loginimportLoginimportosos.environ["CGWIRE_HOST"]="https://zou-server-url/api"widget=Login()widget.show()Directly trigger a callback once someone has logged in using Qt signals:fromqtazu.widgets.loginimportLogindefcallback(success):print("Did login succeed? Answer:%s"%success)widget=Login()widget.logged_in.connect(callback)widget.show()You can also automate alogin through
``gazu`<https://github.com/cgwire/gazu#quickstart>`__ andqtazuwill use it.Or if you have logged in through another Python process you can pass on
the tokens:importosimportjson# Store CGWIRE_TOKENS for application (simplified for example)os.environ["CGWIRE_TOKENS"]=json.dumps(gazu.client.tokens)os.environ["CGWIRE_HOST"]=host# In application "log-in" using the tokenshost=os.environ["CGWIRE_HOST"]tokens=json.loads(os.environ["CGWIRE_TOKENS"])gazu.client.set_host(host)gazu.client.set_tokens(tokens)Submitting CommentsYou can easily submit comments for a specific Task, this includes drag
‘n’ dropping your own images of videos as attachment or using a Screen
Marguee tool to attach a screenshot to your comment.Make sure you are logged in prior to this.fromqtazu.widgets.commentimportCommentWidgettask_id="xyz"# Make sure to set a valid Task Idwidget=CommentWidget(task_id=task_id)widget.show()qtazu_comment_screenshotDisplay all Persons with ThumbnailsIt’s easy and quick to embed the available Persons into your own list
view.qtazu_persons_modelfromqtazu.models.personsimportPersonModelfromQtimportQtWidgets,QtCoremodel=PersonModel()view=QtWidgets.QListView()view.setIconSize(QtCore.QSize(30,30))view.setStyleSheet("QListView::item { margin: 3px; padding: 3px;}")view.setModel(model)view.setMinimumHeight(60)view.setWindowTitle("CG-Wire Persons")view.show()Here’s an example prototype of listing Persons as you tag them:qtazu_tag_prototype_02Define your own Qt widget that loads Thumbnails in the backgroundThis will show all CG-Wire projects as thumbnails.qtazu_projectsimportgazufromQtimportQtWidgetsfromqtazu.widgets.thumbnailimportThumbnailBasemain=QtWidgets.QWidget()main.setWindowTitle("CG-Wire Projects")layout=QtWidgets.QHBoxLayout(main)forprojectingazu.project.all_open_projects():thumbnail=ThumbnailBase()thumbnail.setFixedWidth(75)thumbnail.setFixedHeight(75)thumbnail.setToolTip(project["name"])project_id=project["id"]thumbnail.load("pictures/thumbnails/projects/{0}.png".format(project_id))layout.addWidget(thumbnail)main.show()Welcome a User with a messageShow a Welcome popup to the user with his or her thumbnail.qtazu_welcome_popupfromQtimportQtWidgets,QtGui,QtCorefromqtazu.widgets.thumbnailimportThumbnailBaseimportgazuclassUserPopup(QtWidgets.QWidget):"""Pop-up showing 'welcome user' and user thumbnail"""def__init__(self,parent=None,user=None):super(UserPopup,self).__init__(parent=parent)layout=QtWidgets.QHBoxLayout(self)thumbnail=ThumbnailBase()thumbnail.setFixedWidth(75)thumbnail.setFixedHeight(75)thumbnail.setToolTip(user["first_name"])welcome=QtWidgets.QLabel("Welcome!")layout.addWidget(thumbnail)layout.addWidget(welcome)self.thumbnail=thumbnailself.welcome=welcomeself._user=Noneifuser:self.set_user(user)defset_user(self,user):self._user=user# Load user thumbnailself.thumbnail.load("pictures/thumbnails/persons/{0}.png".format(user["id"]))# Set welcome messageself.welcome.setText("Welcome{first_name}{last_name}!".format(**user))# Show pop-up about current useruser=gazu.client.get_current_user()popup=UserPopup(user=user)popup.show()