Skip to content

feat: add title or file name to main window title#398

Open
FelipeDefensor wants to merge 49 commits intodevfrom
window-title
Open

feat: add title or file name to main window title#398
FelipeDefensor wants to merge 49 commits intodevfrom
window-title

Conversation

@FelipeDefensor
Copy link
Collaborator

This is specially helpful when more than one TiLiA instance is running.

This is a hacky, temporary solution. This state can be achieved by:
- Creating a score timeline and then deleting the beat timeline used to create it
- Restoring the app state (e.g. after an exception during a timeline command), if the svg viewer happens to be loaded before the beat timeline is restored
"" is a valid value for the color property, it means "use the default color", just as None.
…eline kinds

We should leverage classes as first-class citizens to use them instead of relying on an additional TimelineKind abstraction (TimelineKind). This is a first step towards that.
This commits introduces the commands API, a much simpler way to handle user interactions. Commands make all the following obsolete:

- All timeline and timeline component `RequestHandlers`
- `TimelineComponentSelector`
-  Several `TimelineSelectors`
- `TiliaActions`
- `user_action` fixture
- `TimelineUi.on_timeline_request`, `TimelineUI.on_timeline_component_request` (substituted by `TimelineUIs.on_timeline_command`)
- `TimelineUIs.pre_process_timeline_request()`
- `tilia\ui\timelines\collection\requests\args.py`
- Several `Post` and `Get` members
- Some `TimelineSelector` members

The core functionality is given by `command.py`, along with fuller documentation.

Usage of commands:
```
    # Register a new command
    commands.register(
        'example.command',
        callback_function,
        text='Menu Text',  # Optional: for display in Qt interface
        shortcut='Ctrl+E',  # Optional: keyboard shortcut
        icon='example_icon'   # Optional: icon name in IMG_DIR (without extension)
    )

    # Execute a command
    commands.execute('example.command', arg1, arg2, kwarg1=value1)
```

Examples of commands:
- File commands:        'file.open', 'file.save', 'file.export.img'
- Timeline commands:    'timeline.delete', 'timeline.component.copy'
- View commands:        'view.zoom.in', 'view.zoom.out'

Note that we can pass arguments to commands directly, so we don't need (horrible) things like `TimelineSelector.FROM_MANAGE_TIMELINES_TO_PERMUTE`.

Commands also set the stage for plugins, as they provide a simpler interface to modify application state programatically.
Also add tests for clear commands
Also improve message wording.
…created

We should find a more robust solution for this. For instance, we should warn the user that the score won't scroll automatically if the beat timeline is deleted; and we shouldn't rely on dictionaries if we care about order.
FelipeDefensor and others added 18 commits February 17, 2026 17:33
This crash was particularly annoying when we are working on a new timeline in a separate branch, because the timeline folder wont't get deleted by git when switching branches.
Takeaway: we should use `QTest` to simulate interaction with the ui instead of calling widget methods attributes ourselves.
Takeaway: we should use `QTest` to simulate interaction with the ui instead of calling widget methods attributes ourselves.
`on_side_arrow_press` and `on_horizontal_arrow_press` are duplicates, with the latter being defined in the parent tlui.
Redefined in audiowave because elements don't have "time" attr.
This is specially helpful when more than one TiLiA instance is running.
@FelipeDefensor FelipeDefensor requested a review from azfoo March 16, 2026 05:24
Copy link
Collaborator

@azfoo azfoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a slight preference for APP_NAME - title, just so it's the first thing that comes up in case of a very long title.
Also, having the title without the extension (default, media path), like when using the file path, would look a lot cleaner.

@FelipeDefensor FelipeDefensor added this to the v0.6.1 milestone Mar 18, 2026
Base automatically changed from refactor-timeline-requests to dev March 20, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants