Giter Site home page Giter Site logo

Disable refresh on publish about core HOT 4 CLOSED

getavalon avatar getavalon commented on September 15, 2024
Disable refresh on publish

from core.

Comments (4)

BigRoy avatar BigRoy commented on September 15, 2024

Here are some context managers that can help:

import contextlib
import logging
import maya.cmds as mc
import maya.mel as mel

log = logging.getLogger(__name__)


def _get_mel_global(name):
    """Return the value of a mel global variable"""
    return mel.eval("$%s = $%s;" % (name, name))


@contextlib.contextmanager
def suspend_refresh():
    """Suspend viewport refreshes"""

    try:
        mc.refresh(suspend=True)
        yield
    finally:
        mc.refresh(suspend=False)


@contextlib.contextmanager
def no_panel_refresh():
    """Disable all controlled panel refreshes."""
    controls = list()
    for panel in mc.lsUI(panels=True, long=True):

        control = mc.panel(panel, query=True, control=True)
        if not control:
            continue

        if not mc.layout(control, query=True, visible=True):
            continue

        controls.append(control)

    try:

        for control in controls:
            mc.layout(control, edit=True, manage=False)
        yield

    finally:
        for control in controls:
            try:
                mc.layout(control, edit=True, manage=True)
            except RuntimeError:
                log.warning("Can't manage control {0}".format(control))


@contextlib.contextmanager
def no_refresh():
    """Temporarily disables Maya's UI updates

    Note:
        This only disabled the main pane and will sometimes still
        trigger updates in torn off panels.

    """

    pane = _get_mel_global('gMainPane')
    state = mc.paneLayout(pane, q=1, manage=1)
    mc.paneLayout(pane, e=1, manage=False)

    try:
        yield
    finally:
        mc.paneLayout(pane, e=1, manage=state)

Example usage:

with no_refresh():
    # do something here
    print "Work!"

I tend to use no_refresh a lot, though I believe separated viewport panels still continue to update. Last time I checked suspend_refresh didn't do as much speedup as the others.

from core.

mottosso avatar mottosso commented on September 15, 2024

Neat, haven't seen nor used the panel suspenders before.

Personally, I would call each context manager an adjective.

with refresh_suspended():
with panels_suspended():
with main_pane_suspended():

from core.

tokejepsen avatar tokejepsen commented on September 15, 2024

This seems to have been implemented?

from core.

mottosso avatar mottosso commented on September 15, 2024

Indeed!

from core.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.