Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-19Asset Browser: don't display linked-in asset datablocksSybren A. Stüvel
Datablocks marked as asset, linked from another file, were shown in the "Current File" asset library. This is now resolved.
2021-11-18Asset tags: include partial tag matchesSybren A. Stüvel
When filtering the asset browser, also include results that have partial tag matches. So searching for "xite" will include results tagged with "excited". This brings the tag filtering in line with other search boxes in Blender. Later we might want to provide users with more options for prefix-only ("excite" would match "excited", but "xited" would not) or only exact matches.
2021-11-18Fix asset preview not showing up for current file data-blocksJulian Eisel
For data-blocks from the current file, the image-buffer for dragging wasn't set at all. This wasn't intentional, dragging things in the Asset Browser should just always show the preview.
2021-11-16Asset Browser: Forbid dragging catalogs into themselvesJulian Eisel
While there is nothing technically that would cause issues when moving a catalog into itself (it just changes the path of the catalog, and the missing parent catalogs will be created), it seems broken to the user. So disable this in the drag & drop code for asset catalogs.
2021-11-12Fix crash in asset browser when switching from file browserSybren A. Stüvel
When the file browser is in asset browser mode, it sets the callback `filelist->prepare_filter_fn` to an asset browser specific function. This function will segfault if there is no current asset library. Switching back from asset browser to file browser would not reset that callback to `NULL`, causing it to be called and crash Blender. This is now fixed.
2021-11-02Fix more UI message/i18n issues.Bastien Montagne
2021-11-01Fix UI messages, typos, etc.Bastien Montagne
2021-11-01Asset Browser: Correct name & tooltip for asset list refresh operatorJulian Eisel
The name and tooltip were talking about file-lists, which exposes the fact that the Asset Browser uses the File Browser code in the UI, which we shouldn't do. This can confuse users. Instead have a dedicated operator for the Asset Browser with a proper name and tooltip.
2021-11-01Fix crash when "HOME" environment variable isn't definedCampbell Barton
Accessing the default directory in the file selector would crash if HOME was undefined. Add BKE_appdir_folder_default_or_root which never returns NULL.
2021-10-27Asset Browser: Activate catalog after addingJulian Eisel
Adding a catalog should also activate it, like we do it for adding other data in Blender. The tree-view code will make sure the newly added item will not have collapsed parents.
2021-10-27Asset Browser: Support dragging catalogs to move them in the hierarchyJulian Eisel
Uses the additions to the UI tree-view API from the previous commit to enable drag & drop of asset catalogs. The catalogs will be moved in the tree including children. A remaining issue is that a catalog with children will always be collapsed when dropping. I need to find a way to fix that in the tree-view API. There are a few improvements I can think of for the tree-item drag & drop support, but time for these is too short. These can be done as normal cleanups at some point.
2021-10-27UI: Add padding to the left of tree-rows labels without iconJulian Eisel
The label was placed right at the left border of the row highlight, which looked weird. So add some padding to tree-row labels without icon or collapse chevron, which makes it look more polished. As additional benefit, it alignes the labels better with icons of other rows on the same tree level. And the padding makes it more clear that a child is indeed a child, not just a sibling without icon.
2021-10-27Asset Browser: Reduce paddings & margins between previewsJulian Eisel
The paddings and margins were more than needed, this reduces them a bit. That way space is used more efficiently, the small differences add up so that more items fit into a row. The File Browser should not be affected. Before/after comparisons: {F11529986} {F11529988} {F11529987} {F11529989}
2021-10-26Asset Browser: Improve hint for asset library that isn't foundJulian Eisel
We already show a message when showing an asset library whose path can't be found on disk. The red text was making it look like some fatal error happened. And the message could be a bit more useful generally. So this removes the red color of the text, (arguably) improves the text and adds a button as shortcut to open the Preferences with the asset library settings. Differential Revision: https://developer.blender.org/D12894
2021-10-26Don't deselect assets in `ED_fileselect_activate_by_id`Sybren A. Stüvel
`ED_fileselect_activate_by_id()` activates an asset (i.e. marks it as the active asset in the asset browser). To avoid an "active but not selected" state, it also selects it. Before this commit, the function would also deselect all other assets, but that's considered doing too much. If deselection is required, the `ED_fileselect_deselect_all()` function can be called. Manifest Task: T92152
2021-10-26Asset Browser: Show disabled-hint when dragging external assets over catalogJulian Eisel
There's now a message displayed in red next to the cursor explaining that only assets from the current file can be moved between catalogs. The previous commit prepared this.
2021-10-26UI: Support disabled-hint for dropping in the tree-view APIJulian Eisel
A tree-view item's drop controller can now return a message for the user explaining why dropping isn't possible with the dropped data. This is then displayed in red text next to the cursor. This isn't actually used yet, the follow up commit will do that.
2021-10-26Cleanup: spelling in commentsCampbell Barton
2021-10-25Asset Browser: apply search filter to tags as wellSybren A. Stüvel
The search bar in the asset browser now also matches on asset tags. - Matching is done on entire tags, so searching for "redder" will not show assets tagged with "red". - All assets are shown that have at least one matching tag. So searching for "red green" will show all assets with either "red" or "green" tags (or both, of course). - Searching is case-insensitive. - Only assets from the active catalog are shown; if all assets should be searched through, users can select the "All" catalog. Manifest Task: T82679
2021-10-25Assets: Snapping with visual feedback while draggingGermano Cavalcante
The drag and drop feature of objects in 3D View has been modified to include: - Snap the object being dragged. - Visual feedback through a box and the placement tool grid. Maniphest Tasks: T90198 Differential Revision: https://developer.blender.org/D12912
2021-10-25Fix T87627: Asset Browser Search Bar not workingSybren A. Stüvel
The asset browser search bar was filtering on the filename containing the asset, and not the asset name. This is now fixed.
2021-10-25Cleanup: refactor filelist filter functionsSybren A. Stüvel
Perform a few cleanups: - Add documentation to explain what returned bools mean. - Early returns so that flow is clearer and some checks on `is_filtered` are no longer necessary. - Split up `is_filtered_file` and `is_filtered_id_file`, so that they can reuse common code, and such that the different filter checks they perform can be separated from each other. The latter is done not only to reduce code duplication, but also as preparation to fix the asset browser filtering. For that, it helps when the "filter by file name" and "filter by file type" parts are separate. No functional changes. Reviewed By: mont29 Differential Revision: https://developer.blender.org/D12991
2021-10-25UI: Refactor dropping support for the tree-view APIJulian Eisel
Introduces a dropping-controller API for the tree-view items, `AbstractTreeViewItemDropController`. This reduces responsibilities of the main tree-view item classes, which are already getting quite big. As I expect even more functionality to be needed for it (e.g. drag support), it's better to start introducing such controller types already.
2021-10-23Asset Browser: Filter options for specific ID typesJulian Eisel
Adds a filter popup to the header that allows specifiying which data-block types to show. The menu automatically reflects all supported ID types, so it shows a checkbox for materials, worlds and actions currently by default, and all ID types with the "Extended Asset Browser" experimental feature enabled.
2021-10-22Asset Browser: fix issue rebuilding the visible asset filterSybren A. Stüvel
2021-10-22Asset Browser: Show "orphaned" assets in "Unassigned" catalogSybren A. Stüvel
Show assets that have an unknown catalog ID assigned in the "Unassigned" catalog. Another catalog named "Orphans" was considered as well, but that would clash with the usual handling of Blender (discarding orphan data on save) and thus that idea was discarded. Manifest Task: T91949
2021-10-22Asset Catalogs: support reloading without losing local changesSybren A. Stüvel
Keep track of unsaved asset catalog changes, in a more granular way than just one boolean per asset library. Individual catalogs can now be marked with a flag `has_unsaved_changes`. This is taken into account when reloading data from the catalog definition file (CDF): - New catalog in CDF: gets loaded - Already-known catalog in CDF: - local unsaved changes: on-disk catalog is ignored - otherwise: on-disk catalog replaces in-memory one - Already-known catalog that does not exist in CDF: - local unsaved changes: catalog is kept around - otherwise: catalog is deleted. Because this saving-is-also-loading behaviour, the "has unsaved changes" flags are all stored in the undo buffer; undoing after saving will not change the CDF, but at least it'll undo the loading from disk, and it'll re-mark any changes as "not saved". Reviewed By: Severin Differential Revision: https://developer.blender.org/D12967
2021-10-21Assets: Allow specific data-block types to be enabled by defaultJulian Eisel
Updates UI code so that we can enable the asset UI for specific data-block types by default, i.e. irrespective of the "Extended Asset Browser" experimental feature. "Mark as Asset" and "Clear Asset" are always visible in the Outliner context menu now, but are grayed out if not applicable and show a disabled hint in the tooltip. A known side-effect of this: The "Mark as Asset" and "Clear Asset" operators are enabled for action data-blocks now, even though only pose actions created through the Pose Libraries add-on are supported. If this is something worth addressing is being discussed still. Differential Revision: https://developer.blender.org/D12955 Reviewed by: Sybren Stüvel
2021-10-20Cleanup: use an array for wmEvent cursor position variablesAaron Carlisle
Use arrays for wmEvent coordinates, this quiets warnings with GCC11. - `x, y` -> `xy`. - `prevx, prevy` -> `prev_xy`. - `prevclickx, prevclicky` -> `prev_click_xy`. There is still some cleanup such as using `copy_v2_v2_int()`, this can be done separately. Reviewed By: campbellbarton, Severin Ref D12901
2021-10-20Asset Browser: Show current file assets in other asset libraries if containedJulian Eisel
If the current file is saved within an asset library, showing that asset library in the Asset Browser will also display the assets from this current file now. In fact, it's the latest state of the open file, including all unsaved modifications. These assets will show a little Blender icon in the preview image, which is our usual icon for current file data. Note that this means an important design change: The "Current File" asset library isn't the only place to edit assets from anymore. From now on assets from the current file can also be edited in the context of the full asset library. See T90193 for more info. Technical info: Besides just including the assets from the current `Main`, this requires partial clearing and reading of file-lists, so that asset operations (e.g. removing an asset data-block) doesn't require a full reload of the asset library. Maniphest Task: https://developer.blender.org/T90193
2021-10-20Cleanup: Remove unused file-list array info membersJulian Eisel
2021-10-19Asset Browser: Improved workflow for asset catalog savingSybren A. Stüvel
No longer save asset catalogs on blendfile save. Instead: - extend the confirmation prompt for unsaved changes to show unsaved catalogs. - In the confirmation prompt, make catalog saving explicit & optional, just like we do it for external images. {F10881736} - In the Asset Browser catalog tree, show an operator icon to save the catalogs to disk. It's grayed out if there are no changes to save, or if the .blend wasn't saved yet (required to know where to save the catalog definitions to). {F10881743} Much of the work was done by @Severin and reviewed by me, then we swapped roles. Reviewed By: Severin Differential Revision: https://developer.blender.org/D12796
2021-10-18Assets: add global `bke::AssetLibraryService` classSybren A. Stüvel
Add `blender::bke::AssetLibraryService` class that acts like a blendfile-scoped singleton. It's allocated upon the first call to `BKE_asset_library_load` and destroyed in the LOAD-PRE handler. The `AssetLibraryService` ensures that edits to asset catalogs are not lost when the asset browser editor closes (or even reloads). Instead, the `AssetLibrary` pointers it owns are kept around as long as the blend file is open. Reviewed By: Severin Maniphest Tasks: T92151 Differential Revision: https://developer.blender.org/D12885
2021-10-14Cleanup: fix const discard warningSybren A. Stüvel
No functional changes.
2021-10-14Filebrowser: Expose file select functions for File Browser to Python API.Paul Golter
This patch adds activate_file_by_relative_path(relative_path="") and deselect_all() function to the space api of the File Browser. While the first sets the active file and adds it to the selection based on a relative path to the current File Browser directory the second one deselects all files but does not change the active file. Differential Revision: https://developer.blender.org/D12826 Reviewed by: Julian Eisel
2021-10-12Asset Catalogs: expose undo/redo operators to UISybren A. Stüvel
Ensure that catalog operations create an undo snapshot, and show undo/redo operators in the asset browser. A hidden operator `ASSET_OT_catalog_undo_push` is also added such that add-ons can also set undo snapshots if they need.
2021-10-08Asset Browser: Context menu for catalogsJulian Eisel
The context menu is a standard way to expose operations of the clicked item to the user. They expect it to be there, and we can make use of it as a place to put more advanced operations in. The menu contains: * New Catalog * Delete Catalog * Rename Also removes the 'x' icon to delete a catalog from the right side of a row. This was just placed there temporarily until the context menu is there. It's too easy to accidentally delete catalogs with this.
2021-10-07Asset Browser: Move Asset Library selector to navigation barJulian Eisel
The menu to select the active Asset Library is now in the left bar (so called "Source List", although I'd prefer "Navigation-Bar"). This has some benefits: * All Asset Library navigation is in the left sidebar now, giving nice grouping and a top-to-bottom & left-to-right flow of the layout. The header is focused on view set-up now. * Catalogs are stored inside the asset library. Makes sense to have them right under that. * Less content in the header allows for less wide Asset Browsers without extensive scrolling. * This location gives more space to add options or operators for Asset Libraries. Main downside I see is that the side-bar needs to be opened to change libraries, which takes quite some space. In practice there shouldn't be need to do this often though.
2021-10-07Asset Browser: Rework layout & behavior of catalog tree-viewJulian Eisel
This reworks how tree rows are constructed in the layout and how they behave in return. * To open or collapse a row, the triangle/chevron icon has to be clicked now. The previous behavior of allowing to do it on the entire row, but only if the item was active already, was just too unusual and felt weird. * Reduce margin between chevron icon and the row label. * Indent child items without chevron some more, otherwise they feel like a row on the same level as their parent, just without chevron. * Fix renaming button taking entire row width. Respect indentation now. * Fix double-clicking to rename toggling collapsed state on each click. Some hacks/special-handling was needed so tree-rows always highlight while the mouse is hovering them, even if the mouse is actually hovering another button inside the row.
2021-10-06Asset Browser: Show catalog add & delete icons on mouse hover (only)Julian Eisel
Now the icons to add or delete catalogs are only shown when mouse hovering a catalog item in the tree. This is convenient for quick creation of catalogs, and doesn't require activating a catalog to edit it first. Determining if a tree item is hovered isn't trivial actually. The UI tree-view code has to find the matching tree-row button in the previous layout to do so, since the new layout isn't calculated yet.
2021-10-06Asset Browser: Always show icon to add catalog next to "All" itemJulian Eisel
Feedback was that it's unclear sometimes how to add a new item and that some people expect a button to add a new item next to the "All" item.
2021-10-06Assets: Support Renaming Catalogs in the UIJulian Eisel
Catalogs can now be renamed by double clicking them in the Asset Browser. This is mostly done through the tree-view API, the asset specific code is very little. There is some polish left to be done here, e.g. the double click currently also collapses/uncollapses and activates the clicked item. And the rename button takes the full width of the row. But addressing these is better done as part of some other behavioral changes that are planned anyway.
2021-10-05Fix T91940: Asset Browser catalogs continuously redrawJulian Eisel
Issue was that the `on_activate()` callback of tree-items were continuously called, because the active-state was queried before we fully reconstructed the tree and its state from the previous redraw. Such issues could happen in more places, so I've refactored the API a bit to reflect the requirements for state queries, and include some sanity checks. The actual fix for the issue is to delay the state change until the tree is fully reconstructed, by letting the tree-items pass a callback to check if they should be active.
2021-10-05Cleanup: Better way to pass activate callbacks to Tree-View itemsJulian Eisel
The `ui::BasicTreeViewItem` took a function-like object to execute on item activation via the constructor. This was mainly intended to be used with lambdas. However, it's confusing to just have this lambda there, with no indication of what it's for (activation). Instead, assign the function-like object via an explicit `on_activate()` function.
2021-10-04Assets: Show all assets indirectly nested inside the active catalogJulian Eisel
The asset catalog design was always that the active catalog would also display all assets of its child catalogs (or grand-childs, etc.). This is one of the main characteristics that differentiates catalogs from usual directories. Sybren prepared this on the asset catalog backend side with 56ce51d1f75a. This integrates it into the Asset Browser backend and the UI.
2021-10-04UI Tree-View API: Enforce active item to be un-collapsedJulian Eisel
Makes sure that the active item of a tree never has collapsed parent items, which can be confusing if it happens. E.g. for the asset catalogs UI, the active catalog decides which assets are visible. Having it hidden while being the main factor deciding which assets are visible is quite confusing. I think it makes sense to have this at the UI Tree-View level, rather than doing it manually in the asset catalog code for example. Seems like something you'd commonly want. We can make it optional in the API if needed. Renamed the `set_active()` function to make clear that it is more than a mere setter.
2021-10-04Assets: Support dragging assets on "Unassigned" catalogJulian Eisel
Dragging assets onto the "Unassigned" catalog tree item will effectively move the assets out of any catalog. Technically this means unsetting the Catalog-ID stored in the asset metadata, or more precisely setting the UUID to be all zeros.
2021-10-04Cleanup: Use static function for asset catalog tree-view helperJulian Eisel
2021-10-04Cleanup: Separate interface & implementation for asset catalog tree-viewJulian Eisel
Should make the code a bit more organized and help getting an overview of the interfaces more quickly.
2021-10-04Fix T91823: Regression not showing idblocks when recursion is set to `Blend ↵Julian Eisel
file` Introduced by fc7beac8d6f4. During code review it wasn't clear why this branch was needed, so we removed it. Now it is clear why it is needed so we added it back and added a comment why the branch is needed. Patch provided by @Severin.