Giter Club home page Giter Club logo

tkclasswizard's Introduction

Personal page

tkclasswizard's People

Contributors

davidhozic avatar dependabot[bot] avatar vjurcutiu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

vjurcutiu

tkclasswizard's Issues

feat: Literal definition inside a list.

Create a new frame for adding literal string values to a list.
Just add it to the normal Add object menu and make the command to insert into the listbox.

feat: Selectable backend.

Add an option to select the backend.
The backend is an underlaying Tkinter-like library.

Currently supported backends:

  • Tkinter: Default backend.
  • ttkbootstrap: Automatically enabled if ttkbootstrap is imported before TkClassWizard.

Pending supported backends:

  • Custom Tkinter

bug: ``List[Union[...]]`` not properly resolved.

When a parameter of a class is annotated with List[Union[...]], the List part gets resolved nicely. However, the Union part is not processed further, resulting in abstract classes and polymorphism not to function properly.

feat: Migrations

Implement a migration system for allow incompatible changes (e. g, like changing classes name) to be compatible.

The migration would be a set of actions, which would modify the .JSON template (schema) files to allow older versions to work with newer versions.

There would be an API to enable developers to make migrations manually through code.

The migration would have a timestamp of when it was created, and a timestamp would be also saved in .JSON files.

feat: Deprecated parameters style

Add the ability for registration of deprecated parameters.
When defining structured objects, the deprecated parameters would be grayed out.

feat: Parameter grouping and group labeling

Add the ability to register parameter groups inside classes.
When defining objects, certain parameters would be grouped together, forming a labeled frame.

The groups would be defined as a dictionary inside the class:

class MyClass:
    __param_groups__ = {
       "Credentials": ["username", "password"],
       "Debugging": ["save_to_file", "debug_level"]
   }

Parameters not inside a group wouldn't have a labeled frame.

feat: Type aliases

Add type aliases when defining new objects.

For example datetime -> DateAndTime, timedelta -> Interval.
User's can add their own aliases, while some will already be predefined for convenience.

When displaying stuff through GUI, display them as DateAndTime(hours=2, minutes=10).

feat: Generic type resolving

Add support for generic types:

T = TypeVar('T')
B = TypeVar('B')

class MyClass(Generic[T, B]):
    def __init__(self, a: T, b: B, c: int):
        ....

class SomeOtherClass:
   def __init__(abcd: MyClass[float, float]): 
       ...

window = wiz.ObjectEditWindow()  # The object definition window / wizard
combo = wiz.ComboBoxObjects(root)
combo.pack(fill=tk.X, padx=5)

window.open_object_edit_frame(SomeOtherClass, combo)  # Open the actual frame

The above would open an object edit window for class SomeOtherClass. The parameter abcd would be a class of type MyClass, which accepts parameter types a=float, b=float, c=int.

Basically generic types would get resolved to their actually names.

feat: Hover class description

When hovering over a menu option that opens a definition frame for a new class, show a toolbar of the classes description (docstring).

feat: Alternative ObjectInfo print

Add an option to change the way defined objects are displayed when viewed inside the Listbox / Combobox.

E. g., If I have and object and_('text1', 'text2,' 'text3'), it would be displayed as: 'text1' and 'text2' and 'text3', provided the display override has been defined.

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.