.. _main_window: Main window =========== The smartElements browser is the main window where you browse your media and where you insert media into your DAG. In order to launch the smartElements browser navigate to Nuke's menu bar and choose **cragl -> smartElements -> open smartElements** .. image:: img/quickstart/menubar_launch_browser.jpg A quicker way is using the shortcut: ``Ctrl + .`` The browser contains three sections that you can either toggle using the buttons at the bottom right or by using ``Ctr + 1``, ``Ctrl + 2`` and ``Ctrl + 3``: .. image:: img/main_window/section_buttons.jpg 1) Main section (``Ctrl + 1``): Shows the media. 2) History section (``Ctrl + 2``): Shows the ingestion history and their logs. 3) Settings section (``Ctrl + 3``): Shows the settings. All three sections get discussed in the following. Main section ------------ The main section is where you access your media. The main section contains multiple widgets that get described below. .. include:: anatomy.rst Working with stacks and lists ----------------------------- smartElements is build up on stacks. Each stack contains multiple lists. Media lives inside these lists. So you have all the control to categorize your media. Both stacks and lists are nothing more than folders on your server, your desktop, your cloud or somewhere else on your machine or somewhere on your network or any other location that your machine can access. Stacks let you keep all elements for one specific show. Or you can use stacks to your advantage to create one stack for each user. Or create a stack for all your toolsets and further categorize the toolsets inside lists. Or you use just one stack and don't further categorize - You decide how to use this feature. The first time you launch smartElements, you will be using the *default* stack. .. image:: img/main_window/stacks.jpg You can use the drop down menu at the top left (**1**) to switch between stacks. Use the **+** button (**2**) to browse to a new stack. The browsed stack will be added to the stacks drop down. Use the **-** button (**3**) to remove a stack from the stacks drop down. Note: This will *only* remove the stack from the stacks drop down. It will *not* delete any folders or media. Each stack contains lists (**4**) that you can use to further categorize elements. In order to create new lists, right click the lists view and choose **New list**. .. image:: img/quickstart/new_list.jpg In order to load a list right click a list and chose **Load** or simply double click it or select it and hit your enter key. The lists media will be loaded in the library view. Working with playlists ---------------------- smartElements lets you collect any elements from any stack and any list into a playlist. This is useful to group elements from various locations into one spot. playlists can then be shared within your team. You can create as many playlists for you and your team as needed. Click the playlist toggle to show/hide the playlist section: .. image:: img/main_window/playlist_toggle.png :scale: 50 .. tip:: Use the shortcut ctrl + down arrow to show the playlist section and ctrl + up arrow to hide it. The playlist section is located at the bottom and looks like the following: .. image:: img/main_window/playlist_section.png On the left you see a list of all playlists. Use the search input to search for a specific playlist. Click any playlist from the list to view its elements. Click the **+** button to create a new playlist or import an existing playlist. Playlists are stored as .json files. Click the **-** button to remove the currently selected playlist from the list. This will only remove it from the list, it will **not** delete the playlist on disk. In order to add to the playlist simply drag and drop one or many elements into the playlist. You can collect elements from any list and any stack into a playlist: .. raw:: html Any element in the playlist behaves exactly like any other element, i.e. they contain a right click menu with various actions and can be brought into your working file by dragging and dropping into your node graph. .. tip:: You can also get playlists added automatically via an environment variable. This is useful to make sure your team has certain playlists available automatically without the need to import them manually. For more information about that see the environment variables documentation for `CRAGL_SMARTELEMENTS_ADDITIONAL_PLAYLISTS `_. History section --------------- The history section shows you the history of all ingested media. Each media ingestion gets one logged in smartElements and here is where you can access the logs. .. image:: img/main_window/history_section.jpg Right clicking a log shows a context menu in which you can export the log, reveal the log and delete the log: .. image:: img/main_window/history_context_menu.jpg Click the *Flush history* button to remove all finished job logs. Settings section ---------------- The settings section lets you customize smartElements to your needs. It contains two tabs: - General: General settings to customize smartElements. - Ingest Processors: Adjust the settings for built-in and custom ingest processors. Only adjust if needed. - Import Processors: Adjust the settings for built-in and custom import processors. Only adjust if needed. General settings ---------------- The *general* settings tab contains general settings to customize smartElements to your needs: .. image:: img/main_window/settings_general.jpg The following customizations are available: **1) Tooltips:** If checked this will show tooltips for all major widgets. *Requires a restart of smartElements to become effective.* **2) Always on top:** If checked the smartElements browser will always stay on top. Otherwise, it will go to the background when clicking somewhere out of the smartElements window. *Requires a restart of smartElements to become effective.* **3) Check for duplicates when ingesting media:** If checked this will pre check all lists of the current stack to see if any media that got dropped into smartElements in order to ingest it is already contained in any list. This will only check all lists of the currently selected stack. If media is already contained then this will show a notification and ask if you want to ingest the media to the currently selected list as well. This features prevents from re-ingesting already contained media. Keep in mind that this will just compare media names to check for any duplicates, it will not compare the actual content. **Note:** Depending on the amount of elements in your lists, keeping this feature enabled will take a moment to process. **4) Media preview**: Determine to use a video preview or a static image for media inside the library. Note that Nuke-11 does not support a video player and will only use static images, regardless of the set value here. Also note in order to view videos a h.264 encoder and decoder need to be installed on your machine, otherwise you will not be able to see video previews. If that is the case or if you simply prefer static images over videos then make sure to select 'image' here. *Requires a restart of Nuke to become effective.* **5) Ingest processor threads:** Set the number of processor threads that ingest media to smartElements in parallel. *Requires a restart of Nuke to become effective.* **6) Ignore all starting with:** Ignore all stacks, list and library media that start with this character/these characters. This is useful to temporarily disable stacks/lists/media from loading. **7) Logging level:** Set the logging level to use for smartElements. Using the ``debug`` level gives the most information. As an example, setting the level to ``debug`` and ingesting media will print all the ingestion steps to your terminal. This will look something like this: .. image:: img/main_window/ingestion_debug.jpg *Requires a restart of Nuke to become effective.* **8) Enable register rendering outputs:** If checked this will enable the auto registering of rendered node outputs to a selected list once the rendering has finished. If enabled, this will create a custom smartElements tab on output nodes that you can use to determine the list where to auto register rendered media to. If unchecked then the smartElements will not be added to newly created output nodes and will also not auto register the renderings. **9) Register by default to list:** Determine where to auto register rendered outputs to once the rendering has finished. This will set the list in a Write node when it gets created. The list can be adjusted afterwards using the list drop down menu in the Write node's properties. **10) Reload lists:** Click to reload all available lists in all stacks. **11) Save:** Click to apply the settings. Note that some widgets require a restart of smartElements or even Nuke to take effect. Please refer to the widget's tooltips or the documentation here to see which widgets require a restart of smartElements or Nuke to become effective. Ingest processor settings ------------------------- The second tab **Ingest Processors** contains a text field (**1**) in which you can configure the processors that run when ingesting media. These settings work out of the box and there should not be a change needed. However, if required you can change the processor's settings here. The settings are stored in a dictionary type where each processor is stored in another nested dictionary. In case you create `custom processors `_ you can drive them by custom settings in here and they will pick these values up. .. image:: img/main_window/settings_ingest_processors.jpg As soon as you click the **save** button (**2**), the settings dictionary will be validated. In case the settings are not a valid dict type, you will be informed about it. .. image:: img/main_window/ingestion_setup_invalid.jpg In case you ever get lost, you can reset the ingestion setup to the default value. Right click the text area and choose **Reset to default** from the context menu. .. image:: img/main_window/settings_advanced_reset.jpg Import processor settings ------------------------- The third tab **Import processors** contains a text field (**1**) that lets you configure the behavior of import processors. This works identically to ingest processors, whereas import processors are run when importing media into your DAG. These processors are driven by configuration and you can adjust the built-in import processor's configuration here and add additional configurations for your own import processors. Using the configuration in here you can quickly enable and disable the processors and adjust their behavior without the need to edit any python module. .. image:: img/main_window/settings_import_processors.jpg Like the ingest processors text field, the import processors settings text field will also inform you about any invalid settings when trying to save. You can also right click it and reset to the default value.