├── .coveragerc ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── SECURITY.md ├── azure-pipelines.yml ├── build_resources.yml ├── docs ├── activity_stream.rst ├── context_widget.rst ├── delegates.rst ├── elided_label.rst ├── filtering.rst ├── help_screen.rst ├── images │ ├── activity_stream.png │ ├── activity_stream_1.png │ ├── activity_stream_2.png │ ├── context_widget.png │ ├── field_checkbox.png │ ├── field_currency.png │ ├── field_date.png │ ├── field_datetime.png │ ├── field_datetime_display.png │ ├── field_datetime_editable.png │ ├── field_datetime_editor.png │ ├── field_entity.png │ ├── field_file_link.png │ ├── field_float.png │ ├── field_footage.png │ ├── field_image.png │ ├── field_list.png │ ├── field_multi_entity.png │ ├── field_number.png │ ├── field_percent.png │ ├── field_status_list.png │ ├── field_tags.png │ ├── field_text.png │ ├── field_url_template.png │ ├── global_search.png │ ├── grouped_list_view.png │ ├── help_aspects.png │ ├── help_overview.png │ ├── navigation.png │ ├── note_reply.png │ ├── overlay_overview.png │ ├── playback_label.png │ ├── shotgun_fields.png │ ├── shotgun_menus.png │ ├── shotgun_menus_example.png │ ├── source.graffle │ ├── version_details_notes.png │ ├── version_details_versions.png │ ├── widget_classes.png │ └── widget_overview.png ├── index.rst ├── models.rst ├── navigation.rst ├── note_input_widget.rst ├── overlay_widget.rst ├── playback_label.rst ├── screen_grab.rst ├── search_completer.rst ├── shotgun_fields.rst ├── shotgun_menus.rst ├── shotgun_search_widget.rst ├── shotgun_widget.rst ├── spinner_widget.rst ├── version_details.rst └── views.rst ├── framework.py ├── icon_256.png ├── info.yml ├── python ├── __init__.py ├── activity_stream │ ├── __init__.py │ ├── activity_stream.py │ ├── data_manager.py │ ├── dialog_reply.py │ ├── label_widgets.py │ ├── overlaywidget.py │ ├── qtwidgets.py │ ├── reply_list.py │ ├── resources │ │ ├── activity_stream_widget.ui │ │ ├── attachment_group_widget.ui │ │ ├── attachment_icon_192px.png │ │ ├── attachments.png │ │ ├── client_note_indicator.png │ │ ├── collapse_widget.ui │ │ ├── default_user.png │ │ ├── new_item_widget.ui │ │ ├── note_widget.ui │ │ ├── rect_256x144.png │ │ ├── reply_dialog.ui │ │ ├── reply_list_widget.ui │ │ ├── reply_widget.ui │ │ ├── resources.graffle │ │ ├── resources.qrc │ │ ├── simple_new_item_widget.ui │ │ └── value_update_widget.ui │ ├── style.qss │ ├── ui │ │ ├── __init__.py │ │ ├── activity_stream_widget.py │ │ ├── attachment_group_widget.py │ │ ├── collapse_widget.py │ │ ├── new_item_widget.py │ │ ├── note_widget.py │ │ ├── reply_dialog.py │ │ ├── reply_list_widget.py │ │ ├── reply_widget.py │ │ ├── resources_rc.py │ │ ├── simple_new_item_widget.py │ │ └── value_update_widget.py │ ├── utils.py │ ├── widget_activity_stream_base.py │ ├── widget_attachment_group.py │ ├── widget_loading.py │ ├── widget_new_item.py │ ├── widget_note.py │ ├── widget_reply.py │ └── widget_value_update.py ├── context_selector │ ├── __init__.py │ ├── context_widget.py │ ├── qtwidgets.py │ ├── resources │ │ ├── context_editor_widget.ui │ │ ├── down_arrow.png │ │ ├── resources.qrc │ │ └── search.png │ ├── style.qss │ └── ui │ │ ├── __init__.py │ │ ├── context_editor_widget.py │ │ └── resources_rc.py ├── decorators │ ├── __init__.py │ └── decorators.py ├── delegates │ ├── __init__.py │ ├── thumbnail_view_item_delegate.py │ ├── view_item_delegate.py │ └── view_item_roles_mixin.py ├── elided_label │ ├── __init__.py │ └── elided_label.py ├── filtering │ ├── __init__.py │ ├── filter_definition.py │ ├── filter_item.py │ ├── filter_item_proxy_model.py │ ├── filter_item_tree_proxy_model.py │ ├── filter_item_widget.py │ ├── filter_menu.py │ ├── filter_menu_button.py │ └── filter_menu_group.py ├── global_search_completer │ └── __init__.py ├── global_search_widget │ └── __init__.py ├── help_screen │ ├── __init__.py │ ├── dialog.py │ ├── resources │ │ ├── bg.png │ │ ├── dialog.ui │ │ ├── left_arrow.png │ │ ├── left_arrow_hover.png │ │ ├── left_arrow_pressed.png │ │ ├── resources.qrc │ │ ├── right_arrow.png │ │ ├── right_arrow_hover.png │ │ └── right_arrow_pressed.png │ └── ui │ │ ├── __init__.py │ │ ├── dialog.py │ │ └── resources_rc.py ├── message_box │ ├── __init__.py │ └── message_box.py ├── models │ ├── __init__.py │ ├── hierarchical_filtering_proxy_model.py │ └── shotgun_sort_filter_proxy_model.py ├── navigation │ ├── __init__.py │ ├── breadcrumb_widget.py │ ├── navigation_widget.py │ ├── qtwidgets.py │ ├── resources │ │ ├── breadcrumb_widget.ui │ │ ├── home.png │ │ ├── home_disabled.png │ │ ├── home_hover.png │ │ ├── home_pressed.png │ │ ├── left_arrow.png │ │ ├── left_arrow_disabled.png │ │ ├── left_arrow_hover.png │ │ ├── left_arrow_pressed.png │ │ ├── navigation_widget.ui │ │ ├── resources.qrc │ │ ├── right_arrow.png │ │ ├── right_arrow_disabled.png │ │ ├── right_arrow_hover.png │ │ └── right_arrow_pressed.png │ └── ui │ │ ├── __init__.py │ │ ├── breadcrumb_widget.py │ │ ├── navigation_widget.py │ │ └── resources_rc.py ├── note_input_widget │ ├── __init__.py │ ├── dialog.py │ ├── note_editor.py │ ├── overlaywidget.py │ ├── resources │ │ ├── camera_hl.png │ │ ├── minus.png │ │ ├── note_input_widget.ui │ │ ├── paper_clip.png │ │ ├── plus.png │ │ ├── resources.qrc │ │ └── trash.png │ ├── sg_qwidgets.py │ ├── style.qss │ ├── ui │ │ ├── __init__.py │ │ ├── note_input_widget.py │ │ └── resources_rc.py │ └── widget.py ├── overlay_widget │ ├── __init__.py │ ├── resources │ │ ├── resources.qrc │ │ └── sg_logo.png │ ├── shotgun_model_overlay_widget.py │ ├── shotgun_overlay_widget.py │ ├── shotgun_spinning_widget.py │ ├── style.qss │ └── ui │ │ ├── __init__.py │ │ └── resources_rc.py ├── playback_label │ ├── __init__.py │ ├── playback_label.py │ ├── resources │ │ ├── play_icon.png │ │ ├── play_icon_inactive.png │ │ ├── resources.graffle │ │ └── resources.qrc │ └── ui │ │ ├── __init__.py │ │ └── resources_rc.py ├── screen_grab │ ├── __init__.py │ └── screen_grab.py ├── search_completer │ ├── __init__.py │ ├── global_search_completer.py │ ├── global_search_result_delegate.py │ ├── hierarchical_search_completer.py │ ├── hierarchical_search_result_delegate.py │ ├── resources │ │ ├── keyboard.png │ │ ├── loading.png │ │ ├── modes.graffle │ │ ├── no_match.png │ │ ├── no_thumbnail.png │ │ ├── rect_512x400.png │ │ ├── resources.qrc │ │ └── search_result_widget.ui │ ├── search_completer.py │ ├── search_result_delegate.py │ ├── search_result_widget.py │ ├── ui │ │ ├── __init__.py │ │ ├── resources_rc.py │ │ └── search_result_widget.py │ └── utils.py ├── search_widget │ ├── __init__.py │ ├── resources │ │ ├── clear_search.png │ │ ├── clear_search_hover.png │ │ ├── resources.qrc │ │ ├── search.png │ │ └── search_widget.ui │ ├── search_widget.py │ └── ui │ │ ├── __init__.py │ │ ├── resources_rc.py │ │ └── search_widget.py ├── sg_qicons │ ├── __init__.py │ ├── resources │ │ ├── icons │ │ │ ├── bullet_active_20x20.png │ │ │ ├── bullet_inactive_20x20.png │ │ │ ├── check_mark_green_16x16.png │ │ │ ├── check_mark_green_20x20.png │ │ │ ├── check_mark_green_32x32.png │ │ │ ├── check_mark_green_40x40.png │ │ │ ├── check_mark_red_16x16.png │ │ │ ├── check_mark_red_20x20.png │ │ │ ├── check_mark_red_32x32.png │ │ │ ├── filter-active-disabled_16x16.png │ │ │ ├── filter-active-disabled_20x20.png │ │ │ ├── filter-active-disabled_32x32.png │ │ │ ├── filter-active-disabled_40x40.png │ │ │ ├── filter-active_16x16.png │ │ │ ├── filter-active_20x20.png │ │ │ ├── filter-active_32x32.png │ │ │ ├── filter-active_40x40.png │ │ │ ├── filter-inactive-disabled_16x16.png │ │ │ ├── filter-inactive-disabled_20x20.png │ │ │ ├── filter-inactive-disabled_32x32.png │ │ │ ├── filter-inactive-disabled_40x40.png │ │ │ ├── filter-inactive_16x16.png │ │ │ ├── filter-inactive_20x20.png │ │ │ ├── filter-inactive_32x32.png │ │ │ ├── filter-inactive_40x40.png │ │ │ ├── gear_16x16.png │ │ │ ├── gear_20x20.png │ │ │ ├── gear_32x32.png │ │ │ ├── gear_40x40.png │ │ │ ├── info_active_20x20.png │ │ │ ├── info_active_40x40.png │ │ │ ├── info_inactive_20x20.png │ │ │ ├── info_inactive_40x40.png │ │ │ ├── lock_16x16.png │ │ │ ├── lock_20x20.png │ │ │ ├── lock_32x32.png │ │ │ ├── lock_40x40.png │ │ │ ├── refresh-active-disabled_16x16.png │ │ │ ├── refresh-active-disabled_20x20.png │ │ │ ├── refresh-active-disabled_32x32.png │ │ │ ├── refresh-active-disabled_40x40.png │ │ │ ├── refresh-active_16x16.png │ │ │ ├── refresh-active_20x20.png │ │ │ ├── refresh-active_32x32.png │ │ │ ├── refresh-active_40x40.png │ │ │ ├── refresh-inactive-disabled_16x16.png │ │ │ ├── refresh-inactive-disabled_20x20.png │ │ │ ├── refresh-inactive-disabled_32x32.png │ │ │ ├── refresh-inactive-disabled_40x40.png │ │ │ ├── refresh-inactive_16x16.png │ │ │ ├── refresh-inactive_20x20.png │ │ │ ├── refresh-inactive_32x32.png │ │ │ ├── refresh-inactive_40x40.png │ │ │ ├── refresh_16x16.png │ │ │ ├── refresh_20x20.png │ │ │ ├── refresh_32x32.png │ │ │ ├── refresh_40x40.png │ │ │ ├── refresh_grey_16x16.png │ │ │ ├── refresh_grey_20x20.png │ │ │ ├── refresh_grey_32x32.png │ │ │ ├── refresh_grey_40x40.png │ │ │ ├── refresh_red_20x20.png │ │ │ ├── refresh_red_40x40.png │ │ │ ├── spinning-wheel_16x16.gif │ │ │ ├── spinning-wheel_20x20.gif │ │ │ ├── spinning-wheel_32x32.gif │ │ │ ├── spinning-wheel_40x40.gif │ │ │ ├── toggle_active_20x20.png │ │ │ ├── toggle_active_32x32.png │ │ │ ├── toggle_inactive_20x20.png │ │ │ ├── toggle_inactive_32x32.png │ │ │ ├── tree_arrow_collapsed_20x20.png │ │ │ ├── tree_arrow_expanded_20x20.png │ │ │ ├── validation_error_16x16.png │ │ │ ├── validation_error_20x20.png │ │ │ ├── validation_error_32x32.png │ │ │ ├── validation_ok_16x16.png │ │ │ ├── validation_ok_20x20.png │ │ │ ├── validation_ok_32x32.png │ │ │ ├── validation_ok_40x40.png │ │ │ ├── validation_warning_16x16.png │ │ │ ├── validation_warning_20x20.png │ │ │ ├── validation_warning_32x32.png │ │ │ ├── view_grid_active_20x20.png │ │ │ ├── view_grid_active_40x40.png │ │ │ ├── view_grid_inactive_20x20.png │ │ │ ├── view_grid_inactive_40x40.png │ │ │ ├── view_list_active_20x20.png │ │ │ ├── view_list_inactive_20x20.png │ │ │ ├── view_thumbnail_active_20x20.png │ │ │ └── view_thumbnail_inactive_20x20.png │ │ └── resources.qrc │ ├── sg_qicon.py │ └── ui │ │ ├── __init__.py │ │ └── resources_rc.py ├── sg_qwidgets │ ├── __init__.py │ └── sg_qwidgets.py ├── shotgun_fields │ ├── __init__.py │ ├── bubble_widget.py │ ├── checkbox_widget.py │ ├── currency_widget.py │ ├── date_and_time_widget.py │ ├── date_widget.py │ ├── duration_widget.py │ ├── entity_widget.py │ ├── file_link_widget.py │ ├── float_widget.py │ ├── footage_widget.py │ ├── image_widget.py │ ├── label_base_widget.py │ ├── list_widget.py │ ├── multi_entity_widget.py │ ├── number_widget.py │ ├── percent_widget.py │ ├── resources │ │ ├── apply_value.png │ │ ├── edit_close.png │ │ ├── edit_field.png │ │ ├── image_menu.png │ │ ├── link_local.png │ │ ├── link_menu.png │ │ ├── link_upload.png │ │ ├── link_web.png │ │ ├── no_thumbnail.png │ │ ├── not_editable.png │ │ ├── resources.qrc │ │ └── tag.png │ ├── shotgun_field_delegate.py │ ├── shotgun_field_editable.py │ ├── shotgun_field_manager.py │ ├── shotgun_field_meta.py │ ├── status_list_widget.py │ ├── tags_widget.py │ ├── text_widget.py │ ├── timecode_widget.py │ ├── ui │ │ ├── __init__.py │ │ └── resources_rc.py │ ├── url_template_widget.py │ ├── util.py │ └── widget_metaclass.py ├── shotgun_menus │ ├── __init__.py │ ├── entity_field_menu.py │ ├── resources │ │ ├── check.png │ │ └── resources.qrc │ ├── shotgun_menu.py │ └── ui │ │ ├── __init__.py │ │ └── resources_rc.py ├── shotgun_search_widget │ ├── __init__.py │ ├── global_search_widget.py │ ├── hierarchical_search_widget.py │ ├── search_style.qss │ └── shotgun_search_widget.py ├── shotgun_widget │ ├── __init__.py │ ├── resources │ │ ├── rect_512x400.png │ │ ├── resources.qrc │ │ ├── shotgun_folder_widget.ui │ │ └── shotgun_list_widget.ui │ ├── shotgun_folder_widget.py │ ├── shotgun_list_widget.py │ ├── shotgun_widget.py │ └── ui │ │ ├── __init__.py │ │ ├── resources_rc.py │ │ ├── shotgun_folder_widget.py │ │ └── shotgun_list_widget.py ├── spinner_widget │ ├── __init__.py │ └── spinner_widget.py ├── utils.py ├── version_details │ ├── __init__.py │ ├── qtwidgets.py │ ├── resources │ │ ├── arrow.png │ │ ├── blank.png │ │ ├── close.png │ │ ├── close_hover.png │ │ ├── dock.png │ │ ├── dock_hover.png │ │ ├── icon_player_cut_action_small_active.png │ │ ├── icon_player_cut_action_small_dark.png │ │ ├── navigate_out.png │ │ ├── navigate_out_hover.png │ │ ├── panel_empty_background.png │ │ ├── resources.qrc │ │ ├── right_arrow.png │ │ ├── right_arrow_large.png │ │ ├── right_arrow_white.png │ │ ├── sort_down.png │ │ ├── sort_down_on.png │ │ ├── sort_up.png │ │ ├── sort_up_on.png │ │ ├── tack_hover.png │ │ ├── tack_up.png │ │ ├── undock.png │ │ ├── undock_hover.png │ │ └── version_details_widget.ui │ ├── selection_context_menu.py │ ├── shotgun_entities │ │ ├── __init__.py │ │ ├── card_delegate.py │ │ ├── card_widget.py │ │ ├── resources │ │ │ └── card_widget.ui │ │ └── ui │ │ │ ├── __init__.py │ │ │ └── card_widget.py │ ├── simple_tooltip_model.py │ ├── style.qss │ ├── ui │ │ ├── __init__.py │ │ ├── resources_rc.py │ │ └── version_details_widget.py │ └── version_details.py └── views │ ├── __init__.py │ ├── edit_selected_widget_delegate.py │ ├── grouped_list_view │ ├── __init__.py │ ├── group_widget.py │ ├── group_widget_base.py │ ├── grouped_item_view.py │ ├── grouped_list_view.py │ └── grouped_list_view_item_delegate.py │ ├── shotgun_tableview.py │ └── widget_delegate.py ├── resources └── resources.graffle └── tests ├── filtering ├── test_filter_definition.py ├── test_filter_item.py └── test_filter_menu.py ├── fixtures └── config │ ├── bundles │ └── test_app │ │ ├── app.py │ │ └── info.yml │ ├── core │ └── hooks │ │ └── pick_environment.py │ └── env │ └── test.yml ├── python ├── data_object.py └── list_model.py └── test_framework.py /.coveragerc: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | # 11 | # coverage configuration - used by https://coveralls.io/ integration 12 | # 13 | # 14 | [run] 15 | source=. 16 | omit=tests/* 17 | 18 | [report] 19 | exclude_lines = 20 | raise NotImplementedError 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Ignore vim temporary and swap files 6 | *~ 7 | [._]*.s[a-w][a-z] 8 | [._]s[a-w][a-z] 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | env/ 16 | bin/ 17 | build/ 18 | develop-eggs/ 19 | dist/ 20 | eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | 30 | # Installer logs 31 | pip-log.txt 32 | pip-delete-this-directory.txt 33 | 34 | # Unit test / coverage reports 35 | htmlcov/ 36 | .tox/ 37 | .coverage 38 | .cache 39 | nosetests.xml 40 | coverage.xml 41 | 42 | # Translations 43 | *.mo 44 | 45 | # Mr Developer 46 | .mr.developer.cfg 47 | .project 48 | .pydevproject 49 | 50 | # Rope 51 | .ropeproject 52 | 53 | # Django stuff: 54 | *.log 55 | *.pot 56 | 57 | # Sphinx documentation 58 | docs/_build/ 59 | 60 | # PyCharm project settings 61 | .idea 62 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # Styles the code properly 12 | # Exclude the UI files, as they are auto-generated. 13 | exclude: "ui\/.*py$" 14 | # List of super useful formatters. 15 | repos: 16 | - repo: https://github.com/pre-commit/pre-commit-hooks 17 | rev: v5.0.0 18 | hooks: 19 | # Ensures the code is syntaxically correct 20 | - id: check-ast 21 | language_version: python3 22 | # Ensures a file name will resolve on all platform 23 | - id: check-case-conflict 24 | # Checks files with the execute bit set have shebangs 25 | - id: check-executables-have-shebangs 26 | # Ensure there's no incomplete merges 27 | - id: check-merge-conflict 28 | # Adds an empty line if missing at the end of a file. 29 | - id: end-of-file-fixer 30 | # Makes sure requirements.txt is properly formatted 31 | - id: requirements-txt-fixer 32 | # Removes trailing whitespaces. 33 | - id: trailing-whitespace 34 | # Leave black at the bottom so all touchups are done before it is run. 35 | - repo: https://github.com/psf/black 36 | rev: 25.1.0 37 | hooks: 38 | - id: black 39 | language_version: python3 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![VFX Platform](https://img.shields.io/badge/vfxplatform-2025%20%7C%202024%20%7C%202023%20%7C%202022-blue.svg)](http://www.vfxplatform.com/) 2 | [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.10%20%7C%203.9-blue.svg)](https://www.python.org/) 3 | [![Build Status](https://dev.azure.com/shotgun-ecosystem/Toolkit/_apis/build/status/Frameworks/tk-framework-qtwidgets?branchName=master)](https://dev.azure.com/shotgun-ecosystem/Toolkit/_build/latest?definitionId=45&branchName=master) 4 | [![codecov](https://codecov.io/gh/shotgunsoftware/tk-framework-qtwidgets/branch/master/graph/badge.svg)](https://codecov.io/gh/shotgunsoftware/tk-framework-qtwidgets) 5 | [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) 6 | [![Linting](https://img.shields.io/badge/PEP8%20by-Hound%20CI-a873d1.svg)](https://houndci.com) 7 | 8 | ## Documentation 9 | This repository is a part of the Flow Production Tracking Pipeline Toolkit. 10 | 11 | - For more information about this app and for release notes, *see the wiki section*. 12 | - For API Reference, see http://developer.shotgridsoftware.com/tk-framework-qtwidgets 13 | - For general information and documentation, click here: https://help.autodesk.com/view/SGDEV/ENU/?contextId=SA_INTEGRATIONS_USER_GUIDE 14 | - For information about Flow Production Tracking in general, click here: https://www.shotgridsoftware.com/integrations 15 | 16 | ## Using this app in your Setup 17 | All the apps that are part of our standard app suite are pushed to our App Store. 18 | This is where you typically go if you want to install an app into a project you are 19 | working on. For an overview of all the Apps and Engines in the Toolkit App Store, 20 | click here: https://help.autodesk.com/view/SGDEV/ENU/?contextId=PC_TOOLKIT_APPS 21 | 22 | ## Have a Question? 23 | Don't hesitate to contact us! You can find us on https://knowledge.autodesk.com/contact-support 24 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Security 4 | 5 | At Autodesk, we know that the security of your data is critical to your studio’s 6 | operation. 7 | As the industry shifts to the cloud, ShotGrid knows that security and service 8 | models are more important than ever. 9 | 10 | The confidentiality, integrity, and availability of your content is at the top 11 | of our priority list. 12 | Not only do we have a team of ShotGrid engineers dedicated to platform security 13 | and performance, we are also backed by Autodesk’s security team, also invests 14 | heavily in the security for broad range of industries and customers. 15 | We constantly reassess, develop, and improve our risk management program because 16 | we know that the landscape of security is ever-changing. 17 | 18 | If you believe you have found a security vulnerability in any ShotGrid-owned 19 | repository, please report it to us as described below. 20 | 21 | 22 | ## Reporting Security Issues 23 | 24 | **Please do not report security vulnerabilities through public GitHub issues.** 25 | 26 | Instead, please report them by sending a message to 27 | [Autodesk Trust Center](https://www.autodesk.com/trust/contact-us). 28 | 29 | Please include as much information as you can provide such as locations, 30 | configurations, reproduction steps, exploit code, impact, etc. 31 | 32 | 33 | ## Additional Information 34 | 35 | Please check out the [ShotGrid Security White Paper](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html). 36 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # Imports the shared Azure CI tools 12 | resources: 13 | repositories: 14 | - repository: templates 15 | type: github 16 | name: shotgunsoftware/tk-ci-tools 17 | ref: refs/heads/master 18 | endpoint: shotgunsoftware 19 | 20 | # We want builds to trigger for 3 reasons: 21 | # - The master branch sees new commits 22 | # - Each PR should get rebuilt when commits are added to it. 23 | # - When we tag something 24 | trigger: 25 | branches: 26 | include: 27 | - master 28 | tags: 29 | include: 30 | - v* 31 | pr: 32 | branches: 33 | include: 34 | - "*" 35 | 36 | # This pulls in a variable group from Azure. Variables can be encrypted or not. 37 | variables: 38 | - group: deploy-secrets 39 | 40 | jobs: 41 | - template: build-pipeline.yml@templates 42 | parameters: 43 | additional_repositories: 44 | - name: tk-framework-shotgunutils 45 | -------------------------------------------------------------------------------- /docs/activity_stream.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Activity Stream Widget 2 | ############################################### 3 | 4 | Introduction 5 | ====================================== 6 | 7 | The activity stream widget is a QT widget that renders the activity stream for a 8 | given Flow Production Tracking entity. The functionality is similar to that in the activity stream 9 | found inside the Flow Production Tracking web application. Publishes and Versions show up with thumbnails, 10 | optionally with playback links. Notes show up with replies and attachments and you can 11 | reply to notes directly in the activity stream. 12 | 13 | .. image:: images/activity_stream_1.png 14 | 15 | In addition to an activity stream widget, this module also contains a widget for 16 | displaying notes and replies. This uses the same data backend as the activity stream 17 | and has a similar look and feel. 18 | 19 | .. image:: images/activity_stream_2.png 20 | 21 | Caching policy 22 | ----------------------------------- 23 | All the content in the activity stream is cached and when you request the activity 24 | stream for an entity, the widget requests only the changes since the last update. The 25 | data is cached in a shared manner, meaning that a project, shot and task may be showing 26 | the same updates in their respective streams - and in this case, those updates are only 27 | pulled down once. 28 | 29 | 30 | ActivityStreamWidget 31 | ====================================== 32 | 33 | .. currentmodule:: activity_stream 34 | 35 | .. autoclass:: ActivityStreamWidget 36 | :show-inheritance: 37 | :members: 38 | :inherited-members: 39 | 40 | ReplyListWidget 41 | ====================================== 42 | 43 | .. currentmodule:: activity_stream 44 | 45 | .. autoclass:: ReplyListWidget 46 | :show-inheritance: 47 | :members: 48 | :inherited-members: 49 | -------------------------------------------------------------------------------- /docs/context_widget.rst: -------------------------------------------------------------------------------- 1 | Context Selector Widget 2 | ############################################# 3 | 4 | 5 | .. currentmodule:: context_selector 6 | 7 | This widget is a standardized context selection UI, suitable to be 8 | dropped in when a Toolkit App needs a user to select a context: 9 | 10 | .. image:: images/context_widget.png 11 | 12 | The widget includes the following features: 13 | 14 | - Uses standard auto completers to allow a user to quickly find tasks or links. 15 | - Keeps recently selected tasks on the menu for quick lookup. 16 | - Shows related tasks for a given task or link. 17 | - Configurable to be just a viewer rather than a selector. 18 | - Configurable title 19 | 20 | .. autoclass:: ContextWidget 21 | :members: 22 | :inherited-members: 23 | :exclude-members: eventFilter 24 | -------------------------------------------------------------------------------- /docs/delegates.rst: -------------------------------------------------------------------------------- 1 | Delegates 2 | ###################################### 3 | 4 | Flexible delegates to set up with a Qt model and view to display the data 5 | 6 | .. currentmodule:: delegates 7 | 8 | .. autoclass:: ViewItemDelegate 9 | :show-inheritance: 10 | :members: 11 | 12 | .. autoclass:: ThumbnailViewItemDelegate 13 | :show-inheritance: 14 | :members: 15 | -------------------------------------------------------------------------------- /docs/elided_label.rst: -------------------------------------------------------------------------------- 1 | Auto-Elide label 2 | ###################################### 3 | 4 | 5 | This simple yet commonly used class helps add an elide (a "..." at the end) 6 | to text when it doesn't fit within a given space. 7 | 8 | .. currentmodule:: elided_label 9 | 10 | .. autoclass:: ElidedLabel 11 | :show-inheritance: 12 | :inherited-members: 13 | :members: 14 | :exclude-members: resizeEvent 15 | -------------------------------------------------------------------------------- /docs/filtering.rst: -------------------------------------------------------------------------------- 1 | Filtering 2 | ###################################### 3 | 4 | Filtering functionality that aims to mimic the Flow Production Tracking Web UI filter menu. 5 | 6 | .. currentmodule:: filtering 7 | 8 | .. autoclass:: FilterMenu 9 | :show-inheritance: 10 | :members: 11 | 12 | .. autoclass:: FilterMenuButton 13 | :show-inheritance: 14 | :members: 15 | 16 | .. autoclass:: FilterItem 17 | :show-inheritance: 18 | :members: 19 | 20 | .. autoclass:: FilterItemProxyModel 21 | :show-inheritance: 22 | :members: 23 | 24 | .. autoclass:: FilterItemTreeProxyModel 25 | :show-inheritance: 26 | :members: 27 | -------------------------------------------------------------------------------- /docs/help_screen.rst: -------------------------------------------------------------------------------- 1 | Help Screen Popup 2 | ###################################### 3 | 4 | 5 | Introduction 6 | ====================================== 7 | 8 | .. image:: images/help_overview.png 9 | 10 | 11 | The help popup is a window which presents a series of help images to the user, 12 | typically displayed at startup, to help introduce new feature or a new application 13 | to a user. The information is presented as an interactive slide show where the user 14 | can easily navigate between sides. 15 | 16 | .. image:: images/help_aspects.png 17 | 18 | 19 | You simply provide it with a list of transparent bitmaps sized 650x400 and it will 20 | create a slideshow with animated transitions and a link to the bundle's associated 21 | documentation (retrieved from the manifest). 22 | 23 | Sample Code 24 | --------------------------------------- 25 | 26 | The ``help_screen`` module contains a single method that takes care of everything. 27 | Simply create the number of 650x400 images that you want and export them as transparent 28 | ``png`` files and ensure that the background is transparent (this is not a strict requirement, 29 | but it will most likely look strange with a non-transparent background). Add the 30 | images to the QT resource section of your app and then execute the following code 31 | to launch the help screen:: 32 | 33 | # example of how the help screen can be used within your app code 34 | 35 | # import the module - note that this is using the special 36 | # import_framework code so it won't work outside an app 37 | help_screen = sgtk.platform.import_framework("tk-framework-qtwidgets", "help_screen") 38 | 39 | # generate pixmaps of the help screen resources we want to display 40 | help_pix = [ QtGui.QPixmap(":/res/help_1.png"), 41 | QtGui.QPixmap(":/res/help_2.png"), 42 | QtGui.QPixmap(":/res/help_3.png"), 43 | QtGui.QPixmap(":/res/help_4.png") ] 44 | 45 | # get the current app object 46 | app = sgtk.platform.current_bundle() 47 | 48 | # get the current QT UI window 49 | window = current_dialog_object.window() 50 | 51 | # and present the help screen. This is a non-blocking call 52 | # and the application flow will continue 53 | help_screen.show_help_screen(self.window(), app, help_pix) 54 | 55 | 56 | 57 | API Reference 58 | ====================================== 59 | 60 | .. currentmodule:: help_screen 61 | 62 | .. autofunction:: show_help_screen 63 | -------------------------------------------------------------------------------- /docs/images/activity_stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/activity_stream.png -------------------------------------------------------------------------------- /docs/images/activity_stream_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/activity_stream_1.png -------------------------------------------------------------------------------- /docs/images/activity_stream_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/activity_stream_2.png -------------------------------------------------------------------------------- /docs/images/context_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/context_widget.png -------------------------------------------------------------------------------- /docs/images/field_checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_checkbox.png -------------------------------------------------------------------------------- /docs/images/field_currency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_currency.png -------------------------------------------------------------------------------- /docs/images/field_date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_date.png -------------------------------------------------------------------------------- /docs/images/field_datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_datetime.png -------------------------------------------------------------------------------- /docs/images/field_datetime_display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_datetime_display.png -------------------------------------------------------------------------------- /docs/images/field_datetime_editable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_datetime_editable.png -------------------------------------------------------------------------------- /docs/images/field_datetime_editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_datetime_editor.png -------------------------------------------------------------------------------- /docs/images/field_entity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_entity.png -------------------------------------------------------------------------------- /docs/images/field_file_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_file_link.png -------------------------------------------------------------------------------- /docs/images/field_float.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_float.png -------------------------------------------------------------------------------- /docs/images/field_footage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_footage.png -------------------------------------------------------------------------------- /docs/images/field_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_image.png -------------------------------------------------------------------------------- /docs/images/field_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_list.png -------------------------------------------------------------------------------- /docs/images/field_multi_entity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_multi_entity.png -------------------------------------------------------------------------------- /docs/images/field_number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_number.png -------------------------------------------------------------------------------- /docs/images/field_percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_percent.png -------------------------------------------------------------------------------- /docs/images/field_status_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_status_list.png -------------------------------------------------------------------------------- /docs/images/field_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_tags.png -------------------------------------------------------------------------------- /docs/images/field_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_text.png -------------------------------------------------------------------------------- /docs/images/field_url_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/field_url_template.png -------------------------------------------------------------------------------- /docs/images/global_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/global_search.png -------------------------------------------------------------------------------- /docs/images/grouped_list_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/grouped_list_view.png -------------------------------------------------------------------------------- /docs/images/help_aspects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/help_aspects.png -------------------------------------------------------------------------------- /docs/images/help_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/help_overview.png -------------------------------------------------------------------------------- /docs/images/navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/navigation.png -------------------------------------------------------------------------------- /docs/images/note_reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/note_reply.png -------------------------------------------------------------------------------- /docs/images/overlay_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/overlay_overview.png -------------------------------------------------------------------------------- /docs/images/playback_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/playback_label.png -------------------------------------------------------------------------------- /docs/images/shotgun_fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/shotgun_fields.png -------------------------------------------------------------------------------- /docs/images/shotgun_menus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/shotgun_menus.png -------------------------------------------------------------------------------- /docs/images/shotgun_menus_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/shotgun_menus_example.png -------------------------------------------------------------------------------- /docs/images/source.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/source.graffle -------------------------------------------------------------------------------- /docs/images/version_details_notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/version_details_notes.png -------------------------------------------------------------------------------- /docs/images/version_details_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/version_details_versions.png -------------------------------------------------------------------------------- /docs/images/widget_classes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/widget_classes.png -------------------------------------------------------------------------------- /docs/images/widget_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/docs/images/widget_overview.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | The QT Widgets Framework 2 | #################################################### 3 | 4 | The QT Widgets Framework contains a collection of QT UI Related modules. 5 | 6 | Contents: 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | activity_stream 12 | elided_label 13 | search_completer 14 | shotgun_search_widget 15 | context_widget 16 | delegates 17 | filtering 18 | help_screen 19 | models 20 | navigation 21 | note_input_widget 22 | overlay_widget 23 | playback_label 24 | screen_grab 25 | shotgun_fields 26 | shotgun_menus 27 | shotgun_widget 28 | spinner_widget 29 | version_details 30 | views 31 | 32 | Importing widgets into your app 33 | ============================================= 34 | 35 | Each of the modules in this framework can be used inside your Toolkit Apps. 36 | They are typically imported via Toolkit's special ``import_framework()`` method, 37 | which handles automatic reload and resource management behind the scenes:: 38 | 39 | overlay_widget = sgtk.platform.import_framework("tk-framework-qtwidgets", "overlay_widget") 40 | 41 | These imports work just like the normal ``import`` call in python and we recommend 42 | that they are placed at the top of the file. 43 | 44 | Once you have imported the module, you can access the class or objects inside:: 45 | 46 | my_overlay = overlay_widget.ShotgunOverlayWidget(self) 47 | 48 | .. _widgets-in-designer: 49 | 50 | Using widgets with QT Designer 51 | ---------------------------------------------------- 52 | 53 | If you are dropping the widgets into QT Designer directly, there isn't an option to 54 | run the ``import_framework`` method. In this case, we recommend adding imports to a wrapper 55 | file and place that next to your other python files. You can for example call this file 56 | ``qtwidgets.py`` and then do the imports in this file:: 57 | 58 | import sgtk 59 | 60 | note_input_widget = sgtk.platform.current_bundle().import_module("note_input_widget") 61 | NoteInputWidget = note_input_widget.NoteInputWidget 62 | 63 | version_label = sgtk.platform.current_bundle().import_module("version_label") 64 | VersionLabel = version_label.VersionLabel 65 | 66 | In your designer generated ``.ui`` files, you can now reference these widgets as if they were 67 | local to your project. 68 | -------------------------------------------------------------------------------- /docs/models.rst: -------------------------------------------------------------------------------- 1 | Model Related Classes 2 | ###################################### 3 | 4 | The ``models`` module contains QT Models and model related classes that 5 | are useful when building MVC setups and when you need to filter data in 6 | various ways. 7 | 8 | 9 | HierarchicalFilteringProxyModel 10 | ====================================== 11 | 12 | .. currentmodule:: models 13 | 14 | .. autoclass:: HierarchicalFilteringProxyModel 15 | :show-inheritance: 16 | :members: _is_row_accepted, enable_caching 17 | :private-members: _is_row_accepted 18 | 19 | ShotgunSortFilterProxyModel 20 | ====================================== 21 | 22 | .. currentmodule:: models 23 | 24 | .. autoclass:: ShotgunSortFilterProxyModel 25 | :show-inheritance: 26 | :members: lessThan, filterAcceptsRow 27 | :private-members: _get_processable_field_data 28 | -------------------------------------------------------------------------------- /docs/navigation.rst: -------------------------------------------------------------------------------- 1 | Navigation Widgets 2 | ###################################### 3 | 4 | The navigation module contains standard widgets that can 5 | be used to track navigation and state. 6 | 7 | .. image:: images/navigation.png 8 | 9 | The breadcrumbs widget is a standard widget that displays a history 10 | of things separated by arrows. This class utilizes the :class:`~elided_label.ElidedLabel` widget 11 | to ensure that names are reduced down nicely in the case there ins't enough 12 | space to display the entire history. 13 | 14 | The navigation widget implements the standard home/next/prev concept that can be 15 | found in several Toolkit apps. 16 | 17 | 18 | Breadcrumbs 19 | ====================================== 20 | 21 | .. currentmodule:: navigation 22 | 23 | .. autoclass:: BreadcrumbWidget 24 | :show-inheritance: 25 | :members: 26 | 27 | .. autoclass:: Breadcrumb 28 | :members: 29 | 30 | Home/Next/Prev Navigation 31 | ====================================== 32 | 33 | .. autoclass:: NavigationWidget 34 | :show-inheritance: 35 | :members: 36 | -------------------------------------------------------------------------------- /docs/note_input_widget.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Note Input Widget 2 | ############################################# 3 | 4 | The note editor widget makes it easy to add notes in Toolkit. 5 | 6 | .. image:: images/note_reply.png 7 | 8 | You can use the widget either to create or reply to notes. The editor 9 | includes screen grabbing capabilities and a user name auto completer. 10 | If you start typing @xyz, an auto completer will kick in and show matching 11 | groups and users. Once added to the note text, these users will automatically 12 | be included in the TO list in the case of a new note and in the CC list in the 13 | case of a reply. 14 | 15 | NoteInputWidget 16 | ====================================== 17 | 18 | .. currentmodule:: note_input_widget 19 | 20 | .. autoclass:: NoteInputWidget 21 | :show-inheritance: 22 | :members: 23 | :exclude-members: mousePressEvent 24 | 25 | NoteInputDialog 26 | ====================================== 27 | 28 | .. currentmodule:: note_input_widget 29 | 30 | .. autoclass:: NoteInputDialog 31 | :show-inheritance: 32 | :members: 33 | :exclude-members: mousePressEvent 34 | -------------------------------------------------------------------------------- /docs/overlay_widget.rst: -------------------------------------------------------------------------------- 1 | Text Overlay Widget 2 | ###################################### 3 | 4 | 5 | Introduction 6 | ====================================== 7 | 8 | .. image:: images/overlay_overview.png 9 | 10 | 11 | The progress overlay module provides a standardized progress overlay widget which 12 | can easily be placed on top of any other :class:`PySide.QtGui.QWidget` to indicate that work is happening 13 | and potentially report messages back to the user. Once you have instantiated and 14 | placed it on top of another widget, you can execute various methods to control its state. 15 | 16 | 17 | 18 | 19 | Sample Code 20 | -------------------------------------- 21 | 22 | The following sample code shows how to import the overlay module, 23 | connect it to a widget and then control the overlay state:: 24 | 25 | # example of how the overlay can be used within your app code 26 | 27 | # import the module - note that this is using the special 28 | # import_framework code so it won't work outside an app 29 | overlay = sgtk.platform.import_framework("tk-framework-qtwidgets", "overlay_widget") 30 | 31 | # now inside your app constructor, create an overlay and parent it to something 32 | self._overlay = overlay.ShotgunOverlayWidget(my_widget) 33 | 34 | # now you can use the overlay to report things to the user 35 | try: 36 | self._overlay.start_spin() 37 | run_some_code_here() 38 | except Exception, e: 39 | self._overlay.show_error_message("An error was reported: %s" % e) 40 | finally: 41 | self._overlay.hide() 42 | 43 | Please note that the example above is crude and for heavy computational work we recommend 44 | an asynchronous approach with a worker thread for better UI responsiveness. 45 | 46 | 47 | .. currentmodule:: overlay_widget 48 | 49 | ShotgunSpinningWidget 50 | ====================================== 51 | 52 | .. autoclass:: ShotgunSpinningWidget 53 | :show-inheritance: 54 | :members: 55 | :exclude-members: paintEvent 56 | 57 | ShotgunOverlayWidget 58 | ====================================== 59 | 60 | .. autoclass:: ShotgunOverlayWidget 61 | :show-inheritance: 62 | :members: 63 | :inherited-members: 64 | :exclude-members: paintEvent 65 | 66 | ShotgunModelOverlayWidget 67 | ====================================== 68 | 69 | .. autoclass:: ShotgunModelOverlayWidget 70 | :show-inheritance: 71 | :members: 72 | :exclude-members: paintEvent 73 | -------------------------------------------------------------------------------- /docs/playback_label.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Playback Label Widget 2 | ############################################## 3 | 4 | The Flow Production Tracking Playback Label is a simple ``QLabel`` override which 5 | makes it easy to indicate that a thumbnail can be played back: 6 | 7 | .. image:: images/playback_label.png 8 | 9 | The widget takes care of analyzing provided Flow Production Tracking data, and in 10 | case the Flow Production Tracking data contains playable media, the playback icon will 11 | automatically appear. Clicking the playback icon will launch a 12 | playback action, currently launching Flow Production Tracking screening room in a web browser. 13 | 14 | .. note:: In order to use this widget in QT designer, you need to wrap 15 | the import in a module. For more information on how to do this, see :ref:`widgets-in-designer`. 16 | 17 | Use the label like this:: 18 | 19 | playback_label = sgtk.platform.import_framework("tk-framework-qtwidgets", "playback_label") 20 | 21 | # construct label object 22 | label = playback_label.ShotgunPlaybackLabel(parent_widget) 23 | 24 | # always use label with a pixmap 25 | label.setPixmap(some_pixmap_object) 26 | 27 | # pass a Flow Production Tracking data dictionary to tell the label what data we are 28 | # operating on. Make sure to include relevant fields - for example, 29 | # if you are passing version data, make sure to include media fields 30 | label.set_shotgun_data(sg_data) 31 | 32 | # we can check if an icon is displayed 33 | print "Playback icon displayed: %s" % label.playbable 34 | 35 | # and we can hook it up to other things 36 | label.playback_clicked.connect(some_callback) 37 | 38 | 39 | 40 | .. currentmodule:: playback_label 41 | 42 | .. autoclass:: ShotgunPlaybackLabel 43 | :show-inheritance: 44 | :members: set_shotgun_data, playable 45 | -------------------------------------------------------------------------------- /docs/screen_grab.rst: -------------------------------------------------------------------------------- 1 | Screen Capture Widget 2 | ############################################# 3 | 4 | The screen capture widgets makes it easy to take screenshots. 5 | Similar to pressing CMD+SHIFT+4/CMD+SHIFT+3 on the mac, this widget implements 6 | several different ways in which the screen can be captured, either via 7 | a cross hair style selection or by grabbing the entire screen. 8 | 9 | .. currentmodule:: screen_grab 10 | 11 | .. autofunction:: get_desktop_pixmap 12 | .. autofunction:: screen_capture 13 | .. autofunction:: screen_capture_file 14 | -------------------------------------------------------------------------------- /docs/search_completer.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Search Completers 2 | ############################################# 3 | 4 | 5 | .. currentmodule:: search_completer 6 | 7 | 8 | Global Search Completer 9 | ======================= 10 | 11 | The global search completer is a QCompleter instance for use with widgets 12 | that allow input of Flow Production Tracking entities. The completer can be customized to 13 | search across a given set of entity types. 14 | 15 | Once a user selects an object, a signal fires to indicate that an entity 16 | was activated. 17 | 18 | .. autoclass:: GlobalSearchCompleter 19 | :members: 20 | :inherited-members: 21 | 22 | 23 | Hierarchical Search Completer 24 | ============================= 25 | 26 | The hierarchical search completer is a QCompleter instance for use with widgets 27 | that allow input of Flow Production Tracking entities. The completer can be customized to search 28 | in a site's complete hierarchy or in a single project. 29 | 30 | Once a user selects an object, a signal fires to indicate that a node from the 31 | hierarchy was selected. 32 | 33 | .. autoclass:: HierarchicalSearchCompleter 34 | :members: 35 | :inherited-members: 36 | -------------------------------------------------------------------------------- /docs/shotgun_menus.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Menus 2 | ############################## 3 | 4 | Introduction 5 | ============ 6 | 7 | The Flow Production Tracking Menus class provide a standardized interface, look and feel for 8 | building menus that interact with Flow Production Tracking. 9 | 10 | .. image:: images/shotgun_menus.png 11 | 12 | ---- 13 | 14 | Flow Production Tracking Menu 15 | ----------------------------- 16 | 17 | .. currentmodule:: shotgun_menus 18 | 19 | .. autoclass:: ShotgunMenu 20 | :show-inheritance: 21 | :members: 22 | 23 | ---- 24 | 25 | Entity Field Menu 26 | ----------------- 27 | 28 | .. autoclass:: EntityFieldMenu 29 | :show-inheritance: 30 | :members: 31 | -------------------------------------------------------------------------------- /docs/shotgun_search_widget.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Search Widget 2 | ############################################# 3 | 4 | The Flow Production Tracking search widgets are similar to the global search and hierarchical 5 | search found in Flow Production Tracking. They return a number of matches based on text 6 | that is being typed in by the user. 7 | 8 | .. image:: images/global_search.png 9 | 10 | Once a user selects an object, a signal fires to indicate the request. 11 | 12 | .. currentmodule:: shotgun_search_widget 13 | 14 | .. autoclass:: GlobalSearchWidget 15 | :members: 16 | :inherited-members: 17 | 18 | .. autoclass:: HierarchicalSearchWidget 19 | :members: 20 | :inherited-members: 21 | -------------------------------------------------------------------------------- /docs/shotgun_widget.rst: -------------------------------------------------------------------------------- 1 | 2 | Flow Production Tracking Widgets 3 | ###################################### 4 | 5 | Widgets to display Flow Production Tracking specific data using a Qt view and delegate, in customizable way. 6 | 7 | .. currentmodule:: shotgun_widget 8 | 9 | .. autoclass:: ShotgunWidget 10 | :show-inheritance: 11 | :members: 12 | 13 | .. autoclass:: ShotgunListWidget 14 | :show-inheritance: 15 | :members: 16 | 17 | .. autoclass:: ShotgunFolderWidget 18 | :show-inheritance: 19 | :members: 20 | -------------------------------------------------------------------------------- /docs/spinner_widget.rst: -------------------------------------------------------------------------------- 1 | Spinner Widget 2 | ###################################### 3 | 4 | 5 | A simple animated progress spinner that can be used to indicate 6 | that something is loading. 7 | 8 | .. currentmodule:: spinner_widget 9 | 10 | .. autoclass:: SpinnerWidget 11 | :show-inheritance: 12 | :inherited-members: 13 | :members: 14 | :exclude-members: closeEvent, hideEvent, paintEvent, showEvent 15 | -------------------------------------------------------------------------------- /docs/version_details.rst: -------------------------------------------------------------------------------- 1 | Flow Production Tracking Version Details Widget 2 | ############################################### 3 | 4 | Introduction 5 | ====================================== 6 | 7 | The version details widget is a Qt widget that renders the activity stream of a 8 | Version entity in one tab, and provides a list of related Version entities in 9 | another. A detailed view of of the Version entity, plus its associated fields, 10 | is provided, with the ability for a user to customize what fields they see. 11 | 12 | .. image:: images/version_details_notes.png 13 | 14 | .. image:: images/version_details_versions.png 15 | 16 | Caching policy 17 | ----------------------------------- 18 | As with the Flow Production Tracking Activity Stream Widget, all the content in the Notes tab is cached, 19 | and the widget requests only the changes since the last update. 20 | 21 | VersionDetailsWidget 22 | ====================================== 23 | 24 | .. currentmodule:: version_details 25 | 26 | .. autoclass:: VersionDetailsWidget 27 | :show-inheritance: 28 | :members: 29 | :inherited-members: 30 | -------------------------------------------------------------------------------- /framework.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import sgtk 12 | 13 | 14 | class QtWidgetFramework(sgtk.platform.Framework): 15 | 16 | ########################################################################################## 17 | # init and destroy 18 | 19 | def init_framework(self): 20 | self.log_debug("%s: Initializing..." % self) 21 | 22 | def destroy_framework(self): 23 | self.log_debug("%s: Destroying..." % self) 24 | -------------------------------------------------------------------------------- /icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/icon_256.png -------------------------------------------------------------------------------- /info.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # Metadata defining the behavior and requirements for this framework 12 | 13 | # expected fields in the configuration file for this engine 14 | configuration: 15 | 16 | # the Shotgun fields that this engine needs in order to operate correctly 17 | requires_shotgun_fields: 18 | 19 | # More verbose description of this item 20 | display_name: "QT Widgets Framework" 21 | description: "A Collection of Reusable QT Widgets to simplify app development." 22 | 23 | # Required minimum versions for this item to run 24 | requires_shotgun_version: 25 | requires_core_version: "v0.21.4" 26 | 27 | 28 | # the frameworks required to run this app 29 | frameworks: 30 | - {"name": "tk-framework-shotgunutils", "version": "v5.x.x", "minimum_version": "v5.10.0"} 31 | -------------------------------------------------------------------------------- /python/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from . import utils 12 | from . import decorators 13 | from . import sg_qicons 14 | from . import sg_qwidgets 15 | from . import playback_label 16 | from . import views 17 | from . import models 18 | from . import overlay_widget 19 | from . import help_screen 20 | from . import spinner_widget 21 | from . import search_widget 22 | from . import elided_label 23 | from . import navigation 24 | from . import note_input_widget 25 | from . import activity_stream 26 | from . import search_completer 27 | from . import shotgun_search_widget 28 | from . import global_search_completer 29 | from . import global_search_widget 30 | from . import screen_grab 31 | from . import shotgun_fields 32 | from . import shotgun_menus 33 | from . import shotgun_widget 34 | from . import version_details 35 | from . import context_selector 36 | from . import delegates 37 | from . import filtering 38 | from . import message_box 39 | -------------------------------------------------------------------------------- /python/activity_stream/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | from .activity_stream import ActivityStreamWidget 13 | from .reply_list import ReplyListWidget 14 | -------------------------------------------------------------------------------- /python/activity_stream/qtwidgets.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Wrapper for the various widgets used from frameworks so that they can be used 13 | easily from with Qt Designer 14 | """ 15 | 16 | import sgtk 17 | 18 | note_input_widget = sgtk.platform.current_bundle().import_module("note_input_widget") 19 | NoteInputWidget = note_input_widget.NoteInputWidget 20 | 21 | playback_label = sgtk.platform.current_bundle().import_module("playback_label") 22 | ShotgunPlaybackLabel = playback_label.ShotgunPlaybackLabel 23 | -------------------------------------------------------------------------------- /python/activity_stream/resources/attachment_group_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | AttachmentGroupWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 577 10 | 182 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 4 19 | 20 | 21 | 36 22 | 23 | 24 | 6 25 | 26 | 27 | 0 28 | 29 | 30 | 0 31 | 32 | 33 | 34 | 35 | 36 | 100 37 | 16 38 | 39 | 40 | 41 | 42 | 100 43 | 16 44 | 45 | 46 | 47 | 48 | 49 | 50 | :/tk_framework_qtwidgets.activity_stream/attachments.png 51 | 52 | 53 | true 54 | 55 | 56 | 57 | 58 | 59 | 60 | QFrame::NoFrame 61 | 62 | 63 | QFrame::Raised 64 | 65 | 66 | 67 | 0 68 | 69 | 70 | 2 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | QFrame::NoFrame 79 | 80 | 81 | QFrame::Raised 82 | 83 | 84 | 85 | 2 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /python/activity_stream/resources/attachment_icon_192px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/attachment_icon_192px.png -------------------------------------------------------------------------------- /python/activity_stream/resources/attachments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/attachments.png -------------------------------------------------------------------------------- /python/activity_stream/resources/client_note_indicator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/client_note_indicator.png -------------------------------------------------------------------------------- /python/activity_stream/resources/collapse_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | CollapseWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 332 10 | 16 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 0 19 | 20 | 21 | 22 | 23 | <i><small>Hiding 8 notes...</small></i> 24 | 25 | 26 | Qt::AlignCenter 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /python/activity_stream/resources/default_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/default_user.png -------------------------------------------------------------------------------- /python/activity_stream/resources/rect_256x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/rect_256x144.png -------------------------------------------------------------------------------- /python/activity_stream/resources/reply_dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ReplyDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 416 10 | 128 11 | 12 | 13 | 14 | Reply 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 22 | 23 | <big>Please enter a Reply:</big> 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 0 32 | 40 33 | 34 | 35 | 36 | Qt::NoFocus 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | NoteInputWidget 45 | QWidget 46 |
..qtwidgets
47 | 1 48 |
49 |
50 | 51 | 52 |
53 | -------------------------------------------------------------------------------- /python/activity_stream/resources/reply_list_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ReplyListWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 418 10 | 401 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 1 19 | 20 | 21 | 1 22 | 23 | 24 | 25 | 26 | true 27 | 28 | 29 | 30 | 31 | 0 32 | 0 33 | 414 34 | 397 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /python/activity_stream/resources/resources.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/activity_stream/resources/resources.graffle -------------------------------------------------------------------------------- /python/activity_stream/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | attachment_icon_192px.png 4 | client_note_indicator.png 5 | rect_256x144.png 6 | default_user.png 7 | attachments.png 8 | 9 | 10 | -------------------------------------------------------------------------------- /python/activity_stream/style.qss: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2015 Shotgun Software Inc. 3 | 4 | CONFIDENTIAL AND PROPRIETARY 5 | 6 | This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 7 | Source Code License included in this distribution package. See LICENSE. 8 | By accessing, using, copying or modifying this work you indicate your 9 | agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 10 | not expressly granted therein are reserved by Shotgun Software Inc. 11 | */ 12 | 13 | 14 | QFrame#frame { 15 | background-color: rgba(200, 200, 200, 5%); 16 | border-radius: 3px; 17 | } 18 | 19 | QFrame#loading_frame { 20 | border: none 21 | } 22 | 23 | QLabel#loading_label { 24 | border: rgba(200, 200, 200, 50%) 25 | } 26 | 27 | #reply_button { 28 | margin-top: 5px; 29 | color: rgba(200, 200, 200, 50%); 30 | text-align: right; 31 | } 32 | 33 | #reply_button:hover { 34 | color: rgb(200, 200, 200); 35 | } 36 | 37 | #date { 38 | color: rgba(200, 200, 200, 40%); 39 | } 40 | 41 | #full_shotgun_stream_button { 42 | border: none; 43 | color: rgba(200, 200, 200, 50%); 44 | padding-left: 60px; 45 | font-size: 9px; 46 | } 47 | 48 | #hide_preview_button { 49 | border: none; 50 | text-align: left; 51 | color: rgba(200, 200, 200, 50%); 52 | font-size: 9px; 53 | } 54 | 55 | #loading_widget { 56 | text-align: center; 57 | color: rgba(200, 200, 200, 50%); 58 | padding-left: 60px; 59 | font-size: 9px; 60 | } 61 | -------------------------------------------------------------------------------- /python/activity_stream/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/activity_stream/ui/collapse_widget.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ################################################################################ 4 | ## Form generated from reading UI file 'collapse_widget.ui' 5 | ## 6 | ## Created by: Qt User Interface Compiler version 5.15.2 7 | ## 8 | ## WARNING! All changes made in this file will be lost when recompiling UI file! 9 | ################################################################################ 10 | 11 | from tank.platform.qt import QtCore 12 | for name, cls in QtCore.__dict__.items(): 13 | if isinstance(cls, type): globals()[name] = cls 14 | 15 | from tank.platform.qt import QtGui 16 | for name, cls in QtGui.__dict__.items(): 17 | if isinstance(cls, type): globals()[name] = cls 18 | 19 | 20 | from . import resources_rc 21 | 22 | class Ui_CollapseWidget(object): 23 | def setupUi(self, CollapseWidget): 24 | if not CollapseWidget.objectName(): 25 | CollapseWidget.setObjectName(u"CollapseWidget") 26 | CollapseWidget.resize(332, 16) 27 | self.verticalLayout = QVBoxLayout(CollapseWidget) 28 | self.verticalLayout.setContentsMargins(0, 0, 0, 0) 29 | self.verticalLayout.setObjectName(u"verticalLayout") 30 | self.label = QLabel(CollapseWidget) 31 | self.label.setObjectName(u"label") 32 | self.label.setAlignment(Qt.AlignCenter) 33 | 34 | self.verticalLayout.addWidget(self.label) 35 | 36 | self.retranslateUi(CollapseWidget) 37 | 38 | QMetaObject.connectSlotsByName(CollapseWidget) 39 | # setupUi 40 | 41 | def retranslateUi(self, CollapseWidget): 42 | CollapseWidget.setWindowTitle(QCoreApplication.translate("CollapseWidget", u"Form", None)) 43 | self.label.setText(QCoreApplication.translate("CollapseWidget", u"Hiding 8 notes...", None)) 44 | # retranslateUi 45 | -------------------------------------------------------------------------------- /python/activity_stream/ui/reply_dialog.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ################################################################################ 4 | ## Form generated from reading UI file 'reply_dialog.ui' 5 | ## 6 | ## Created by: Qt User Interface Compiler version 5.15.2 7 | ## 8 | ## WARNING! All changes made in this file will be lost when recompiling UI file! 9 | ################################################################################ 10 | 11 | from tank.platform.qt import QtCore 12 | for name, cls in QtCore.__dict__.items(): 13 | if isinstance(cls, type): globals()[name] = cls 14 | 15 | from tank.platform.qt import QtGui 16 | for name, cls in QtGui.__dict__.items(): 17 | if isinstance(cls, type): globals()[name] = cls 18 | 19 | 20 | from ..qtwidgets import NoteInputWidget 21 | 22 | class Ui_ReplyDialog(object): 23 | def setupUi(self, ReplyDialog): 24 | if not ReplyDialog.objectName(): 25 | ReplyDialog.setObjectName(u"ReplyDialog") 26 | ReplyDialog.resize(416, 128) 27 | ReplyDialog.setModal(True) 28 | self.verticalLayout = QVBoxLayout(ReplyDialog) 29 | self.verticalLayout.setObjectName(u"verticalLayout") 30 | self.label = QLabel(ReplyDialog) 31 | self.label.setObjectName(u"label") 32 | 33 | self.verticalLayout.addWidget(self.label) 34 | 35 | self.note_widget = NoteInputWidget(ReplyDialog) 36 | self.note_widget.setObjectName(u"note_widget") 37 | self.note_widget.setMinimumSize(QSize(0, 40)) 38 | self.note_widget.setFocusPolicy(Qt.NoFocus) 39 | 40 | self.verticalLayout.addWidget(self.note_widget) 41 | 42 | self.retranslateUi(ReplyDialog) 43 | 44 | QMetaObject.connectSlotsByName(ReplyDialog) 45 | # setupUi 46 | 47 | def retranslateUi(self, ReplyDialog): 48 | ReplyDialog.setWindowTitle(QCoreApplication.translate("ReplyDialog", u"Reply", None)) 49 | self.label.setText(QCoreApplication.translate("ReplyDialog", u"Please enter a Reply:", None)) 50 | # retranslateUi 51 | -------------------------------------------------------------------------------- /python/activity_stream/ui/reply_list_widget.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ################################################################################ 4 | ## Form generated from reading UI file 'reply_list_widget.ui' 5 | ## 6 | ## Created by: Qt User Interface Compiler version 5.15.2 7 | ## 8 | ## WARNING! All changes made in this file will be lost when recompiling UI file! 9 | ################################################################################ 10 | 11 | from tank.platform.qt import QtCore 12 | for name, cls in QtCore.__dict__.items(): 13 | if isinstance(cls, type): globals()[name] = cls 14 | 15 | from tank.platform.qt import QtGui 16 | for name, cls in QtGui.__dict__.items(): 17 | if isinstance(cls, type): globals()[name] = cls 18 | 19 | 20 | from . import resources_rc 21 | 22 | class Ui_ReplyListWidget(object): 23 | def setupUi(self, ReplyListWidget): 24 | if not ReplyListWidget.objectName(): 25 | ReplyListWidget.setObjectName(u"ReplyListWidget") 26 | ReplyListWidget.resize(418, 401) 27 | self.verticalLayout = QVBoxLayout(ReplyListWidget) 28 | self.verticalLayout.setSpacing(1) 29 | self.verticalLayout.setContentsMargins(1, 1, 1, 1) 30 | self.verticalLayout.setObjectName(u"verticalLayout") 31 | self.reply_scroll_area = QScrollArea(ReplyListWidget) 32 | self.reply_scroll_area.setObjectName(u"reply_scroll_area") 33 | self.reply_scroll_area.setWidgetResizable(True) 34 | self.reply_widget = QWidget() 35 | self.reply_widget.setObjectName(u"reply_widget") 36 | self.reply_widget.setGeometry(QRect(0, 0, 414, 397)) 37 | self.reply_layout = QVBoxLayout(self.reply_widget) 38 | self.reply_layout.setObjectName(u"reply_layout") 39 | self.reply_scroll_area.setWidget(self.reply_widget) 40 | 41 | self.verticalLayout.addWidget(self.reply_scroll_area) 42 | 43 | self.retranslateUi(ReplyListWidget) 44 | 45 | QMetaObject.connectSlotsByName(ReplyListWidget) 46 | # setupUi 47 | 48 | def retranslateUi(self, ReplyListWidget): 49 | ReplyListWidget.setWindowTitle(QCoreApplication.translate("ReplyListWidget", u"Form", None)) 50 | # retranslateUi 51 | -------------------------------------------------------------------------------- /python/activity_stream/widget_loading.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from sgtk.platform.qt import QtCore, QtGui 12 | 13 | from .widget_activity_stream_base import ActivityStreamBaseWidget 14 | 15 | from .ui.loading_widget import Ui_LoadingWidget 16 | 17 | 18 | class LoadingWidget(ActivityStreamBaseWidget): 19 | """ 20 | Widget that displays a "loading..." message in the activity stream. 21 | This is typically displayed while widgets updates are still 22 | being loaded in. 23 | """ 24 | 25 | def __init__(self, parent): 26 | """ 27 | :param parent: QT parent object 28 | :type parent: :class:`PySide.QtGui.QWidget` 29 | """ 30 | # first, call the base class and let it do its thing. 31 | ActivityStreamBaseWidget.__init__(self, parent) 32 | # now load in the UI that was created in the UI designer 33 | self.ui = Ui_LoadingWidget() 34 | self.ui.setupUi(self) 35 | -------------------------------------------------------------------------------- /python/context_selector/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .context_widget import ContextWidget 12 | -------------------------------------------------------------------------------- /python/context_selector/qtwidgets.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Wrapper for the various widgets used from frameworks so that they can be used 13 | easily from with Qt Designer 14 | """ 15 | 16 | import sgtk 17 | 18 | global_search_widget = sgtk.platform.current_bundle().import_module( 19 | "global_search_widget" 20 | ) 21 | GlobalSearchWidget = global_search_widget.GlobalSearchWidget 22 | -------------------------------------------------------------------------------- /python/context_selector/resources/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/context_selector/resources/down_arrow.png -------------------------------------------------------------------------------- /python/context_selector/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | search.png 5 | down_arrow.png 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /python/context_selector/resources/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/context_selector/resources/search.png -------------------------------------------------------------------------------- /python/context_selector/style.qss: -------------------------------------------------------------------------------- 1 | /* 2 | # Copyright (c) 2017 Shotgun Software Inc. 3 | # 4 | # CONFIDENTIAL AND PROPRIETARY 5 | # 6 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 7 | # Source Code License included in this distribution package. See LICENSE. 8 | # By accessing, using, copying or modifying this work you indicate your 9 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 10 | # not expressly granted therein are reserved by Shotgun Software Inc. 11 | */ 12 | 13 | #task_search_btn { 14 | border: none; 15 | padding: 4px; 16 | border-radius: 2px; 17 | background-color: rgba(20, 20, 20, 18%); 18 | } 19 | 20 | #task_search_btn:hover { 21 | border: none; 22 | border-radius: 2px; 23 | background-color: rgba(20, 20, 20, 30%); 24 | } 25 | 26 | #task_search_btn:checked { 27 | border: none; 28 | border-radius: 2px; 29 | background-color: rgba(20, 20, 20, 50%); 30 | } 31 | 32 | #link_search_btn { 33 | border: none; 34 | padding: 4px; 35 | border-radius: 2px; 36 | background-color: rgba(20, 20, 20, 18%); 37 | } 38 | 39 | #link_search_btn:hover { 40 | border: none; 41 | border-radius: 2px; 42 | background-color: rgba(20, 20, 20, 30%); 43 | } 44 | 45 | #link_search_btn:checked { 46 | border: none; 47 | border-radius: 2px; 48 | background-color: rgba(20, 20, 20, 50%); 49 | } 50 | 51 | #task_menu_btn { 52 | border: none; 53 | padding: 4px; 54 | border-radius: 2px; 55 | background-color: rgba(20, 20, 20, 18%); 56 | } 57 | 58 | #task_menu_btn::menu-indicator { 59 | image: none; 60 | } 61 | 62 | #task_menu_btn:hover { 63 | border: none; 64 | border-radius: 2px; 65 | background-color: rgba(20, 20, 20, 30%); 66 | } 67 | 68 | #task_menu_btn:checked { 69 | border: none; 70 | border-radius: 2px; 71 | background-color: rgba(20, 20, 20, 50%); 72 | } 73 | 74 | #task_display { 75 | padding-left: 4px; 76 | border: 1px solid rgba(20, 20, 20, 18%); 77 | border-radius: 2px; 78 | } 79 | 80 | #link_display { 81 | padding-left: 4px; 82 | border: 1px solid rgba(20, 20, 20, 18%); 83 | border-radius: 2px; 84 | } 85 | 86 | #task_search { 87 | padding-left: 4px; 88 | border: 1px solid rgba(20, 20, 20, 18%); 89 | border-radius: 2px; 90 | } 91 | 92 | #link_search { 93 | padding-left: 4px; 94 | border: 1px solid rgba(20, 20, 20, 18%); 95 | border-radius: 2px; 96 | } 97 | 98 | 99 | QMenu::item::indicator { 100 | margin-left: 10px; 101 | } 102 | -------------------------------------------------------------------------------- /python/context_selector/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/decorators/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .decorators import wait_cursor 12 | -------------------------------------------------------------------------------- /python/decorators/decorators.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from functools import wraps 12 | 13 | from sgtk.platform.qt import QtGui, QtCore 14 | 15 | 16 | def wait_cursor(func): 17 | """ 18 | Decorator function that overrides the Qt cursor to show the waiting cursor 19 | while a function executes. 20 | 21 | :param func: The function to execute 22 | :type func: function 23 | """ 24 | 25 | @wraps(func) 26 | def wrapper(*args, **kwargs): 27 | QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) 28 | try: 29 | return func(*args, **kwargs) 30 | finally: 31 | QtGui.QApplication.restoreOverrideCursor() 32 | 33 | return wrapper 34 | -------------------------------------------------------------------------------- /python/delegates/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .view_item_delegate import ViewItemDelegate, ViewItemAction 12 | from .thumbnail_view_item_delegate import ThumbnailViewItemDelegate 13 | from .view_item_roles_mixin import ViewItemRolesMixin 14 | -------------------------------------------------------------------------------- /python/elided_label/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .elided_label import ElidedLabel 12 | -------------------------------------------------------------------------------- /python/filtering/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .filter_definition import FilterDefinition, FilterMenuFiltersDefinition 12 | 13 | from .filter_item import FilterItem 14 | from .filter_item_widget import ( 15 | FilterItemWidget, 16 | SearchFilterItemWidget, 17 | ChoicesFilterItemWidget, 18 | ) 19 | 20 | from .filter_menu import FilterMenu, ShotgunFilterMenu 21 | from .filter_menu_button import FilterMenuButton 22 | 23 | # List and tree proxy models to be used with the FilterMenu 24 | from .filter_item_proxy_model import FilterItemProxyModel 25 | from .filter_item_tree_proxy_model import FilterItemTreeProxyModel 26 | -------------------------------------------------------------------------------- /python/global_search_completer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | import sgtk 13 | 14 | # Backward compatibility with the previous version of the API. 15 | search_completer = sgtk.platform.current_bundle().import_module("search_completer") 16 | GlobalSearchCompleter = search_completer.GlobalSearchCompleter 17 | -------------------------------------------------------------------------------- /python/global_search_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2017 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | import sgtk 13 | 14 | shotgun_search_widget = sgtk.platform.current_bundle().import_module( 15 | "shotgun_search_widget" 16 | ) 17 | GlobalSearchWidget = shotgun_search_widget.GlobalSearchWidget 18 | -------------------------------------------------------------------------------- /python/help_screen/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .dialog import show_help_screen 12 | -------------------------------------------------------------------------------- /python/help_screen/resources/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/bg.png -------------------------------------------------------------------------------- /python/help_screen/resources/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/left_arrow.png -------------------------------------------------------------------------------- /python/help_screen/resources/left_arrow_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/left_arrow_hover.png -------------------------------------------------------------------------------- /python/help_screen/resources/left_arrow_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/left_arrow_pressed.png -------------------------------------------------------------------------------- /python/help_screen/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | bg.png 5 | right_arrow_hover.png 6 | right_arrow_pressed.png 7 | right_arrow.png 8 | left_arrow_hover.png 9 | left_arrow_pressed.png 10 | left_arrow.png 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /python/help_screen/resources/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/right_arrow.png -------------------------------------------------------------------------------- /python/help_screen/resources/right_arrow_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/right_arrow_hover.png -------------------------------------------------------------------------------- /python/help_screen/resources/right_arrow_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/help_screen/resources/right_arrow_pressed.png -------------------------------------------------------------------------------- /python/help_screen/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/message_box/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .message_box import MessageBox 12 | -------------------------------------------------------------------------------- /python/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # Proxy model that allows for efficient hierarhcical filtering of a tree-based 12 | # source model 13 | from .hierarchical_filtering_proxy_model import HierarchicalFilteringProxyModel 14 | from .shotgun_sort_filter_proxy_model import ShotgunSortFilterProxyModel 15 | -------------------------------------------------------------------------------- /python/navigation/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .navigation_widget import NavigationWidget 12 | from .breadcrumb_widget import BreadcrumbWidget, Breadcrumb 13 | -------------------------------------------------------------------------------- /python/navigation/breadcrumb_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Breadcrumb widget that displays a list of breadcrumbs. This is currently 13 | just a glorified label but could be extended later to support more 14 | interaction/features if needed. 15 | """ 16 | 17 | import sgtk 18 | from sgtk.platform.qt import QtCore, QtGui 19 | from .ui.breadcrumb_widget import Ui_BreadcrumbWidget 20 | 21 | 22 | class Breadcrumb(object): 23 | """ 24 | Base breadcrumb class that all breadcrumb instances 25 | should be derived from 26 | """ 27 | 28 | def __init__(self, label): 29 | """ 30 | Construction 31 | 32 | :param label: The label for this breadcrumb 33 | """ 34 | self._label = label 35 | 36 | @property 37 | def label(self): 38 | """ 39 | :returns: The label for this breadcrumb 40 | """ 41 | return self._label 42 | 43 | 44 | class BreadcrumbWidget(QtGui.QWidget): 45 | """ 46 | Implementation of the BreadcrumbWidget class 47 | """ 48 | 49 | def __init__(self, parent=None): 50 | """ 51 | :param parent: The parent QWidget for this control 52 | :type parent: :class:`~PySide.QtGui.QWidget` 53 | """ 54 | QtGui.QWidget.__init__(self, parent) 55 | 56 | # set up the UI 57 | self._ui = Ui_BreadcrumbWidget() 58 | self._ui.setupUi(self) 59 | 60 | self._ui.path_label.elide_mode = QtCore.Qt.ElideLeft 61 | self._ui.path_label.setText("") 62 | 63 | def set(self, breadcrumbs): 64 | """ 65 | Populate the breadcrumb control with a list of breadcrumbs 66 | 67 | :param breadcrumbs: A list of breadcrumbs. Each breadcrumb instance should derive 68 | from the Breadcrumb class 69 | :type breadcrumbs: list of :class:`Breadcrumb` 70 | """ 71 | # build a single path from the list of crumbs: 72 | path = "".join( 73 | [crumb.label for crumb in breadcrumbs] 74 | ) 75 | path = "%s" % path 76 | 77 | # and update the label: 78 | self._ui.path_label.setText(path) 79 | -------------------------------------------------------------------------------- /python/navigation/qtwidgets.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Wrapper for the various widgets used from frameworks so that they can be used 13 | easily from with Qt Designer 14 | """ 15 | 16 | import sgtk 17 | 18 | elided_label = sgtk.platform.current_bundle().import_module("elided_label") 19 | ElidedLabel = elided_label.ElidedLabel 20 | -------------------------------------------------------------------------------- /python/navigation/resources/breadcrumb_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | BreadcrumbWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 227 10 | 16 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 0 19 | 20 | 21 | 22 | 23 | 24 | 0 25 | 0 26 | 27 | 28 | 29 | I <span style='color:#2C93E2'>&#9656;</span> Am <span style='color:#2C93E2'>&#9656;</span> Groot 30 | 31 | 32 | 33 | 34 | 35 | 36 | Qt::Horizontal 37 | 38 | 39 | QSizePolicy::Ignored 40 | 41 | 42 | 43 | 0 44 | 0 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ElidedLabel 54 | QLabel 55 |
..qtwidgets
56 |
57 |
58 | 59 | 60 |
61 | -------------------------------------------------------------------------------- /python/navigation/resources/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/home.png -------------------------------------------------------------------------------- /python/navigation/resources/home_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/home_disabled.png -------------------------------------------------------------------------------- /python/navigation/resources/home_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/home_hover.png -------------------------------------------------------------------------------- /python/navigation/resources/home_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/home_pressed.png -------------------------------------------------------------------------------- /python/navigation/resources/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/left_arrow.png -------------------------------------------------------------------------------- /python/navigation/resources/left_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/left_arrow_disabled.png -------------------------------------------------------------------------------- /python/navigation/resources/left_arrow_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/left_arrow_hover.png -------------------------------------------------------------------------------- /python/navigation/resources/left_arrow_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/left_arrow_pressed.png -------------------------------------------------------------------------------- /python/navigation/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | left_arrow_disabled.png 4 | left_arrow_hover.png 5 | left_arrow_pressed.png 6 | left_arrow.png 7 | right_arrow_disabled.png 8 | right_arrow_hover.png 9 | right_arrow_pressed.png 10 | right_arrow.png 11 | home_disabled.png 12 | home_hover.png 13 | home_pressed.png 14 | home.png 15 | 16 | 17 | -------------------------------------------------------------------------------- /python/navigation/resources/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/right_arrow.png -------------------------------------------------------------------------------- /python/navigation/resources/right_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/right_arrow_disabled.png -------------------------------------------------------------------------------- /python/navigation/resources/right_arrow_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/right_arrow_hover.png -------------------------------------------------------------------------------- /python/navigation/resources/right_arrow_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/navigation/resources/right_arrow_pressed.png -------------------------------------------------------------------------------- /python/navigation/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/navigation/ui/breadcrumb_widget.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ################################################################################ 4 | ## Form generated from reading UI file 'breadcrumb_widget.ui' 5 | ## 6 | ## Created by: Qt User Interface Compiler version 5.15.2 7 | ## 8 | ## WARNING! All changes made in this file will be lost when recompiling UI file! 9 | ################################################################################ 10 | 11 | from tank.platform.qt import QtCore 12 | for name, cls in QtCore.__dict__.items(): 13 | if isinstance(cls, type): globals()[name] = cls 14 | 15 | from tank.platform.qt import QtGui 16 | for name, cls in QtGui.__dict__.items(): 17 | if isinstance(cls, type): globals()[name] = cls 18 | 19 | 20 | from ..qtwidgets import ElidedLabel 21 | 22 | class Ui_BreadcrumbWidget(object): 23 | def setupUi(self, BreadcrumbWidget): 24 | if not BreadcrumbWidget.objectName(): 25 | BreadcrumbWidget.setObjectName(u"BreadcrumbWidget") 26 | BreadcrumbWidget.resize(227, 16) 27 | self.horizontalLayout = QHBoxLayout(BreadcrumbWidget) 28 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 29 | self.horizontalLayout.setObjectName(u"horizontalLayout") 30 | self.path_label = ElidedLabel(BreadcrumbWidget) 31 | self.path_label.setObjectName(u"path_label") 32 | sizePolicy = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Preferred) 33 | sizePolicy.setHorizontalStretch(0) 34 | sizePolicy.setVerticalStretch(0) 35 | sizePolicy.setHeightForWidth(self.path_label.sizePolicy().hasHeightForWidth()) 36 | self.path_label.setSizePolicy(sizePolicy) 37 | 38 | self.horizontalLayout.addWidget(self.path_label) 39 | 40 | self.horizontalSpacer = QSpacerItem(0, 0, QSizePolicy.Ignored, QSizePolicy.Minimum) 41 | 42 | self.horizontalLayout.addItem(self.horizontalSpacer) 43 | 44 | self.retranslateUi(BreadcrumbWidget) 45 | 46 | QMetaObject.connectSlotsByName(BreadcrumbWidget) 47 | # setupUi 48 | 49 | def retranslateUi(self, BreadcrumbWidget): 50 | BreadcrumbWidget.setWindowTitle(QCoreApplication.translate("BreadcrumbWidget", u"Form", None)) 51 | self.path_label.setText(QCoreApplication.translate("BreadcrumbWidget", u"I Am Groot", None)) 52 | # retranslateUi 53 | -------------------------------------------------------------------------------- /python/note_input_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | from .widget import NoteInputWidget 13 | from .dialog import NoteInputDialog 14 | -------------------------------------------------------------------------------- /python/note_input_widget/dialog.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from sgtk.platform.qt import QtCore, QtGui 12 | from . import NoteInputWidget 13 | 14 | 15 | class NoteInputDialog(QtGui.QDialog): 16 | """ 17 | A dialog wrapper for the :class:`NoteInputWidget` widget. 18 | """ 19 | 20 | def __init__(self, *args, **kwargs): 21 | """ 22 | Constructor. 23 | """ 24 | super().__init__(*args, **kwargs) 25 | 26 | self.setWindowFlags(self.windowFlags() | QtCore.Qt.FramelessWindowHint) 27 | 28 | self.widget = NoteInputWidget(None) 29 | self.layout = QtGui.QVBoxLayout() 30 | self.layout.setContentsMargins(3, 3, 3, 3) 31 | self.layout.addWidget(QtGui.QLabel("Please enter a new note:")) 32 | self.layout.addWidget(self.widget) 33 | self.setLayout(self.layout) 34 | 35 | self.widget.entity_created.connect(self.accept) 36 | self.widget.close_clicked.connect(self.reject) 37 | 38 | self.widget.open_editor() 39 | 40 | def __getattr__(self, name): 41 | return getattr(self.widget, name) 42 | -------------------------------------------------------------------------------- /python/note_input_widget/resources/camera_hl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/note_input_widget/resources/camera_hl.png -------------------------------------------------------------------------------- /python/note_input_widget/resources/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/note_input_widget/resources/minus.png -------------------------------------------------------------------------------- /python/note_input_widget/resources/paper_clip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/note_input_widget/resources/paper_clip.png -------------------------------------------------------------------------------- /python/note_input_widget/resources/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/note_input_widget/resources/plus.png -------------------------------------------------------------------------------- /python/note_input_widget/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | minus.png 4 | plus.png 5 | paper_clip.png 6 | camera_hl.png 7 | trash.png 8 | 9 | 10 | -------------------------------------------------------------------------------- /python/note_input_widget/resources/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/note_input_widget/resources/trash.png -------------------------------------------------------------------------------- /python/note_input_widget/sg_qwidgets.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 Autodesk Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk Inc. 10 | 11 | import sgtk 12 | 13 | sg_qwidgets = sgtk.platform.current_bundle().import_module("sg_qwidgets") 14 | SGSubmitPushButton = sg_qwidgets.SGSubmitPushButton 15 | SGCancelPushButton = sg_qwidgets.SGCancelPushButton 16 | -------------------------------------------------------------------------------- /python/note_input_widget/style.qss: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2015 Shotgun Software Inc. 3 | 4 | CONFIDENTIAL AND PROPRIETARY 5 | 6 | This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 7 | Source Code License included in this distribution package. See LICENSE. 8 | By accessing, using, copying or modifying this work you indicate your 9 | agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 10 | not expressly granted therein are reserved by Shotgun Software Inc. 11 | */ 12 | 13 | #new_note_frame, #reply_frame { 14 | background-color: none; 15 | } 16 | 17 | #new_note_placeholder, #reply_placeholder { 18 | color: rgba(200, 200, 200, 50%); 19 | } 20 | 21 | #text_entry, #attachment_list_tree { 22 | background-color: rgba(0,0,0, 20%); 23 | border: 1px solid rgba(255,255,255, 20%); 24 | border-radius: 3px; 25 | } 26 | 27 | #new_note_frame { 28 | border: none; 29 | } 30 | -------------------------------------------------------------------------------- /python/note_input_widget/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/overlay_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .shotgun_overlay_widget import ShotgunOverlayWidget 12 | from .shotgun_model_overlay_widget import ShotgunModelOverlayWidget 13 | from .shotgun_spinning_widget import ShotgunSpinningWidget 14 | -------------------------------------------------------------------------------- /python/overlay_widget/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | sg_logo.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /python/overlay_widget/resources/sg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/overlay_widget/resources/sg_logo.png -------------------------------------------------------------------------------- /python/overlay_widget/style.qss: -------------------------------------------------------------------------------- 1 | background-color: #1B1B1B 2 | -------------------------------------------------------------------------------- /python/overlay_widget/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/playback_label/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | from .playback_label import ShotgunPlaybackLabel 13 | -------------------------------------------------------------------------------- /python/playback_label/resources/play_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/playback_label/resources/play_icon.png -------------------------------------------------------------------------------- /python/playback_label/resources/play_icon_inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/playback_label/resources/play_icon_inactive.png -------------------------------------------------------------------------------- /python/playback_label/resources/resources.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/playback_label/resources/resources.graffle -------------------------------------------------------------------------------- /python/playback_label/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | play_icon.png 4 | play_icon_inactive.png 5 | 6 | 7 | -------------------------------------------------------------------------------- /python/playback_label/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/screen_grab/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | from .screen_grab import ( 13 | ScreenGrabber, 14 | get_desktop_pixmap, 15 | screen_capture, 16 | screen_capture_file, 17 | ) 18 | -------------------------------------------------------------------------------- /python/search_completer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .global_search_completer import GlobalSearchCompleter 12 | from .hierarchical_search_completer import HierarchicalSearchCompleter 13 | -------------------------------------------------------------------------------- /python/search_completer/resources/keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/keyboard.png -------------------------------------------------------------------------------- /python/search_completer/resources/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/loading.png -------------------------------------------------------------------------------- /python/search_completer/resources/modes.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/modes.graffle -------------------------------------------------------------------------------- /python/search_completer/resources/no_match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/no_match.png -------------------------------------------------------------------------------- /python/search_completer/resources/no_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/no_thumbnail.png -------------------------------------------------------------------------------- /python/search_completer/resources/rect_512x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_completer/resources/rect_512x400.png -------------------------------------------------------------------------------- /python/search_completer/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | rect_512x400.png 4 | keyboard.png 5 | loading.png 6 | no_match.png 7 | no_thumbnail.png 8 | 9 | 10 | -------------------------------------------------------------------------------- /python/search_completer/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/search_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .search_widget import SearchWidget 12 | -------------------------------------------------------------------------------- /python/search_widget/resources/clear_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_widget/resources/clear_search.png -------------------------------------------------------------------------------- /python/search_widget/resources/clear_search_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_widget/resources/clear_search_hover.png -------------------------------------------------------------------------------- /python/search_widget/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | clear_search_hover.png 4 | clear_search.png 5 | search.png 6 | 7 | 8 | -------------------------------------------------------------------------------- /python/search_widget/resources/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/search_widget/resources/search.png -------------------------------------------------------------------------------- /python/search_widget/resources/search_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | SearchWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 312 10 | 24 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 0 19 | 20 | 21 | 0 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 24 29 | 30 | 31 | 32 | #search_edit { 33 | background-image: url(:/tk-framework-qtwidgets/search_widget/search.png); 34 | background-repeat: no-repeat; 35 | background-position: center left; 36 | border-radius: 5px; 37 | padding-left:20px; 38 | padding-right:20px; 39 | } 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /python/search_widget/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/search_widget/ui/search_widget.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | ################################################################################ 4 | ## Form generated from reading UI file 'search_widget.ui' 5 | ## 6 | ## Created by: Qt User Interface Compiler version 5.15.2 7 | ## 8 | ## WARNING! All changes made in this file will be lost when recompiling UI file! 9 | ################################################################################ 10 | 11 | from tank.platform.qt import QtCore 12 | for name, cls in QtCore.__dict__.items(): 13 | if isinstance(cls, type): globals()[name] = cls 14 | 15 | from tank.platform.qt import QtGui 16 | for name, cls in QtGui.__dict__.items(): 17 | if isinstance(cls, type): globals()[name] = cls 18 | 19 | 20 | from . import resources_rc 21 | 22 | class Ui_SearchWidget(object): 23 | def setupUi(self, SearchWidget): 24 | if not SearchWidget.objectName(): 25 | SearchWidget.setObjectName(u"SearchWidget") 26 | SearchWidget.resize(312, 24) 27 | self.horizontalLayout = QHBoxLayout(SearchWidget) 28 | self.horizontalLayout.setSpacing(0) 29 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 30 | self.horizontalLayout.setObjectName(u"horizontalLayout") 31 | self.search_edit = QLineEdit(SearchWidget) 32 | self.search_edit.setObjectName(u"search_edit") 33 | self.search_edit.setMinimumSize(QSize(0, 24)) 34 | self.search_edit.setStyleSheet(u"#search_edit {\n" 35 | "background-image: url(:/tk-framework-qtwidgets/search_widget/search.png);\n" 36 | "background-repeat: no-repeat;\n" 37 | "background-position: center left;\n" 38 | "border-radius: 5px;\n" 39 | "padding-left:20px;\n" 40 | "padding-right:20px;\n" 41 | "}") 42 | 43 | self.horizontalLayout.addWidget(self.search_edit) 44 | 45 | self.horizontalLayout.setStretch(0, 1) 46 | 47 | self.retranslateUi(SearchWidget) 48 | 49 | QMetaObject.connectSlotsByName(SearchWidget) 50 | # setupUi 51 | 52 | def retranslateUi(self, SearchWidget): 53 | SearchWidget.setWindowTitle(QCoreApplication.translate("SearchWidget", u"Form", None)) 54 | # retranslateUi 55 | -------------------------------------------------------------------------------- /python/sg_qicons/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .sg_qicon import SGQIcon 12 | -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/bullet_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/bullet_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/bullet_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/bullet_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_green_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_green_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_green_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_green_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_green_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_green_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_green_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_green_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_red_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_red_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_red_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_red_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/check_mark_red_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/check_mark_red_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active-disabled_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active-disabled_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active-disabled_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active-disabled_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active-disabled_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active-disabled_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active-disabled_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active-disabled_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-active_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-active_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive-disabled_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive-disabled_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive-disabled_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive-disabled_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive-disabled_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive-disabled_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive-disabled_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive-disabled_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/filter-inactive_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/filter-inactive_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/gear_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/gear_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/gear_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/gear_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/gear_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/gear_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/gear_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/gear_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/info_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/info_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/info_active_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/info_active_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/info_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/info_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/info_inactive_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/info_inactive_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/lock_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/lock_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/lock_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/lock_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/lock_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/lock_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/lock_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/lock_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active-disabled_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active-disabled_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active-disabled_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active-disabled_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active-disabled_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active-disabled_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active-disabled_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active-disabled_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-active_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-active_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive-disabled_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive-disabled_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive-disabled_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive-disabled_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive-disabled_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive-disabled_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive-disabled_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive-disabled_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh-inactive_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh-inactive_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_grey_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_grey_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_grey_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_grey_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_grey_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_grey_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_grey_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_grey_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_red_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_red_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/refresh_red_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/refresh_red_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/spinning-wheel_16x16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/spinning-wheel_16x16.gif -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/spinning-wheel_20x20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/spinning-wheel_20x20.gif -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/spinning-wheel_32x32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/spinning-wheel_32x32.gif -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/spinning-wheel_40x40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/spinning-wheel_40x40.gif -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/toggle_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/toggle_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/toggle_active_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/toggle_active_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/toggle_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/toggle_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/toggle_inactive_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/toggle_inactive_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/tree_arrow_collapsed_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/tree_arrow_collapsed_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/tree_arrow_expanded_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/tree_arrow_expanded_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_error_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_error_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_error_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_error_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_error_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_error_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_ok_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_ok_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_ok_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_ok_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_ok_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_ok_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_ok_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_ok_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_warning_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_warning_16x16.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_warning_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_warning_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/validation_warning_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/validation_warning_32x32.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_grid_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_grid_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_grid_active_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_grid_active_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_grid_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_grid_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_grid_inactive_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_grid_inactive_40x40.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_list_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_list_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_list_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_list_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_thumbnail_active_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_thumbnail_active_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/resources/icons/view_thumbnail_inactive_20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/sg_qicons/resources/icons/view_thumbnail_inactive_20x20.png -------------------------------------------------------------------------------- /python/sg_qicons/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/sg_qwidgets/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autodesk, Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the ShotGrid Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the ShotGrid Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk, Inc. 10 | 11 | from .sg_qwidgets import ( 12 | SGQToolButton, 13 | SGQWidget, 14 | SGQCheckBox, 15 | SGQComboBox, 16 | SGQCommandLinkButton, 17 | SGQDateEdit, 18 | SGQDateTimeEdit, 19 | SGQDial, 20 | SGQDoubleSpinBox, 21 | SGQFocusFrame, 22 | SGQFontComboBox, 23 | SGQLCDNumber, 24 | SGQLabel, 25 | SGQLineEdit, 26 | SGQTextEdit, 27 | SGQMenu, 28 | SGQProgressBar, 29 | SGQPushButton, 30 | SGSubmitPushButton, 31 | SGCancelPushButton, 32 | SGQRadioButton, 33 | SGQScrollArea, 34 | SGQScrollBar, 35 | SGQSizeGrip, 36 | SGQSlider, 37 | SGQSpinBox, 38 | SGQTabBar, 39 | SGQTabWidget, 40 | SGQTimeEdit, 41 | SGQToolBox, 42 | SGQCalendarWidget, 43 | SGQColumnView, 44 | SGQDataWidgetMapper, 45 | SGQListView, 46 | SGQTableView, 47 | SGQTreeView, 48 | SGQUndoView, 49 | SGQDialog, 50 | SGQDockWidget, 51 | SGQFrame, 52 | SGQButtonGroup, 53 | SGQGroupBox, 54 | SGQSplitter, 55 | SGQSplitterHandle, 56 | SGQStackedWidget, 57 | SGQActionGroup, 58 | SGQMenuBar, 59 | SGQStatusBar, 60 | SGQWidgetAction, 61 | SGQToolBar, 62 | SGQListWidget, 63 | SGQListWidgetItem, 64 | SGQTableWidget, 65 | SGQTableWidgetItem, 66 | SGQTreeWidget, 67 | SGQTreeWidgetItem, 68 | ) 69 | -------------------------------------------------------------------------------- /python/shotgun_fields/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .shotgun_field_manager import ShotgunFieldManager 12 | from .shotgun_field_meta import ShotgunFieldMeta 13 | -------------------------------------------------------------------------------- /python/shotgun_fields/checkbox_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from sgtk.platform.qt import QtCore, QtGui 12 | from .shotgun_field_meta import ShotgunFieldMeta 13 | 14 | 15 | class CheckBoxWidget(QtGui.QCheckBox, metaclass=ShotgunFieldMeta): 16 | """ 17 | Displays a ``checkbox`` field value as returned by the Shotgun API. 18 | """ 19 | 20 | _DISPLAY_TYPE = "checkbox" 21 | _EDITOR_TYPE = "checkbox" 22 | 23 | def enable_editing(self, enable): 24 | """ 25 | Enable or disable editing of the widget. 26 | 27 | This is provided as required for widgets that are used as both editor 28 | and display. 29 | 30 | :param bool enable: ``True`` to enable, ``False`` to disable 31 | """ 32 | self.setEnabled(enable) 33 | 34 | def setup_widget(self): 35 | """ 36 | Prepare the widget for display. 37 | 38 | Called by the metaclass during initialization. 39 | """ 40 | self.stateChanged.connect(self._on_state_changed) 41 | 42 | def _display_default(self): 43 | """ 44 | Display the default value of the widget. 45 | """ 46 | self.setCheckState(QtCore.Qt.Unchecked) 47 | 48 | def _display_value(self, value): 49 | """ 50 | Displays the value as returned by the Shotgun API. 51 | 52 | :param bool value: The value displayed by the widget 53 | """ 54 | 55 | # check or uncheck the widget 56 | if bool(value): 57 | self.setCheckState(QtCore.Qt.Checked) 58 | else: 59 | self.setCheckState(QtCore.Qt.Unchecked) 60 | 61 | def _on_state_changed(self, state): 62 | """ 63 | Update the stored value as the widget state is changed 64 | 65 | :param int state: Qt enum for check/unchecked 66 | """ 67 | if not isinstance(state, QtCore.Qt.CheckState): 68 | # Pyside6 docs says `state` is still an int. 69 | # https://doc.qt.io/qtforpython-6.5/PySide6/QtWidgets/QCheckBox.html 70 | # However, it seems they're migrating to use Enums everywhere. 71 | # Let's convert use the value to create a QtCore.Qt.CheckState enum. 72 | state = QtCore.Qt.CheckState(state) 73 | 74 | new_value = state == QtCore.Qt.Checked 75 | if self._value != new_value: 76 | # set the value internally 77 | self.set_value(new_value) 78 | -------------------------------------------------------------------------------- /python/shotgun_fields/duration_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .label_base_widget import LabelBaseWidget 12 | from .shotgun_field_meta import ShotgunFieldMeta 13 | 14 | 15 | class DurationWidget(LabelBaseWidget, metaclass=ShotgunFieldMeta): 16 | """ 17 | Display a ``duration`` field value as returned by the Shotgun API. 18 | """ 19 | 20 | _DISPLAY_TYPE = "duration" 21 | -------------------------------------------------------------------------------- /python/shotgun_fields/list_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import sgtk 12 | from sgtk.platform.qt import QtGui, QtCore 13 | from .label_base_widget import LabelBaseWidget 14 | from .shotgun_field_meta import ShotgunFieldMeta 15 | 16 | shotgun_globals = sgtk.platform.import_framework( 17 | "tk-framework-shotgunutils", "shotgun_globals" 18 | ) 19 | 20 | 21 | class ListWidget(LabelBaseWidget, metaclass=ShotgunFieldMeta): 22 | """ 23 | Display a ``list`` field value as returned by the Shotgun API. 24 | """ 25 | 26 | _DISPLAY_TYPE = "list" 27 | 28 | 29 | class ListEditorWidget(QtGui.QComboBox, metaclass=ShotgunFieldMeta): 30 | """ 31 | Allows editing of a ``list`` field value as returned by the Shotgun API. 32 | """ 33 | 34 | _EDITOR_TYPE = "list" 35 | _IMMEDIATE_APPLY = True 36 | 37 | def get_value(self): 38 | """ 39 | :return: The internal value being displayed by the widget. 40 | """ 41 | return self._get_safe_str(self.currentText()) 42 | 43 | def setup_widget(self): 44 | """ 45 | Prepare the widget for display. 46 | 47 | Called by the metaclass during initialization. Adds the valid values to 48 | the list and connects the ``activated`` signal. 49 | """ 50 | self.addItem("") 51 | 52 | valid_values = shotgun_globals.get_valid_values( 53 | self._entity_type, self._field_name 54 | ) 55 | self.addItems(valid_values) 56 | 57 | self.activated.connect(lambda i: self.value_changed.emit()) 58 | 59 | def _begin_edit(self): 60 | """ 61 | Prepare the widget for editing by showing the popup. 62 | """ 63 | self.showPopup() 64 | 65 | def _display_default(self): 66 | """ 67 | Display the default value of the widget. 68 | """ 69 | self.setCurrentIndex(0) 70 | 71 | def _display_value(self, value): 72 | """ 73 | Set the value displayed by the widget. 74 | 75 | :param value: The value returned by the Shotgun API to be displayed 76 | """ 77 | if value is None: 78 | self.clearEditText() 79 | 80 | index = self.findText(value) 81 | if index != -1: 82 | self.setCurrentIndex(index) 83 | -------------------------------------------------------------------------------- /python/shotgun_fields/number_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import locale 12 | from sgtk.platform.qt import QtGui, QtCore 13 | from .label_base_widget import LabelBaseWidget 14 | from .shotgun_field_meta import ShotgunFieldMeta 15 | 16 | 17 | class NumberWidget(LabelBaseWidget, metaclass=ShotgunFieldMeta): 18 | """ 19 | Display a ``number`` field value as returned by the Shotgun API. 20 | """ 21 | 22 | _DISPLAY_TYPE = "number" 23 | 24 | def _string_value(self, value): 25 | """ 26 | Convert the Shotgun value for this field into a string 27 | 28 | :param int value: The value to convert into a string 29 | """ 30 | return locale.format("%d", value, grouping=True) 31 | 32 | 33 | class NumberEditorWidget(QtGui.QSpinBox, metaclass=ShotgunFieldMeta): 34 | """ 35 | Allows editing of a ``number`` field value as returned by the Shotgun API. 36 | 37 | Pressing ``Enter`` or ``Return`` when the widget has focus will cause the 38 | value to be applied and the ``value_changed`` signal to be emitted. 39 | """ 40 | 41 | _EDITOR_TYPE = "number" 42 | 43 | def get_value(self): 44 | """ 45 | :return: The internal value being displayed by the widget. 46 | """ 47 | return self.value() 48 | 49 | def keyPressEvent(self, event): 50 | """ 51 | Provides shortcuts for applying modified values. 52 | 53 | :param event: The key press event object 54 | :type event: :class:`~PySide.QtGui.QKeyEvent` 55 | """ 56 | if event.key() in [QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return]: 57 | self.value_changed.emit() 58 | else: 59 | super().keyPressEvent(event) 60 | 61 | def setup_widget(self): 62 | """ 63 | Prepare the widget for display. 64 | 65 | Called by the metaclass during initialization. 66 | """ 67 | # Qt Spinner's max/min are int32 max/min values 68 | self.setMaximum(2147483647) 69 | self.setMinimum(-2147483648) 70 | self.setMinimumWidth(100) 71 | 72 | def _display_default(self): 73 | """ 74 | Display the default value of the widget. 75 | """ 76 | self.clear() 77 | 78 | def _display_value(self, value): 79 | """ 80 | Set the value displayed by the widget. 81 | 82 | :param value: The value returned by the Shotgun API to be displayed 83 | """ 84 | self.setValue(value) 85 | -------------------------------------------------------------------------------- /python/shotgun_fields/resources/apply_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/apply_value.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/edit_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/edit_close.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/edit_field.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/edit_field.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/image_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/image_menu.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/link_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/link_local.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/link_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/link_menu.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/link_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/link_upload.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/link_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/link_web.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/no_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/no_thumbnail.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/not_editable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/not_editable.png -------------------------------------------------------------------------------- /python/shotgun_fields/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | apply_value.png 4 | edit_close.png 5 | edit_field.png 6 | image_menu.png 7 | link_local.png 8 | link_menu.png 9 | link_upload.png 10 | link_web.png 11 | no_thumbnail.png 12 | not_editable.png 13 | tag.png 14 | 15 | 16 | -------------------------------------------------------------------------------- /python/shotgun_fields/resources/tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_fields/resources/tag.png -------------------------------------------------------------------------------- /python/shotgun_fields/text_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .label_base_widget import ElidedLabelBaseWidget 12 | from .shotgun_field_meta import ShotgunFieldMeta 13 | from sgtk.platform.qt import QtCore, QtGui 14 | 15 | 16 | class TextWidget(ElidedLabelBaseWidget, metaclass=ShotgunFieldMeta): 17 | """ 18 | Display a ``text`` field value as returned by the Shotgun API. 19 | """ 20 | 21 | _DISPLAY_TYPE = "text" 22 | 23 | 24 | class TextEditorWidget(QtGui.QTextEdit, metaclass=ShotgunFieldMeta): 25 | """ 26 | Allows editing of a ``text`` field value as returned by the Shotgun API. 27 | """ 28 | 29 | _EDITOR_TYPE = "text" 30 | 31 | def get_value(self): 32 | """ 33 | :return: The internal value being displayed by the widget. 34 | """ 35 | return self._get_safe_str(self.toPlainText()) 36 | 37 | def keyPressEvent(self, event): 38 | """ 39 | Provides shortcuts for applying modified values. 40 | 41 | :param event: The key press event object 42 | :type event: :class:`~PySide.QtGui.QKeyEvent` 43 | 44 | Ctrl+Enter or Ctrl+Return will trigger the emission of the ``value_changed`` 45 | signal. 46 | """ 47 | if ( 48 | event.key() in [QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return] 49 | and event.modifiers() & QtCore.Qt.ControlModifier 50 | ): 51 | self.value_changed.emit() 52 | event.ignore() 53 | return 54 | 55 | super().keyPressEvent(event) 56 | 57 | def setup_widget(self): 58 | """ 59 | Prepare the widget for display. 60 | 61 | Called by the metaclass during initialization. 62 | """ 63 | self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) 64 | 65 | def _display_default(self): 66 | """ 67 | Display the default value of the widget. 68 | """ 69 | self.clear() 70 | 71 | def _display_value(self, value): 72 | """ 73 | Set the value displayed by the widget. 74 | 75 | :param value: The value returned by the Shotgun API to be displayed 76 | """ 77 | self.setText(self._string_value(value)) 78 | 79 | def _string_value(self, value): 80 | """ 81 | Ensure the value to be displayed is a string. 82 | 83 | :param value: The value from Shotgun 84 | """ 85 | return str(value) 86 | -------------------------------------------------------------------------------- /python/shotgun_fields/timecode_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .label_base_widget import LabelBaseWidget 12 | from .shotgun_field_meta import ShotgunFieldMeta 13 | 14 | 15 | class TimecodeWidget(LabelBaseWidget, metaclass=ShotgunFieldMeta): 16 | """ 17 | Display a ``timecode`` field value as returned by the Shotgun API. 18 | """ 19 | 20 | _DISPLAY_TYPE = "timecode" 21 | -------------------------------------------------------------------------------- /python/shotgun_fields/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/shotgun_fields/url_template_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import sgtk 12 | from .label_base_widget import ElidedLabelBaseWidget 13 | from .shotgun_field_meta import ShotgunFieldMeta 14 | 15 | 16 | class UrlTemplateWidget(ElidedLabelBaseWidget, metaclass=ShotgunFieldMeta): 17 | """ 18 | Display a ``url_template`` field value as returned by the Shotgun API. 19 | """ 20 | 21 | _DISPLAY_TYPE = "url_template" 22 | 23 | def _string_value(self, value): 24 | """ 25 | Convert the Shotgun value for this field into a string 26 | 27 | :param str value: The url value to convert into a string 28 | """ 29 | utils = self._bundle.import_module("utils") 30 | return utils.get_hyperlink_html(url=value, name=value) 31 | -------------------------------------------------------------------------------- /python/shotgun_fields/util.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | def check_project_search_supported(sg_connection): 13 | """ 14 | A compatibility check to see if the current version of PTR has the fix 15 | that allows text_search to be run for projects. 16 | 17 | :returns: ``True`` if project search is possible, ``False`` otherwise. 18 | 19 | 20 | .. warning:: 21 | 22 | This method is not part of the public API. It will be removed without 23 | warning in the future. 24 | """ 25 | 26 | server_caps = sg_connection.server_caps 27 | 28 | # make sure we're greater than or equal to PTR v7.0.2 29 | return ( 30 | hasattr(sg_connection, "server_caps") 31 | and server_caps.version 32 | and server_caps.version >= (7, 0, 2) 33 | ) 34 | -------------------------------------------------------------------------------- /python/shotgun_menus/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .entity_field_menu import EntityFieldMenu 12 | from .shotgun_menu import ShotgunMenu 13 | -------------------------------------------------------------------------------- /python/shotgun_menus/resources/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_menus/resources/check.png -------------------------------------------------------------------------------- /python/shotgun_menus/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | check.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /python/shotgun_menus/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | -------------------------------------------------------------------------------- /python/shotgun_menus/ui/resources_rc.py: -------------------------------------------------------------------------------- 1 | # Resource object code (Python 3) 2 | # Created by: object code 3 | # Created by: The Resource Compiler for Qt version 5.15.2 4 | # WARNING! All changes made in this file will be lost! 5 | 6 | from tank.platform.qt import QtCore 7 | 8 | qt_resource_data = b"\ 9 | \x00\x00\x01q\ 10 | \x89\ 11 | PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ 12 | \x00\x00\x0c\x00\x00\x00\x0c\x08\x04\x00\x00\x00\xfc|\x94l\ 13 | \x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\ 14 | \x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\ 15 | \x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\ 16 | \x00\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x02\ 17 | bKGD\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09pH\ 18 | Ys\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\ 19 | \x00\x00\x07tIME\x07\xe3\x0a\x1e\x123'\xe8\xb1\ 20 | \x5c\xc4\x00\x00\x00dIDAT\x18\xd3u\xd0\xb1\x0d\ 21 | \x800\x0cD\xd1o\xc4\x00\x19\x85\x8e\x1661\x1b\xb0\ 22 | QX\xe7h\x18\xc9\x14 \x22\x02q\xf9N\xb2|\xb6\ 23 | \xa01\x7f\x81\x12X`5g\x06\xe6\x9e/;0\x11\ 24 | (i-\xacP\xc8\x81@\x87B\xb9b,\xd8\x9d\x0c\ 25 | l\x80\x03\xcb\xb8\xdd\x81\xa1+\xa2\xf0s\xae\xbc,\xa9\ 26 | z\xc8_\x8c\xb5\x9aw\xad\x8f\x9c\xd0T1\x0f\xb3A\ 27 | '>\x00\x00\x00%tEXtdate:c\ 28 | reate\x002019-10-07\ 29 | T12:39:04+00:00 \ 30 | g\xe3\xd9\x00\x00\x00%tEXtdate:\ 31 | modify\x002019-10-0\ 32 | 7T12:39:04+00:00\ 33 | Q:[e\x00\x00\x00\x00IEND\xaeB`\x82\ 34 | \ 35 | " 36 | 37 | qt_resource_name = b"\ 38 | \x00$\ 39 | \x06\x906\x03\ 40 | \x00t\ 41 | \x00k\x00_\x00f\x00r\x00a\x00m\x00e\x00w\x00o\x00r\x00k\x00_\x00q\x00t\x00w\x00i\ 42 | \x00d\x00g\x00e\x00t\x00s\x00.\x00s\x00h\x00o\x00t\x00g\x00u\x00n\x00_\x00m\x00e\ 43 | \x00n\x00u\x00s\ 44 | \x00\x09\ 45 | \x0b\x9e\x84\x87\ 46 | \x00c\ 47 | \x00h\x00e\x00c\x00k\x00.\x00p\x00n\x00g\ 48 | " 49 | 50 | qt_resource_struct = b"\ 51 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ 52 | \x00\x00\x00\x00\x00\x00\x00\x00\ 53 | \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ 54 | \x00\x00\x00\x00\x00\x00\x00\x00\ 55 | \x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ 56 | \x00\x00\x01\x8f0\xbc\xb31\ 57 | " 58 | 59 | def qInitResources(): 60 | QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) 61 | 62 | def qCleanupResources(): 63 | QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) 64 | 65 | qInitResources() 66 | -------------------------------------------------------------------------------- /python/shotgun_search_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | 12 | from .hierarchical_search_widget import HierarchicalSearchWidget 13 | from .global_search_widget import GlobalSearchWidget 14 | -------------------------------------------------------------------------------- /python/shotgun_search_widget/search_style.qss: -------------------------------------------------------------------------------- 1 | QPushButton { 2 | border: 0px solid; 3 | image: url(:/tk-framework-qtwidgets/search_widget/clear_search.png); 4 | width: 16; 5 | height: 16; 6 | } 7 | QPushButton::hover { 8 | image: url(:/tk-framework-qtwidgets/search_widget/clear_search_hover.png); 9 | } 10 | -------------------------------------------------------------------------------- /python/shotgun_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .shotgun_widget import ShotgunWidget 12 | from .shotgun_list_widget import ShotgunListWidget 13 | from .shotgun_folder_widget import ShotgunFolderWidget 14 | -------------------------------------------------------------------------------- /python/shotgun_widget/resources/rect_512x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/shotgun_widget/resources/rect_512x400.png -------------------------------------------------------------------------------- /python/shotgun_widget/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | rect_512x400.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /python/shotgun_widget/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. -------------------------------------------------------------------------------- /python/spinner_widget/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .spinner_widget import SpinnerWidget 12 | -------------------------------------------------------------------------------- /python/version_details/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .version_details import VersionDetailsWidget 12 | -------------------------------------------------------------------------------- /python/version_details/qtwidgets.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Wrapper for the various widgets used from frameworks so that they can be used 13 | easily from with Qt Designer 14 | """ 15 | 16 | import sgtk 17 | 18 | search_widget = sgtk.platform.current_bundle().import_module("search_widget") 19 | SearchWidget = search_widget.SearchWidget 20 | 21 | activity_stream = sgtk.platform.current_bundle().import_module("activity_stream") 22 | ActivityStreamWidget = activity_stream.ActivityStreamWidget 23 | 24 | from .shotgun_entities import ShotgunEntityCardWidget, ShotgunEntityCardDelegate 25 | 26 | shotgun_fields = sgtk.platform.current_bundle().import_module("shotgun_fields") 27 | ShotgunFieldManager = shotgun_fields.ShotgunFieldManager 28 | 29 | shotgun_menus = sgtk.platform.current_bundle().import_module("shotgun_menus") 30 | EntityFieldMenu = shotgun_menus.EntityFieldMenu 31 | ShotgunMenu = shotgun_menus.ShotgunMenu 32 | 33 | models = sgtk.platform.current_bundle().import_module("models") 34 | ShotgunSortFilterProxyModel = models.ShotgunSortFilterProxyModel 35 | 36 | from .simple_tooltip_model import SimpleTooltipModel 37 | -------------------------------------------------------------------------------- /python/version_details/resources/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/arrow.png -------------------------------------------------------------------------------- /python/version_details/resources/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/blank.png -------------------------------------------------------------------------------- /python/version_details/resources/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/close.png -------------------------------------------------------------------------------- /python/version_details/resources/close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/close_hover.png -------------------------------------------------------------------------------- /python/version_details/resources/dock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/dock.png -------------------------------------------------------------------------------- /python/version_details/resources/dock_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/dock_hover.png -------------------------------------------------------------------------------- /python/version_details/resources/icon_player_cut_action_small_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/icon_player_cut_action_small_active.png -------------------------------------------------------------------------------- /python/version_details/resources/icon_player_cut_action_small_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/icon_player_cut_action_small_dark.png -------------------------------------------------------------------------------- /python/version_details/resources/navigate_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/navigate_out.png -------------------------------------------------------------------------------- /python/version_details/resources/navigate_out_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/navigate_out_hover.png -------------------------------------------------------------------------------- /python/version_details/resources/panel_empty_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/panel_empty_background.png -------------------------------------------------------------------------------- /python/version_details/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | right_arrow_large.png 4 | right_arrow.png 5 | right_arrow_white.png 6 | panel_empty_background.png 7 | dock.png 8 | dock_hover.png 9 | sort_down_on.png 10 | sort_up_on.png 11 | sort_down.png 12 | sort_up.png 13 | arrow.png 14 | blank.png 15 | close.png 16 | close_hover.png 17 | icon_player_cut_action_small_active.png 18 | icon_player_cut_action_small_dark.png 19 | navigate_out.png 20 | navigate_out_hover.png 21 | tack_hover.png 22 | tack_up.png 23 | undock.png 24 | undock_hover.png 25 | 26 | 27 | -------------------------------------------------------------------------------- /python/version_details/resources/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/right_arrow.png -------------------------------------------------------------------------------- /python/version_details/resources/right_arrow_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/right_arrow_large.png -------------------------------------------------------------------------------- /python/version_details/resources/right_arrow_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/right_arrow_white.png -------------------------------------------------------------------------------- /python/version_details/resources/sort_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/sort_down.png -------------------------------------------------------------------------------- /python/version_details/resources/sort_down_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/sort_down_on.png -------------------------------------------------------------------------------- /python/version_details/resources/sort_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/sort_up.png -------------------------------------------------------------------------------- /python/version_details/resources/sort_up_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/sort_up_on.png -------------------------------------------------------------------------------- /python/version_details/resources/tack_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/tack_hover.png -------------------------------------------------------------------------------- /python/version_details/resources/tack_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/tack_up.png -------------------------------------------------------------------------------- /python/version_details/resources/undock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/undock.png -------------------------------------------------------------------------------- /python/version_details/resources/undock_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/python/version_details/resources/undock_hover.png -------------------------------------------------------------------------------- /python/version_details/shotgun_entities/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from .card_widget import ShotgunEntityCardWidget 12 | from .card_delegate import ShotgunEntityCardDelegate 13 | -------------------------------------------------------------------------------- /python/version_details/shotgun_entities/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | -------------------------------------------------------------------------------- /python/version_details/simple_tooltip_model.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import sgtk 12 | 13 | shotgun_model = sgtk.platform.import_framework( 14 | "tk-framework-shotgunutils", "shotgun_model" 15 | ) 16 | 17 | 18 | class SimpleTooltipModel(shotgun_model.SimpleShotgunModel): 19 | """ 20 | A Shotgun model that sets simple tooltips for Shotgun entities. 21 | """ 22 | 23 | def _set_tooltip(self, item, sg_item): 24 | """ 25 | Sets the tooltip of the given item. 26 | 27 | :param item: Shotgun model item that requires a tooltip. 28 | :param sg_item: Dictionary of the entity associated with the Shotgun 29 | model item. 30 | """ 31 | item.setToolTip( 32 | "%s: %s" 33 | % ( 34 | sg_item.get("type", "Entity Type Unknown"), 35 | sg_item.get("code", "Entity Name Unknown"), 36 | ) 37 | ) 38 | -------------------------------------------------------------------------------- /python/version_details/style.qss: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2015 Shotgun Software Inc. 3 | 4 | CONFIDENTIAL AND PROPRIETARY 5 | 6 | This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 7 | Source Code License included in this distribution package. See LICENSE. 8 | By accessing, using, copying or modifying this work you indicate your 9 | agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 10 | not expressly granted therein are reserved by Shotgun Software Inc. 11 | */ 12 | 13 | QTabBar { 14 | border: none; 15 | alignment: center; 16 | margin: 4px; 17 | color: rgb(126,127,129); 18 | } 19 | 20 | QTabBar::tab { 21 | border: none; 22 | alignment: center; 23 | margin-left: 4px; 24 | margin-right: 4px; 25 | margin-bottom: 4px; 26 | color: rgb(126,127,129); 27 | } 28 | 29 | QTabBar::tab:hover { 30 | color: {{SG_HIGHLIGHT_COLOR}}; 31 | } 32 | 33 | QTabBar::tab:selected { 34 | color: {{SG_HIGHLIGHT_COLOR}}; 35 | } 36 | 37 | QToolButton#more_info_button:hover, QToolButton#more_fields_button:hover, QToolButton#version_fields_button:hover, QToolButton#version_sort_button:hover { 38 | color: {{SG_HIGHLIGHT_COLOR}}; 39 | } 40 | 41 | QToolButton#more_fields_button:menu-indicator, QToolButton#version_fields_button:menu-indicator, QToolButton#version_sort_button:menu-indicator { 42 | image: none; 43 | } 44 | 45 | QMenu::item#version_sort_menu:checked { 46 | color: {{SG_HIGHLIGHT_COLOR}}; 47 | } 48 | 49 | #note_stream_widget { 50 | border: none; 51 | } 52 | 53 | #version_search { 54 | background-color: rgb(50,50,50); 55 | } 56 | 57 | QFrame#frame { 58 | background-color: rgba(200, 200, 200, 5%); 59 | border-radius: 3px; 60 | } 61 | -------------------------------------------------------------------------------- /python/version_details/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | -------------------------------------------------------------------------------- /python/views/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # generic widget delegate 12 | from .widget_delegate import WidgetDelegate 13 | from .edit_selected_widget_delegate import EditSelectedWidgetDelegate 14 | 15 | # grouped list view classes 16 | from .grouped_list_view.grouped_list_view import GroupedListView 17 | from .grouped_list_view.grouped_list_view_item_delegate import ( 18 | GroupedListViewItemDelegate, 19 | ) 20 | from .grouped_list_view.group_widget_base import GroupWidgetBase 21 | from .grouped_list_view.grouped_item_view import GroupedItemView 22 | 23 | from .shotgun_tableview import ShotgunTableView 24 | -------------------------------------------------------------------------------- /python/views/grouped_list_view/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | -------------------------------------------------------------------------------- /python/views/grouped_list_view/group_widget.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Default group widget used by the GroupedListView custom view via the 13 | GroupedListViewItemDelegate item delegate. 14 | """ 15 | 16 | import sgtk 17 | from sgtk.platform.qt import QtGui, QtCore 18 | 19 | from .group_widget_base import GroupWidgetBase 20 | 21 | 22 | class GroupWidget(GroupWidgetBase): 23 | """ 24 | Default Group widget class 25 | """ 26 | 27 | def __init__(self, parent=None): 28 | """ 29 | Construction 30 | 31 | :param parent: Parent for this widget 32 | """ 33 | GroupWidgetBase.__init__(self, parent) 34 | 35 | # create the checkbox that indicates the toggled/expanded state for 36 | # the group: 37 | self._cb = QtGui.QCheckBox(self) 38 | 39 | # and add it to a basic layout: 40 | layout = QtGui.QHBoxLayout(self) 41 | layout.addWidget(self._cb) 42 | self.setLayout(layout) 43 | 44 | # connect up to the checkbox state-change: 45 | self._cb.stateChanged.connect(self._on_expand_checkbox_state_changed) 46 | 47 | def set_item(self, model_idx): 48 | """ 49 | Overriden base method used to set the item this widget should be associated 50 | with. 51 | 52 | :param model_idx: The index of the item in the model 53 | :type model_idx: :class:`~PySide.QtCore.QModelIndex` 54 | """ 55 | label = model_idx.data() 56 | self._cb.setText(label) 57 | 58 | def set_expanded(self, expand=True): 59 | """ 60 | Overriden base method used to set if this widget is expanded or not. 61 | 62 | :param expand: True if the widget should be expanded, False if it 63 | should be collapsed. 64 | """ 65 | self._cb.setCheckState(QtCore.Qt.Checked if expand else QtCore.Qt.Unchecked) 66 | 67 | def _on_expand_checkbox_state_changed(self, state): 68 | """ 69 | Slot signalled when the checkbos state changes - emits the toggle_expanded 70 | Signal from the base class. 71 | 72 | :param state: The new state of the checkbox 73 | """ 74 | self.toggle_expanded.emit(state != QtCore.Qt.Unchecked) 75 | -------------------------------------------------------------------------------- /python/views/grouped_list_view/group_widget_base.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2015 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | import sgtk 12 | from sgtk.platform.qt import QtGui, QtCore 13 | 14 | 15 | class GroupWidgetBase(QtGui.QWidget): 16 | """ 17 | Base interface for a group widget that will be used in the 18 | :class:`GroupedListView` custom view 19 | 20 | :signal toggle_expanded(bool): Emitted when the group's expansion 21 | state is toggled. Includes a boolean 22 | to indicate if the group is expanded or not. 23 | 24 | """ 25 | 26 | # True if expanded, False if collapsed 27 | toggle_expanded = QtCore.Signal(bool) 28 | 29 | def set_item(self, model_idx): 30 | """ 31 | Set the item this widget should be associated with. This should be 32 | implemented in derived classes 33 | 34 | :param model_idx: The index of the item in the model 35 | :type model_index: :class:`~PySide.QtCore.QModelIndex` 36 | """ 37 | raise NotImplementedError() 38 | 39 | def set_expanded(self, expand=True): 40 | """ 41 | Set if this widget is expanded or not. This should be implemented 42 | in derived classes 43 | 44 | :param expand: True if the widget should be expanded, False if it 45 | should be collapsed. 46 | :type expand: bool 47 | """ 48 | raise NotImplementedError() 49 | -------------------------------------------------------------------------------- /python/views/shotgun_tableview.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | from sgtk.platform.qt import QtGui 12 | 13 | 14 | class ShotgunTableView(QtGui.QTableView): 15 | """ 16 | A subclass of :class:`~PySide.QtGui.QTableView` that will automatically set 17 | the column delegates to the appropriate delegate for the type of Shotgun data 18 | contained in them. 19 | """ 20 | 21 | def __init__(self, fields_manager, parent=None): 22 | """ 23 | Constructor 24 | 25 | :param fields_manager: The field manager to use when generating the delegates 26 | :type fields_manager: :class:`shotgun_fields.FieldsManager` 27 | 28 | :param parent: Parent widget 29 | :type parent: :class:`PySide.QtGui.QWidget` 30 | """ 31 | QtGui.QTableView.__init__(self, parent) 32 | self._fields_manager = fields_manager 33 | 34 | self.setMouseTracking(True) 35 | 36 | # identify the ways to initiate editing a field 37 | self.setEditTriggers( 38 | QtGui.QAbstractItemView.DoubleClicked 39 | | QtGui.QAbstractItemView.EditKeyPressed 40 | ) 41 | 42 | def setModel(self, model): 43 | """ 44 | Overrides the base class setModel. This assumes that the model is a ShotgunModel 45 | and will set the delegates for each column to the appropriate delegate to display 46 | its Shotgun value. 47 | """ 48 | QtGui.QTableView.setModel(self, model) 49 | 50 | # set the delegates 51 | columns_and_fields = model.get_additional_column_fields() 52 | for column_info in columns_and_fields: 53 | delegate = self._fields_manager.create_delegate( 54 | model.get_entity_type(), column_info["field"], self 55 | ) 56 | self.setItemDelegateForColumn(column_info["column_idx"], delegate) 57 | -------------------------------------------------------------------------------- /resources/resources.graffle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shotgunsoftware/tk-framework-qtwidgets/ed9d107c8f9a82282044e1da11bf335a53aa2ba0/resources/resources.graffle -------------------------------------------------------------------------------- /tests/fixtures/config/bundles/test_app/app.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | A simple app to support unit tests. 13 | """ 14 | 15 | import sgtk 16 | 17 | 18 | class TestApp(sgtk.platform.Application): 19 | """ 20 | Dummy app that does nothing. 21 | """ 22 | -------------------------------------------------------------------------------- /tests/fixtures/config/bundles/test_app/info.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | # Metadata defining the behaviour and requirements for this app 12 | 13 | 14 | # General items 15 | display_name: Test App 16 | author: ShotGrid Software 17 | description: Unit testing 18 | 19 | configuration: 20 | 21 | frameworks: 22 | - {"name": "tk-framework-shotgunutils", "version": "v5.x.x"} 23 | - {"name": "tk-framework-qtwidgets", "version": "v2.x.x", "minimum_version": "v2.7.0"} 24 | -------------------------------------------------------------------------------- /tests/fixtures/config/core/hooks/pick_environment.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 Shotgun Software Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Shotgun Software Inc. 10 | 11 | """ 12 | Pick environment hook. 13 | """ 14 | 15 | from tank import Hook 16 | 17 | 18 | class PickEnvironment(Hook): 19 | """ 20 | Picks the environment based on the context. 21 | """ 22 | 23 | def execute(self, context): 24 | """ 25 | Always picks the test environment unless step is not set, in which case 26 | it picks the entity environment. 27 | """ 28 | return "test" 29 | -------------------------------------------------------------------------------- /tests/fixtures/config/env/test.yml: -------------------------------------------------------------------------------- 1 | # this is a comment at the top of the file 2 | engines: 3 | # this is a comment after the engines section 4 | tk-testengine: 5 | apps: 6 | tk-testapp: 7 | location: 8 | type: path 9 | path: "{CONFIG_FOLDER}/bundles/test_app" 10 | debug_logging: False 11 | 12 | location: 13 | type: path 14 | path: $SHOTGUN_TEST_ENGINE 15 | frameworks: 16 | tk-framework-qtwidgets_v2.x.x: 17 | location: 18 | type: path 19 | path: $SHOTGUN_CURRENT_REPO_ROOT 20 | tk-framework-shotgunutils_v5.x.x: 21 | location: 22 | type: path 23 | path: $SHOTGUN_REPOS_ROOT/tk-framework-shotgunutils 24 | -------------------------------------------------------------------------------- /tests/python/data_object.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autoiesk Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk Inc. 10 | 11 | 12 | class _TestDataObject(object): 13 | """ 14 | Class used for generating test data objects. 15 | """ 16 | 17 | def __init__(self, property_1, property_2, property_3): 18 | """ 19 | Constructor. Initialize the object properties. 20 | """ 21 | 22 | self._property_1 = property_1 23 | self._property_2 = property_2 24 | self._property_3 = property_3 25 | 26 | @property 27 | def property_1(self): 28 | return self._property_1 29 | 30 | @property 31 | def property_2(self): 32 | return self._property_2 33 | 34 | @property 35 | def property_3(self): 36 | return self._property_3 37 | -------------------------------------------------------------------------------- /tests/python/list_model.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Autoiesk Inc. 2 | # 3 | # CONFIDENTIAL AND PROPRIETARY 4 | # 5 | # This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 6 | # Source Code License included in this distribution package. See LICENSE. 7 | # By accessing, using, copying or modifying this work you indicate your 8 | # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 9 | # not expressly granted therein are reserved by Autodesk Inc. 10 | 11 | 12 | import sgtk 13 | 14 | try: 15 | from sgtk.platform.qt import QtCore 16 | except: 17 | # components also use PySide, so make sure we have this loaded up correctly 18 | # before starting auto-doc. 19 | from tank.util.qt_importer import QtImporter 20 | 21 | importer = QtImporter() 22 | sgtk.platform.qt.QtCore = importer.QtCore 23 | sgtk.platform.qt.QtGui = importer.QtGui 24 | from sgtk.platform.qt import QtCore 25 | 26 | 27 | class _TestListModel(QtCore.QAbstractListModel): 28 | """ 29 | A subclass of the Qt QAbstractListModel. A very basic model to use for testing. 30 | """ 31 | 32 | def __init__(self, *args, **kwargs): 33 | """ 34 | Constructor. 35 | """ 36 | 37 | super().__init__(*args, **kwargs) 38 | 39 | self._data = [] 40 | self._map_role_to_column = {QtCore.Qt.DisplayRole: 0} 41 | 42 | def set_internal_data(self, data): 43 | """ 44 | Set the model's internal data. 45 | """ 46 | 47 | self._data = data 48 | 49 | def rowCount(self, parent=QtCore.QModelIndex()): 50 | """ 51 | Override the base method. 52 | 53 | Returns the number of rows in the model. 54 | """ 55 | 56 | if parent.isValid(): 57 | return 0 58 | 59 | return len(self._data) 60 | 61 | def data(self, index, role=QtCore.Qt.DisplayRole): 62 | """ 63 | Override the base method. 64 | 65 | Return the data for the index and role. 66 | """ 67 | 68 | if not index.isValid(): 69 | return None 70 | 71 | # Ensure the index is valid with the internal model data 72 | if index.row() < 0 or index.row() >= len(self._data): 73 | return None 74 | 75 | # Get the model data for this index 76 | row_value = self._data[index.row()] 77 | 78 | # Get the column associated with this role to index into the data for this row. 79 | column = self._map_role_to_column.get(role, -1) 80 | 81 | if column < 0 or column >= len(row_value): 82 | # Role not mapped to a column or invalid column 83 | return None 84 | 85 | return row_value[column] 86 | 87 | def map_role_to_column(self, role, column): 88 | """ 89 | Map a column to a given role to extract data from an index. 90 | """ 91 | 92 | self._map_role_to_column[role] = column 93 | --------------------------------------------------------------------------------