Code Monkey home page Code Monkey logo

jundo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jundo's Issues

Idea for a more convenient API

  • A set of functions to be exported by the jundo library:
    • makeUndoProxy(obj, changeMonitor) -> UndoProxy
    • recordChanges(proxy, **kwargs) context manager
    • undoChanges(proxy)
    • redoChanges(proxy)
    • undoInfo(proxy)
    • redoInfo(proxy)

The idea is that the UndoManager becomes invisible, and that everything is managed via the proxy object โ€“ you'd only ever need to keep a reference to the proxy object.

Usage example:

>>> from jundo import makeUndoProxy, recordChanges, undoChanges, redoChanges
>>> model = [1, 2, 3, {"a": 123}]
>>> proxy = makeUndoProxy(model)
>>> with recordChanges(proxy, title="replace list item"):
...     proxy[1] = 2000
...
>>> model[1]
2000
>>> undoChanges(proxy)
>>> model[1]
2
>>> redoChanges(proxy)
>>> model[1]
2000
>>> with recordChanges(proxy, title="replace nested dict item"):
...     proxy[3]["a"] = 456
...
>>> model[3]["a"]
456
>>> undoChanges(proxy)
>>> model[3]["a"]
123

Adding the functions can be done without changing anything about the rest of the code. Perhaps they should even be added to __init__.py and not undoManager.py.

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.