wgergely / bookmarks Goto Github PK
View Code? Open in Web Editor NEWA PySide2 based file and asset manager for animation and CG productions.
Home Page: https://bookmarks.gergely-wootsch.com
License: GNU General Public License v3.0
A PySide2 based file and asset manager for animation and CG productions.
Home Page: https://bookmarks.gergely-wootsch.com
License: GNU General Public License v3.0
I get the feeling the way I'm making connections to the SQLite3 database is not correct. The current api interface locks when there are pending transactions (I'm guessing, when the database is locked), instead of timing out and failing. I also have a code related to creating an in-memory database in case of connection failures but this doesn't seem to work well.
In pipelines where assets are separated into tasks the asset item list can get long (1000s of items on a longer production with many shots). If the assets are linked via .link
files there's a further performance degradation by opening and reading the links themselves so this made me wonder about caching the list of assets and reusing it instead of force-parsing the server every time (poor server, also!).
After parsing an asset root folder, we could save the results into a cache file we use later to get the list of asset items.
This cache could be refreshed if the user explicitly hits the refresh button.
Current items have confusing names.
We have a new domain! update all references to make it work with the new address
Allow making videos of sequences with missing frames.
The build system needs a complete rework to support the everchanging VFX Reference Platform.
// Error: file: C:/Program Files/Autodesk/Maya2020/scripts/others/pluginWin.mel line 317: invalid syntax //
loaded error
Maya2020.4
There is already a haphazard take on this, but I'd like a complete implementation.
An Import/Export menu would be great - it should work with bookmarks and asset items. The exporter needs to output a JSON document with the values stored in the bookmark database and any related thumbnail files.
As Bookmarks wraps around different pipeline folder structures, the display names of items become somewhat uncontrolled.
E.g. if an asset is called SH010_0010
it will be displayed as SH010_0010
. However, if the asset is nested, the display name might end up being SEQ010/REND/lighting/SEQ010_SH010_lighting
. which is not what we'd want necessarily. It certainly makes it harder to parse the item names visually for the user.
I think we can add two new columns to the bookmark database to configure the Qt.DisplayRole string of the bookmark item and the assets within it using the tokens
module.
This is something I've taken a look at in the past but not with Bookmarks. Still, I'd love to see something like that implemented in the main Bookmarks window. Progress data could be saved as asset item data. Perhaps I could change the ListViews to TableViews and use the extra columns as the progress fields?
Trying to archive a file item will toggle an operand error of none and int.
There's a bug in the C++ OIIO binding module that needs more attention. Exrs and even JPEGs fail currently to generate thumbnails
There's something strange going on with the sorting by name of the file model - something perhaps to do with the subfolders?
I'd like to implement a new syntax for splitting and slicing strings as well as better controlling how the token values are populated based on the available context.
Make sure all the timers and widgets are cleaned up when unloading.
The python bindings of OpenImageIO are slow - I'm keen to investigate moving thumbnail operations to a c++ extension.
When a new asset is activated but the currently selected task folder doesn't exist GWBrowser fails to show the files window.
This needs to be tracked down to see why it happens. A better solution would be to show the task folder selector when no task folder has been set yet.
This is something worth investigating, if I could link up the ShotGrid publish stub with the current publish module.
Add a dropdown menu for to the UI to help set ShotGrid task text filters in the assets view.
Currently asset list items are clickable pressing the shift/alt modifiers and pressing a text segment on the item's name. This will set/add a positive or negative filter to the text filters but the system is somewhat clunky. Having a bespoke menu to set filters explicitly would be easier to use and possibly faster also.
Add build script for the main Bookmarks package.
The ffmpeg convert function is calling a non-existing image convert routine. Something wasn't updated correctly...
The saved favourites and the favourite flags on the list items are not updated properly. In fact, the current favourite item model doesn't load its data automatically at all.
The current RV module is limited and lacking useful control commands like adding footage to the current RV session instead of always clearing it.
FFMpeg TC strings don't currently support tokens but we could add this easily to enable customizing the timecode labels.
This was removed previously but never reimplemented.
I think a better solution could be to list all subfolders in the dropdown menu and make them clickable.
Autocomplete is helpful but it does need to be tidied up to be more helpful or intuitive.
When creating jobs, make sure to create a link file when the jobs are nested.
This would be a handy thing to have and I have the ingredients in place to set it up.
There's a bug in how the nested path is being parsed that stops loading nested folders from a link file
Add some sort of support to extract multiple assets from a single asset folder.
I'm thinking of perhaps a .links
file in the root of the asset folder to contain relative links.
This would make it possible to use Bookmarks in site environments where assets are configured per host DCC, etc.
The data module, and more generally, the ways internal data is stored, read and updated is due for a refactoring.
In its current form, the item models are the authors of the internal data but as Bookmarks is growing and more elements rely on the internal data this old implementation doesn't scale at all. Item models instead should be regular consumers. Additionally, the current code is flawed! It stems from a misunderstanding of basic threading concepts, and a misinterpretation of the function of the weakref module (at least I'm learning, ey) resulting in race conditions and data corruption.
Here's what I'm thinking of doing:
I'm not sure how deep the rabbit hole will be but I imagine we can sort directly the internal model hash lists instead of ever having to nuke data structures. The rework will finally also allow better file update handling to make sure file and folder changes can be efficiently reflected back to the views and models and even, allow inserting and popping of items from the view without needing to brute reset.
BOOKMARKS_ROOT
is not set.) //BOOKMARKS_ROOT
is not set.) //Windows10, Maya 2020.4
There are a few issues with the C++ PyBind11 library:
It would be nice if the task folder picker could traverse into subfolders. This means reworking it so it functions as a QTreeView/Model
instead of the current implementation.
The current drag-and-drop behaviour is not what was intended (probably broken when adding draggable properties) for file items.
This is probably because one or more drag-type methods are not overridden correctly in the file item view. Move operations should never be allowed - precisely what the behaviour is now. Oh my! To be investigated.
The current "bookmarker" module is clunky and outdated. I'd like to fold it into the regular editor interface and make more intuitive to use.
I'll make a the new work in a new "jobs" module and replace bookmarker when the work is ready.
These templates are no longer used but can serve as an example for nested assets.
The current notes module isn't very helpful or usere friendly. I'd like to try to implement something like 'cards' in bootstrap - notes with a header, body and footer.
Somewhere I forgot to add close().
Some code tweaks to be based on Studio Aka's latest pipeline changes. Nothing that should have any effect on overall behaviour.
The current implementation allows specifying a relative path for an asset name.
Right now, when adding a SEQ010/SH010
asset, will create a SEQ010 asset folder and expand the selected template inside SH010 - this is the correct behaviour but the linkage is not preserved and Bookmarks only reads the SEQ010 folder.
The solution is to create a .links
file inside the asset root and add any relative paths the asset name might contain.
(I'll look at if bookmark items should do the same...)
The resize indicator is not showing and/or it is difficult to grab.
This is to do with the focus of the current widget as the resize area is associated with the BrowserWidget and I suspect the StackedWidget has the focus oftentimes.
I could try removing the focus from the StackedWidget or investigating a bigger margin around the BrowserWidget. The best solution would be to add back the standard windows frame but... it does look ugly...
I get the feeling there are possible ways to optimise database lookups.
Make sure build scripts are capable of actually producing a workable distribution.
Generated thumbnails are associated using filenames.
This works fine for manually assigned files but generated thumbnails
don't take into account file-changes which can be a bit annoying!
A solution could be to add an extra hash based on the file-size to the saved thumbnail cache. Eg. -.png
I'll investigate...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.