├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── .gitmodules ├── LICENSE ├── MANIFEST.in ├── README.md ├── base └── pythonvideoannotator │ ├── pythonvideoannotator │ ├── __init__.py │ ├── __main__.py │ ├── base_module │ │ ├── __init__.py │ │ ├── base.py │ │ ├── base_io.py │ │ └── base_keys_events.py │ ├── resources │ │ ├── __init__.py │ │ ├── icons │ │ │ ├── acceleration.png │ │ │ ├── add.png │ │ │ ├── angle.png │ │ │ ├── area.png │ │ │ ├── aspect-ratio.png │ │ │ ├── background.png │ │ │ ├── black-circle.png │ │ │ ├── circle.png │ │ │ ├── color-component.png │ │ │ ├── colors.png │ │ │ ├── contour.png │ │ │ ├── datasets.png │ │ │ ├── delete-path.png │ │ │ ├── delete.png │ │ │ ├── distances.png │ │ │ ├── duplicate.png │ │ │ ├── edit.png │ │ │ ├── ellipse.png │ │ │ ├── exit.png │ │ │ ├── export.png │ │ │ ├── geometry.png │ │ │ ├── height.png │ │ │ ├── hull.png │ │ │ ├── image.png │ │ │ ├── import.png │ │ │ ├── info.png │ │ │ ├── interpolate.png │ │ │ ├── link.png │ │ │ ├── mark-place.png │ │ │ ├── motion.png │ │ │ ├── movie.png │ │ │ ├── movies.png │ │ │ ├── new.png │ │ │ ├── note.png │ │ │ ├── object.png │ │ │ ├── open.png │ │ │ ├── path.png │ │ │ ├── pathmap.png │ │ │ ├── pause.png │ │ │ ├── picture.png │ │ │ ├── play.png │ │ │ ├── point.png │ │ │ ├── position.png │ │ │ ├── refresh.png │ │ │ ├── regions.png │ │ │ ├── remove.png │ │ │ ├── save.png │ │ │ ├── select-point.png │ │ │ ├── settings.png │ │ │ ├── smooth.png │ │ │ ├── timeline.png │ │ │ ├── velocity.png │ │ │ ├── video.png │ │ │ ├── width.png │ │ │ ├── x.png │ │ │ ├── y.png │ │ │ ├── zoom_in.png │ │ │ └── zoom_out.png │ │ └── themes │ │ │ ├── d-theme-blue │ │ │ ├── checkbox.png │ │ │ ├── d-theme-blue.qss │ │ │ ├── down_arrow.png │ │ │ ├── down_arrow_disabled.png │ │ │ ├── left_arrow.png │ │ │ ├── left_arrow_disabled.png │ │ │ ├── move_toolbar_hor.png │ │ │ ├── move_toolbar_ver.png │ │ │ ├── right_arrow.png │ │ │ ├── right_arrow_disabled.png │ │ │ ├── sizegrip.png │ │ │ ├── transparent.png │ │ │ ├── up_arrow.png │ │ │ └── up_arrow_disabled.png │ │ │ ├── d-theme-dark │ │ │ ├── checkbox.png │ │ │ ├── d-theme-dark.qss │ │ │ ├── down_arrow.png │ │ │ ├── down_arrow_disabled.png │ │ │ ├── left_arrow.png │ │ │ ├── left_arrow_disabled.png │ │ │ ├── move_toolbar_hor.png │ │ │ ├── move_toolbar_ver.png │ │ │ ├── right_arrow.png │ │ │ ├── right_arrow_disabled.png │ │ │ ├── sizegrip.png │ │ │ ├── transparent.png │ │ │ ├── up_arrow.png │ │ │ └── up_arrow_disabled.png │ │ │ ├── dark-orange │ │ │ └── dark-orange.css │ │ │ ├── default │ │ │ ├── stylesheet.css │ │ │ ├── stylesheet_darwin.css │ │ │ └── stylesheet_old.css │ │ │ ├── ida-default │ │ │ ├── manifest.xml │ │ │ └── stylesheet.qss │ │ │ ├── idaskins-dark │ │ │ ├── icons │ │ │ │ ├── expand.png │ │ │ │ └── spacer.png │ │ │ ├── manifest.xml │ │ │ ├── preview.png │ │ │ └── stylesheet.qss │ │ │ └── wombat │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── icons │ │ │ ├── caret-down_ffffff_14.png │ │ │ ├── caret-right_ffffff_14.png │ │ │ ├── check_ffffff_14.png │ │ │ └── down_arrow.png │ │ │ ├── stylesheet.css │ │ │ └── wombat-style.xml │ ├── settings.py │ ├── userstats.py │ └── utils │ │ ├── __init__.py │ │ ├── dyn_list.py │ │ └── tools.py │ └── setup.py ├── docs ├── Makefile ├── make.bat ├── mkdocs.yml ├── screenshot.png ├── source │ ├── _static │ │ ├── custom.css │ │ ├── howto │ │ │ ├── add-capture-result.png │ │ │ ├── add-capture.png │ │ │ ├── add-datasets.png │ │ │ ├── add-geometry-edit-draw-circle.gif │ │ │ ├── add-geometry-edit-poly.png │ │ │ ├── add-geometry-edit.png │ │ │ ├── add-geometry.png │ │ │ ├── add-image.png │ │ │ ├── add-object.png │ │ │ ├── add-video-result.png │ │ │ ├── add-video.png │ │ │ ├── import-value-from-csvfile-step1.png │ │ │ ├── import-value-from-csvfile-step2.png │ │ │ ├── send-value-to-timeline-result.png │ │ │ ├── send-value-to-timeline.png │ │ │ └── update.png │ │ ├── index │ │ │ ├── background-calculator-original-video.gif │ │ │ ├── background-calculator.gif │ │ │ ├── extract-contours-images.png │ │ │ ├── extracted-fish-image-1.png │ │ │ ├── extracted-fish-image-2.png │ │ │ ├── fly-path.png │ │ │ ├── funding.png │ │ │ ├── motion.png │ │ │ ├── original-images │ │ │ │ ├── background-calculator-original-video.gif │ │ │ │ ├── background-calculator.gif │ │ │ │ ├── extract-contours-images.png │ │ │ │ ├── extracted-fish-image-1.png │ │ │ │ ├── extracted-fish-image-2.png │ │ │ │ ├── motion.png │ │ │ │ ├── player.png │ │ │ │ ├── project-directories-tree.png │ │ │ │ ├── project.png │ │ │ │ ├── timeline.png │ │ │ │ └── timeline_small.png │ │ │ ├── player.png │ │ │ ├── project-directories-tree.png │ │ │ ├── project.png │ │ │ ├── timeline.png │ │ │ └── timeline_small.png │ │ ├── modules │ │ │ ├── background-module-workflow.png │ │ │ ├── background-module.png │ │ │ ├── calc-background.gif │ │ │ ├── config.yaml │ │ │ ├── deeplabcut-csv-result.png │ │ │ ├── deeplabcut-project-directory.png │ │ │ ├── deeplabcut-project.png │ │ │ ├── distances-module-result.png │ │ │ ├── distances-module.png │ │ │ ├── distances.gif │ │ │ ├── est-contours-orientation.gif │ │ │ ├── export-data.gif │ │ │ ├── export-videos.gif │ │ │ ├── exportdata-module.png │ │ │ ├── exportvideos-module-result.png │ │ │ ├── exportvideos-module.png │ │ │ ├── extract-images.gif │ │ │ ├── filter-by-regions.gif │ │ │ ├── idtrackerai_1_select_obj.png │ │ │ ├── idtrackerai_2_select_centroid.png │ │ │ ├── motion-module-result.png │ │ │ ├── motion-module.png │ │ │ ├── motion.gif │ │ │ ├── pathmap.gif │ │ │ ├── regionsfilter-module-result.png │ │ │ ├── regionsfilter-module.png │ │ │ ├── smooth.gif │ │ │ ├── tracking-module-blobsfilter-workflow.png │ │ │ ├── tracking-module-blobsfilters.png │ │ │ ├── tracking-module-datasets.png │ │ │ ├── tracking-module-imagefilters.png │ │ │ ├── tracking-module-result.png │ │ │ ├── tracking-module-with-datasets-hidden.png │ │ │ ├── tracking-module.png │ │ │ └── tracking-objects.gif │ │ ├── timeline │ │ │ ├── add-and-edit-note.gif │ │ │ ├── add-and-edit-rows.gif │ │ │ ├── convert-graphs-2-events-window.png │ │ │ ├── convert-graphs-2-events.png │ │ │ ├── graph-on-timeline.png │ │ │ ├── graphs-properties.png │ │ │ ├── original-images │ │ │ │ ├── graphs-properties.png │ │ │ │ ├── send-2-timeline.png │ │ │ │ ├── timeline.png │ │ │ │ └── track-properties.png │ │ │ ├── send-2-timeline.png │ │ │ ├── timeline.png │ │ │ └── track-properties.png │ │ └── user-docs │ │ │ ├── modules │ │ │ ├── background-calculator.png │ │ │ ├── distances.png │ │ │ ├── export-data.png │ │ │ ├── extract-contours-images.png │ │ │ ├── motion.png │ │ │ ├── original-images │ │ │ │ ├── background-calculator.png │ │ │ │ ├── distances.png │ │ │ │ ├── export-data.png │ │ │ │ ├── extract-contours-images.png │ │ │ │ ├── motion.png │ │ │ │ ├── path-map.png │ │ │ │ ├── smooth.png │ │ │ │ ├── track-objects.png │ │ │ │ └── virtual-object-generator.png │ │ │ ├── path-map.png │ │ │ ├── smooth.png │ │ │ ├── track-objects.png │ │ │ └── virtual-object-generator.png │ │ │ └── project-tree │ │ │ ├── contour.png │ │ │ ├── original-images │ │ │ └── project-files-tree.png │ │ │ ├── path.png │ │ │ └── project-files-tree.png │ ├── concepts │ │ └── project-tree │ │ │ ├── datasets.rst │ │ │ ├── index.rst │ │ │ └── project-files.rst │ ├── conf.py │ ├── index.rst │ ├── modules │ │ ├── calc-background.rst │ │ ├── distances.rst │ │ ├── estimate-contour-orientation.rst │ │ ├── export-data.rst │ │ ├── export-videos.rst │ │ ├── extract-images.rst │ │ ├── idtrackerai.rst │ │ ├── label-deeplabcut.rst │ │ ├── motion.rst │ │ ├── path-map.rst │ │ ├── regionsfilter.rst │ │ ├── smooth.rst │ │ └── tracking.rst │ └── user-docs │ │ ├── howto │ │ └── index.rst │ │ ├── install_and_run │ │ └── index.rst │ │ ├── shortcuts │ │ └── index.rst │ │ ├── timeline │ │ └── index.rst │ │ └── update │ │ └── index.rst └── youtube.png ├── libraries └── __init__.py ├── plugins └── __init__.py ├── readthedocs.yml ├── requirements-rtd.txt └── utils ├── deeplab.yml ├── deploy-pypi.py ├── environment-macosx.yml ├── environment-ubuntu17.yml ├── environment-windows.yml └── install.py /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. macOS Catalina, Windows 10 1903, Ubuntu 19.10] 28 | - Python Video Annotator Version [e.g. 3.306] 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Eclipse 3 | .project 4 | .pydevproject 5 | .settings/org.eclipse.core.resources.prefs 6 | .settings/org.eclipse.ltk.core.refactoring.prefs 7 | .settings/org.eclipse.mylyn.tasks.ui.prefs 8 | org.eclipse.core.resources.prefs 9 | 10 | # APP USER SETTINGS 11 | user_settings.py 12 | pyforms_generic_editor_user_settings.py 13 | 14 | # PIP 15 | requirements-dev-*.txt 16 | uninstall-requirements-dev-*.txt 17 | 18 | 19 | # Pycharm 20 | # Keep other .idea files for team sharing 21 | # https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 22 | .idea/workspace.xml 23 | .idea/tasks.xml 24 | 25 | # Distribution / packaging 26 | **/*.log 27 | **/*.pyc 28 | **/build 29 | **/dist 30 | **/output 31 | **/autogenerated 32 | **/*.egg-info/* 33 | **/.eggs 34 | 35 | **/reports/* 36 | **/test/* 37 | **/*.swp 38 | **/*.out 39 | **/*.sc 40 | **/*.spec 41 | **/*.propsfile 42 | 43 | build/ 44 | develop-eggs/ 45 | dist/ 46 | eggs/ 47 | .eggs/ 48 | sdist/ 49 | var/ 50 | wheels/ 51 | *.egg-info/ 52 | *.egg 53 | test-project/ 54 | 55 | base/pythonvideoannotator/pythonvideoannotator/trackingsettings\.txt 56 | 57 | base/pythonvideoannotator/pythonvideoannotator/\.track\.cnf 58 | 59 | \.idea/ 60 | 61 | local_settings\.py 62 | 63 | docs/source/_static/index/\.DS_Store 64 | 65 | docs/source/_static/\.DS_Store 66 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "base/pythonvideoannotator-models"] 2 | path = base/pythonvideoannotator-models 3 | url = https://github.com/video-annotator/pythonvideoannotator-models.git 4 | [submodule "base/pythonvideoannotator-models-gui"] 5 | path = base/pythonvideoannotator-models-gui 6 | url = https://github.com/video-annotator/pythonvideoannotator-models-gui.git 7 | [submodule "plugins/pythonvideoannotator-module-backgroundfinder"] 8 | path = plugins/pythonvideoannotator-module-backgroundfinder 9 | url = https://github.com/video-annotator/pythonvideoannotator-module-backgroundfinder.git 10 | [submodule "libraries/mcv-api"] 11 | path = libraries/mcv-api 12 | url = https://github.com/video-annotator/mcv-api.git 13 | [submodule "libraries/mcv-gui"] 14 | path = libraries/mcv-gui 15 | url = https://github.com/video-annotator/mcv-gui.git 16 | [submodule "libraries/confapp"] 17 | path = libraries/confapp 18 | url = https://github.com/UmSenhorQualquer/confapp.git 19 | [submodule "plugins/pythonvideoannotator-module-contoursimages"] 20 | path = plugins/pythonvideoannotator-module-contoursimages 21 | url = https://github.com/video-annotator/pythonvideoannotator-module-contoursimages.git 22 | [submodule "plugins/pythonvideoannotator-module-createpaths"] 23 | path = plugins/pythonvideoannotator-module-createpaths 24 | url = https://github.com/video-annotator/pythonvideoannotator-module-createpaths.git 25 | [submodule "plugins/pythonvideoannotator-module-distances"] 26 | path = plugins/pythonvideoannotator-module-distances 27 | url = https://github.com/video-annotator/pythonvideoannotator-module-distances.git 28 | [submodule "plugins/pythonvideoannotator-module-eventsstats"] 29 | path = plugins/pythonvideoannotator-module-eventsstats 30 | url = https://github.com/video-annotator/pythonvideoannotator-module-eventsstats.git 31 | [submodule "plugins/pythonvideoannotator-module-findorientation"] 32 | path = plugins/pythonvideoannotator-module-findorientation 33 | url = https://github.com/video-annotator/pythonvideoannotator-module-findorientation.git 34 | [submodule "plugins/pythonvideoannotator-module-importexport"] 35 | path = plugins/pythonvideoannotator-module-importexport 36 | url = https://github.com/video-annotator/pythonvideoannotator-module-importexport.git 37 | [submodule "plugins/pythonvideoannotator-module-motioncounter"] 38 | path = plugins/pythonvideoannotator-module-motioncounter 39 | url = https://github.com/video-annotator/pythonvideoannotator-module-motioncounter.git 40 | [submodule "plugins/pythonvideoannotator-module-patheditor"] 41 | path = plugins/pythonvideoannotator-module-patheditor 42 | url = https://github.com/video-annotator/pythonvideoannotator-module-patheditor.git 43 | [submodule "plugins/pythonvideoannotator-module-regionsfilter"] 44 | path = plugins/pythonvideoannotator-module-regionsfilter 45 | url = https://github.com/video-annotator/pythonvideoannotator-module-regionsfilter.git 46 | [submodule "plugins/pythonvideoannotator-module-smoothpaths"] 47 | path = plugins/pythonvideoannotator-module-smoothpaths 48 | url = https://github.com/video-annotator/pythonvideoannotator-module-smoothpaths.git 49 | [submodule "plugins/pythonvideoannotator-module-timeline"] 50 | path = plugins/pythonvideoannotator-module-timeline 51 | url = https://github.com/video-annotator/pythonvideoannotator-module-timeline.git 52 | [submodule "plugins/pythonvideoannotator-module-tracking"] 53 | path = plugins/pythonvideoannotator-module-tracking 54 | url = https://github.com/video-annotator/pythonvideoannotator-module-tracking.git 55 | [submodule "plugins/pythonvideoannotator-module-virtualobjectgenerator"] 56 | path = plugins/pythonvideoannotator-module-virtualobjectgenerator 57 | url = https://github.com/video-annotator/pythonvideoannotator-module-virtualobjectgenerator.git 58 | [submodule "libraries/pyforms-gui"] 59 | path = libraries/pyforms-gui 60 | url = https://github.com/UmSenhorQualquer/pyforms-gui.git 61 | [submodule "libraries/geometry-designer"] 62 | path = libraries/geometry-designer 63 | url = https://github.com/video-annotator/geometry-designer.git 64 | [submodule "plugins/pythonvideoannotator-module-pathmap"] 65 | path = plugins/pythonvideoannotator-module-pathmap 66 | url = https://github.com/video-annotator/pythonvideoannotator-module-pathmap.git 67 | [submodule "plugins/pythonvideoannotator-module-deeplab"] 68 | path = plugins/pythonvideoannotator-module-deeplab 69 | url = https://github.com/video-annotator/pythonvideoannotator-module-deeplab.git 70 | [submodule "plugins/pythonvideoannotator-module-idtrackerai"] 71 | path = plugins/pythonvideoannotator-module-idtrackerai 72 | url = https://github.com/video-annotator/pythonvideoannotator-module-idtrackerai.git 73 | 74 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ricardo Ribeiro, Hugo Cachitas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include README.md 3 | recursive-include pythonvideoannotator/resources * -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python Video Annotator 2 | 3 | [Documentation on ReadTheDocs](https://pythonvideoannotator.readthedocs.io) 4 | 5 | 6 | The software is an application written in python, which provides a GUI for users to analyse and to take notes of events occurred in the videos. 7 | 8 | Features: 9 | * Timeline for video navigation. 10 | * Multiple events edition in the timeline. 11 | * Graphs visualization over time. 12 | * Objects tracking path edition. 13 | * Plugins based app. 14 | 15 | [![Video](docs/youtube.png)](https://www.youtube.com/watch?v=9C4Zr8fhqFo&t=63s) 16 | 17 | ![Video annotator screenshot](docs/screenshot.png "Screen") 18 | 19 | ## Installation & Running 20 | 21 | How to install: 22 | 23 | 1. Create a Virtual Environment (highly recommended) on your preferred Python distribution with Python 3.6: 24 | * example with Anaconda in Anaconda Prompt 25 | 26 | ```bash 27 | conda create -n videoannotator python=3.6 28 | 29 | ... 30 | 31 | conda activate videoannotator 32 | ``` 33 | 34 | 2. Make sure you are in the just created virtual environment and install PythonVideoAnnotator with pip: 35 | 36 | ```bash 37 | pip install python-video-annotator 38 | ``` 39 | 40 | If you are having issues (e.g., MacOS Catalina): 41 | 42 | 1. Start with a fresh Virtual Environment (highly recommended) on your preferred Python distribution with Python 3.6: 43 | * example with Anaconda in Anaconda Prompt 44 | 45 | ```bash 46 | conda create -n videoannotator python=3.6 47 | 48 | ... 49 | 50 | conta activate videoannotator 51 | ``` 52 | 53 | 2. Install some of the dependencies that might present issues as: 54 | 55 | ```bash 56 | pip install opencv-python-headless pyqt5==5.14.1 pyqtwebengine==5.14.0 57 | ``` 58 | 59 | 3. Install Python Video Annotator 60 | 61 | ```bash 62 | pip install python-video-annotator 63 | ``` 64 | 65 | How to run: 66 | 67 | 1. After the installation completes, you can start Python Video Annotator with: 68 | 69 | ```bash 70 | start-video-annotator 71 | ``` 72 | 73 | ### For developers 74 | 75 | [Follow the steps described here](https://pythonvideoannotator.readthedocs.io/en/master/user-docs/install_and_run/index.html#for-developers) 76 | 77 | 78 | ## Developers 79 | 80 | * Ricardo Ribeiro - collaborator of the [Scientific Software Platform](http://neuro.fchampalimaud.org/en/research/platforms/staff/Scientific%20Software/) of the [Champalimaud Foundation](http://fchampalimaud.org). 81 | * Hugo Cachitas working - collaborator of the [Innate Behavior Lab](http://neuro.fchampalimaud.org/en/research/investigators/research-groups/group/Vasconcelos/) of the [Champalimaud Foundation](http://fchampalimaud.org). 82 | * Carlos Mão de Ferro - collaborator of the [Scientific Software Platform](http://neuro.fchampalimaud.org/en/research/platforms/staff/Scientific%20Software/) of the [Champalimaud Foundation](http://fchampalimaud.org). 83 | * Luís Teixeira - collaborator of the [Scientific Software Platform](http://neuro.fchampalimaud.org/en/research/platforms/staff/Scientific%20Software/) of the [Champalimaud Foundation](http://fchampalimaud.org). 84 | 85 | ## Collaboration 86 | 87 | This project was initially developed in collaboration with the [Innate Behavior Lab](http://neuro.fchampalimaud.org/en/research/investigators/research-groups/group/Vasconcelos/) to correct the result of a Computer Vision software to track flies in an arena 88 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/__init__.py: -------------------------------------------------------------------------------- 1 | # !/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __version__ = "3.306" 5 | __author__ = ["Ricardo Ribeiro", "Carlos Mao de Ferro", "Hugo Cachitas"] 6 | __credits__ = ["Ricardo Ribeiro", "Carlos Mao de Ferro", "Hugo Cachitas"] 7 | __license__ = "Attribution-NonCommercial-ShareAlike 4.0 International" 8 | __maintainer__ = ["Ricardo Ribeiro", "Carlos Mao de Ferro"] 9 | __email__ = ["ricardojvr at gmail.com", "cajomferro at gmail.com"] 10 | __status__ = "Development" 11 | 12 | from confapp import conf; conf += 'pythonvideoannotator.settings' 13 | 14 | 15 | import logging 16 | 17 | logger = logging.getLogger(__name__) 18 | logger.setLevel(conf.APP_LOG_HANDLER_LEVEL) 19 | 20 | if conf.APP_LOG_HANDLER_FILE: 21 | logger = logging.getLogger() 22 | loggers_formatter = logging.Formatter(conf.PYFORMS_LOG_FORMAT) 23 | 24 | fh = logging.FileHandler(conf.APP_LOG_HANDLER_FILE) 25 | fh.setLevel(conf.APP_LOG_HANDLER_FILE_LEVEL) 26 | fh.setFormatter(loggers_formatter) 27 | logger.addHandler(fh) 28 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/__main__.py: -------------------------------------------------------------------------------- 1 | # !/usr/bin/python2 2 | # -*- coding: utf-8 -*- 3 | 4 | from confapp import conf 5 | import logging, traceback, pythonvideoannotator, sys, platform 6 | 7 | from urllib.parse import urlencode 8 | from uuid import getnode as get_mac 9 | from AnyQt.QtWidgets import QMessageBox 10 | from urllib.request import Request, urlopen 11 | from AnyQt.QtWidgets import QApplication 12 | 13 | logger = logging.getLogger(__name__) 14 | 15 | try: 16 | import pyforms 17 | except ImportError as err: 18 | logger.critical(str(err), exc_info=True) 19 | exit("Could not load pyforms! Is it installed?") 20 | 21 | try: 22 | from confapp import conf 23 | except ImportError as err: 24 | logger.critical(str(err), exc_info=True) 25 | exit("Could not load confapp! Is it installed?") 26 | 27 | 28 | from pythonvideoannotator.base_module import BaseModule 29 | 30 | logging.getLogger('PyQt5').setLevel(logging.INFO) 31 | 32 | print() 33 | print('**************************************') 34 | print() 35 | 36 | VideoAnnotator = type( 37 | 'VideoAnnotator', 38 | tuple(conf.VIDEOANNOTATOR_MODULES.find_class('module.Module') + [BaseModule]), 39 | {} 40 | ) 41 | 42 | 43 | def start(parent_win=None): 44 | 45 | try: 46 | res = pyforms.start_app( 47 | VideoAnnotator, 48 | geometry=conf.MAIN_WINDOW_GEOMETRY, 49 | parent_win=parent_win 50 | ) 51 | return res 52 | 53 | except Exception as e: 54 | logger.error(e, exc_info=True) 55 | report = traceback.format_exc() 56 | 57 | app = QApplication(sys.argv) 58 | m = QMessageBox( 59 | QMessageBox.Question, 60 | "Send report", 61 | "

Would you like to send us a report of the bug?

" 62 | "This will help us improving the software." 63 | "

{bug}

".format( bug=str(e) ), 64 | QMessageBox.Yes | QMessageBox.No 65 | ) 66 | reply = m.exec_() 67 | 68 | if reply==QMessageBox.Yes: 69 | try: 70 | app_id = conf.USERSTATS_APP_ID 71 | reg_id = get_mac() 72 | os_name = platform.platform() 73 | version = pythonvideoannotator.__version__ 74 | 75 | data = {'app-id': app_id, 'reg-id': reg_id, 'os-name' : os_name, 'version': version, 'report': report} 76 | url = "{}/register-bug".format(conf.USERSTATS_URL) 77 | request = Request(url, urlencode(data).encode()) 78 | urlopen(request).read().decode() 79 | except Exception as ex: 80 | print("Could not register new access", ex ) 81 | 82 | exit() 83 | app.exec_() 84 | 85 | 86 | if __name__ == '__main__': start() 87 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/base_module/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_keys_events import BaseKeysEvents as BaseModule -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/base_module/base_io.py: -------------------------------------------------------------------------------- 1 | import traceback 2 | from .base import Base 3 | from confapp import conf 4 | 5 | if conf.PYFORMS_MODE == 'GUI': 6 | from AnyQt.QtWidgets import QFileDialog, QMessageBox 7 | 8 | 9 | 10 | class BaseIO(Base): 11 | 12 | ###################################################################################### 13 | #### IO FUNCTIONS #################################################################### 14 | ###################################################################################### 15 | 16 | def save(self, data, project_path=None): 17 | self._project.save(data, project_path) 18 | return data 19 | 20 | def load(self, data, project_path=None): 21 | try: 22 | self._project.load(data, project_path) 23 | except Exception as e: 24 | QMessageBox.critical(self, "Error", str(e)) 25 | 26 | def save_project(self, project_path=None): 27 | try: 28 | if project_path is None: 29 | dialog = QFileDialog() 30 | dialog.setLabelText(QFileDialog.Accept, 'Save') 31 | project_path = dialog.getExistingDirectory(self, caption="Select the project directory to save") 32 | 33 | if project_path is not None and str(project_path) != '': 34 | project_path = str(project_path) 35 | self.save({}, project_path) 36 | except Exception as e: 37 | traceback.print_exc() 38 | QMessageBox.critical(self, "Error", str(e)) 39 | 40 | def load_project(self, project_path=None): 41 | if project_path is None: 42 | project_path = QFileDialog.getExistingDirectory(self, caption="Select the project directory to open") 43 | 44 | if project_path is not None and str(project_path) != '': 45 | self.load({}, str(project_path)) 46 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/__init__.py: -------------------------------------------------------------------------------- 1 | # !/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | SETTINGS_PRIORITY = 10 4 | 5 | import os, AnyQt 6 | from confapp import conf 7 | 8 | if conf.PYFORMS_MODE=='GUI': 9 | from AnyQt import QtGui 10 | 11 | def path(filename): return os.path.join(os.path.dirname(__file__), 'icons', filename) 12 | 13 | 14 | PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY = QtGui.QIcon() 15 | PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY.addPixmap(QtGui.QPixmap(path('play.png')), mode=QtGui.QIcon.Normal, state=QtGui.QIcon.Off) 16 | PYFORMS_ICON_VIDEOPLAYER_PAUSE_PLAY.addPixmap(QtGui.QPixmap(path('pause.png')),mode=QtGui.QIcon.Normal, state=QtGui.QIcon.On) 17 | 18 | 19 | PYFORMS_ICON_CODEEDITOR_SAVE = QtGui.QIcon(path('export.png')) 20 | 21 | PYFORMS_PIXMAP_EVENTTIMELINE_ZOOM_IN = QtGui.QPixmap(path('zoom_in.png')) 22 | PYFORMS_PIXMAP_EVENTTIMELINE_ZOOM_OUT = QtGui.QPixmap(path('zoom_out.png')) 23 | 24 | PYFORMS_ICON_EVENTTIMELINE_IMPORT = QtGui.QIcon(path('import.png')) 25 | PYFORMS_ICON_EVENTTIMELINE_EXPORT = QtGui.QIcon(path('export.png')) 26 | 27 | 28 | PYFORMS_ICON_FILE_OPEN = QtGui.QIcon(path('link.png')) 29 | 30 | ANNOTATOR_ICON_REFRESH = QtGui.QIcon(path('refresh.png')) 31 | ANNOTATOR_ICON_PATH = QtGui.QIcon(path('path.png')) 32 | ANNOTATOR_ICON_DATASETS = QtGui.QIcon(path('datasets.png')) 33 | ANNOTATOR_ICON_OBJECT = QtGui.QIcon(path('object.png')) 34 | ANNOTATOR_ICON_OPEN = QtGui.QIcon(path('open.png')) 35 | ANNOTATOR_ICON_SAVE = QtGui.QIcon(path('save.png')) 36 | ANNOTATOR_ICON_EXIT = QtGui.QIcon(path('exit.png')) 37 | ANNOTATOR_ICON_EDIT = QtGui.QIcon(path('edit.png')) 38 | ANNOTATOR_ICON_DELETE = QtGui.QIcon(path('delete.png')) 39 | ANNOTATOR_ICON_INTERPOLATE = QtGui.QIcon(path('interpolate.png')) 40 | ANNOTATOR_ICON_INTERPOLATION_SETTINGS = QtGui.QIcon(path('settings.png')) 41 | ANNOTATOR_ICON_X = QtGui.QIcon(path('x.png')) 42 | ANNOTATOR_ICON_Y = QtGui.QIcon(path('y.png')) 43 | ANNOTATOR_ICON_TIMELINE = QtGui.QIcon(path('timeline.png')) 44 | ANNOTATOR_ICON_VELOCITY = QtGui.QIcon(path('velocity.png')) 45 | ANNOTATOR_ICON_ACCELERATION = QtGui.QIcon(path('acceleration.png')) 46 | ANNOTATOR_ICON_POSITION = QtGui.QIcon(path('position.png')) 47 | ANNOTATOR_ICON_ADD = QtGui.QIcon(path('add.png')) 48 | ANNOTATOR_ICON_REMOVE = QtGui.QIcon(path('remove.png')) 49 | ANNOTATOR_ICON_MARKPLACE = QtGui.QIcon(path('mark-place.png')) 50 | ANNOTATOR_ICON_SELECTPOINT = QtGui.QIcon(path('select-point.png')) 51 | ANNOTATOR_ICON_DELETEPATH = QtGui.QIcon(path('delete-path.png')) 52 | ANNOTATOR_ICON_MOTION = QtGui.QIcon(path('motion.png')) 53 | ANNOTATOR_ICON_CONTOUR = QtGui.QIcon(path('contour.png')) 54 | ANNOTATOR_ICON_AREA = QtGui.QIcon(path('area.png')) 55 | ANNOTATOR_ICON_REGIONS = QtGui.QIcon(path('regions.png')) 56 | ANNOTATOR_ICON_VIDEO = QtGui.QIcon(path('video.png')) 57 | ANNOTATOR_ICON_COLORS = QtGui.QIcon(path('colors.png')) 58 | ANNOTATOR_ICON_COLOR_COMPONENT = QtGui.QIcon(path('color-component.png')) 59 | ANNOTATOR_ICON_CIRCLE = QtGui.QIcon(path('circle.png')) 60 | ANNOTATOR_ICON_ELLIPSE = QtGui.QIcon(path('ellipse.png')) 61 | ANNOTATOR_ICON_HULL = QtGui.QIcon(path('hull.png')) 62 | ANNOTATOR_ICON_BLACK_CIRCLE = QtGui.QIcon(path('black-circle.png')) 63 | ANNOTATOR_ICON_WIDTH = QtGui.QIcon(path('width.png')) 64 | ANNOTATOR_ICON_HEIGHT = QtGui.QIcon(path('height.png')) 65 | ANNOTATOR_ICON_ASPECT_RATIO = QtGui.QIcon(path('aspect-ratio.png')) 66 | ANNOTATOR_ICON_INFO = QtGui.QIcon(path('info.png')) 67 | ANNOTATOR_ICON_ANGLE = QtGui.QIcon(path('angle.png')) 68 | ANNOTATOR_ICON_POINT = QtGui.QIcon(path('point.png')) 69 | 70 | ANNOTATOR_ICON_PICTURE = QtGui.QIcon(path('picture.png')) 71 | ANNOTATOR_ICON_SMOOTH = QtGui.QIcon(path('smooth.png')) 72 | ANNOTATOR_ICON_NEW = QtGui.QIcon(path('new.png')) 73 | ANNOTATOR_ICON_IMAGE = QtGui.QIcon(path('image.png')) 74 | 75 | ANNOTATOR_ICON_BACKGROUND = QtGui.QIcon(path('background.png')) 76 | ANNOTATOR_ICON_MOVIE = QtGui.QIcon(path('movie.png')) 77 | ANNOTATOR_ICON_MOVIES = QtGui.QIcon(path('movies.png')) 78 | 79 | 80 | ANNOTATOR_ICON_NOTE = QtGui.QIcon(path('note.png')) 81 | ANNOTATOR_ICON_GEOMETRY = QtGui.QIcon(path('geometry.png')) 82 | 83 | ANNOTATOR_ICON_PATHMAP = QtGui.QIcon(path('pathmap.png')) 84 | 85 | 86 | ANNOTATOR_ICON_DISTANCES = QtGui.QIcon(path('distances.png')) 87 | 88 | ANNOTATOR_ICON_DUPLICATE = QtGui.QIcon(path('duplicate.png')) 89 | 90 | ANNOTATOR_ICON_DEEPLAB = QtGui.QIcon(path('distances.png')) -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/acceleration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/acceleration.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/add.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/angle.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/area.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/aspect-ratio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/aspect-ratio.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/background.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/black-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/black-circle.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/circle.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/color-component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/color-component.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/colors.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/contour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/contour.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/datasets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/datasets.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/delete-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/delete-path.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/delete.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/distances.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/distances.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/duplicate.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/edit.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/ellipse.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/exit.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/export.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/geometry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/geometry.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/height.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/hull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/hull.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/image.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/import.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/info.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/interpolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/interpolate.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/link.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/mark-place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/mark-place.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/motion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/motion.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/movie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/movie.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/movies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/movies.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/new.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/note.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/object.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/open.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/path.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/pathmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/pathmap.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/pause.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/picture.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/play.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/point.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/position.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/refresh.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/regions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/regions.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/remove.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/save.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/select-point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/select-point.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/settings.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/smooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/smooth.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/timeline.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/velocity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/velocity.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/video.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/width.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/x.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/y.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/zoom_in.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/icons/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/icons/zoom_out.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/checkbox.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/down_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/down_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/down_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/left_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/left_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/left_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/move_toolbar_hor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/move_toolbar_hor.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/move_toolbar_ver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/move_toolbar_ver.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/right_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/right_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/right_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/sizegrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/sizegrip.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/transparent.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/up_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/up_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-blue/up_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/checkbox.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/down_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/down_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/down_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/left_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/left_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/left_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/move_toolbar_hor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/move_toolbar_hor.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/move_toolbar_ver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/move_toolbar_ver.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/right_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/right_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/right_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/sizegrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/sizegrip.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/transparent.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/up_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/up_arrow_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/d-theme-dark/up_arrow_disabled.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/default/stylesheet.css: -------------------------------------------------------------------------------- 1 | 2 | QTreeWidget{ 3 | qproperty-iconSize: 16px; 4 | } 5 | 6 | QTreeWidget::item 7 | { 8 | padding:4px; 9 | } 10 | 11 | 12 | 13 | 14 | [accessibleName="msg"], [accessibleName="info"]{ 15 | 16 | min-height: 1em; 17 | margin: 10px 0px 2px 0; 18 | background: #F8F8F9; 19 | padding: 0.5em 1.0em; 20 | border-radius: .28571429em; 21 | border: 1px solid #DDD; 22 | } 23 | 24 | [accessibleName="info"]{ 25 | color: #276F86; 26 | background: #F8FFFF; 27 | border-color: #10A3A3; 28 | } 29 | 30 | 31 | QLineEdit, QPushButton, QComboBox, QSpinBox{ 32 | height: 25px; 33 | padding: 3px 10px 3px 10px; 34 | 35 | } 36 | 37 | QSpinBox{ 38 | margin: 0px; 39 | padding: 1.5px; 40 | } 41 | 42 | 43 | 44 | 45 | QSlider::groove:horizontal { 46 | border: 1px solid #bbb; 47 | background: white; 48 | height: 10px; 49 | border-radius: 4px; 50 | } 51 | 52 | QSlider::sub-page:horizontal { 53 | background-color: #2185D0; 54 | height: 10px; 55 | border-radius: 4px; 56 | } 57 | 58 | QSlider::add-page:horizontal { 59 | background: #EEE; 60 | height: 10px; 61 | border-radius: 4px; 62 | } 63 | 64 | QSlider::handle:horizontal { 65 | background-color: #CACBCD; 66 | border: 1px solid #CACBCD; 67 | width: 12px; 68 | margin-top: -1px; 69 | margin-bottom: -1px; 70 | border-radius: 3px; 71 | } 72 | 73 | QSlider::handle:horizontal:hover { 74 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #fff, stop:1 #CACBCD); 75 | border: 1px solid #CACBCD; 76 | } 77 | 78 | QSlider::sub-page:horizontal:disabled { 79 | background: #bbb; 80 | border-color: #999; 81 | } 82 | 83 | QSlider::add-page:horizontal:disabled { 84 | background: #eee; 85 | border-color: #999; 86 | } 87 | 88 | QSlider::handle:horizontal:disabled { 89 | background: #eee; 90 | border: 1px solid #aaa; 91 | border-radius: 4px; 92 | } 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | QScrollBar { 102 | border: transparent; 103 | padding: 0px; 104 | margin: 2px; 105 | background: transparent; 106 | border-radius: 3px; 107 | } 108 | QScrollBar::handle { 109 | background-color: #CACBCD; 110 | border: 1px solid #CACBCD; 111 | border-radius: 3px; 112 | } 113 | 114 | QScrollBar:horizontal { 115 | height: 10px; 116 | } 117 | QScrollBar::handle:horizontal { 118 | height: 8px; 119 | width: 20px; 120 | min-width: 10px; 121 | } 122 | 123 | QScrollBar:vertical { 124 | width: 10px; 125 | } 126 | QScrollBar::handle:vertical { 127 | width: 8px; 128 | min-height: 10px; 129 | } 130 | 131 | 132 | QScrollBar::handle:horizontal:hover { 133 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #fff, stop:1 #CACBCD); 134 | border: 1px solid #CACBCD; 135 | } 136 | 137 | QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal { 138 | border: none; 139 | background: none; 140 | color: none; 141 | } 142 | 143 | QScrollBar::sub-page { 144 | background-color: #EEE; 145 | border-radius: 3px; 146 | } 147 | 148 | QScrollBar::add-page { 149 | background: #EEE; 150 | border-radius: 3px; 151 | } 152 | 153 | QScrollBar::sub-page:horizontal { 154 | border-bottom-right-radius: 0px; 155 | border-top-right-radius: 0px; 156 | margin-right: -4px; 157 | } 158 | 159 | QScrollBar::add-page:horizontal { 160 | border-bottom-left-radius: 0px; 161 | border-top-left-radius: 0px; 162 | margin-left: -4px; 163 | } 164 | 165 | QScrollBar::sub-page:vertical { 166 | border-bottom-left-radius: 0px; 167 | border-bottom-right-radius: 0px; 168 | margin-bottom: -4px; 169 | } 170 | 171 | QScrollBar::add-page:vertical { 172 | border-top-right-radius: 0px; 173 | border-top-left-radius: 0px; 174 | margin-top: -4px; 175 | } 176 | 177 | 178 | QScrollBar::add-line, QScrollBar::sub-line{ 179 | border: none; 180 | background: none; 181 | 182 | width: 0px; 183 | height: 0px; 184 | } 185 | 186 | 187 | 188 | QDockWidget { 189 | margin: 0px; 190 | padding: 0px; 191 | color: #333 !important; 192 | } 193 | 194 | 195 | QDockWidget::title { 196 | text-align: left; /* align the text to the left */ 197 | padding: 10px 15px 10px 3px; 198 | } 199 | 200 | QDockWidget::close-button, QDockWidget::float-button { 201 | border: 1px solid transparent; 202 | border-radius: 5px; 203 | } 204 | 205 | 206 | QDockWidget::close-button:pressed, QDockWidget::float-button:pressed { 207 | padding: 1px -1px -1px 1px; 208 | } 209 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/default/stylesheet_darwin.css: -------------------------------------------------------------------------------- 1 | QPushButton{ 2 | margin-left: 3px; 3 | margin-right: 3px; 4 | 5 | } -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/default/stylesheet_old.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | QMainWindow, QDialog, QFrame{ 4 | background-color: white; 5 | font-size: 11pt; 6 | line-height: 18px; 7 | color: #333; 8 | } 9 | /* 10 | QMenuBar{ 11 | background-color: none; 12 | font-size: none; 13 | line-height: none; 14 | color: none; 15 | }*/ 16 | 17 | 18 | 19 | [accessibleName="BaseWidget"]{ 20 | background-color: white; 21 | } 22 | 23 | 24 | QLabel[accessibleName="ControlText-label"],QLabel[accessibleName="ControlCombo-label"], 25 | QLabel[accessibleName="ControlNumber-label"], QLabel[accessibleName="ControlSlider-label"]{ 26 | max-width: 100000000px; 27 | min-width: 100px; 28 | } 29 | 30 | QLineEdit, QPushButton, QComboBox, QSpinBox{ 31 | background-color: transparent; 32 | border: 1px solid #DDD; 33 | border-radius: .28571429em; 34 | height: 25px; 35 | padding: 3px 10px 3px 10px; 36 | font-size: 11pt; 37 | } 38 | 39 | QSpinBox{ 40 | margin: 0px; 41 | } 42 | 43 | 44 | QComboBox QAbstractItemView{ 45 | background: #DDD; 46 | border: none; 47 | padding: 0px; 48 | margin: 0px; 49 | } 50 | 51 | 52 | QPushButton{ 53 | background-color: #E0E1E2; 54 | border: none; 55 | } 56 | 57 | QPushButton:disabled{ 58 | color: #999; 59 | } 60 | 61 | QPushButton:hover{ 62 | background-color: #CACBCD; 63 | } 64 | 65 | QPushButton:checked{ 66 | background-color: #2185D0; 67 | color: white; 68 | /*border: 1px solid #999;*/ 69 | } 70 | 71 | 72 | 73 | QTreeWidget{ 74 | qproperty-iconSize: 16px; 75 | } 76 | 77 | QTreeWidget::item 78 | { 79 | padding:4px; 80 | } 81 | 82 | QPlainTextEdit{ 83 | border: 1px solid lightgray; 84 | border-radius: 5px; 85 | } 86 | 87 | 88 | 89 | 90 | 91 | QDockWidget { 92 | margin: 0px; 93 | padding: 0px; 94 | border: 1px solid lightgray; 95 | color: #333 !important; 96 | } 97 | 98 | QDockWidget::title { 99 | text-align: left; /* align the text to the left */ 100 | background-color: #F3F4F5; 101 | padding: 10px 15px 10px 15px; 102 | } 103 | 104 | QDockWidget::close-button, QDockWidget::float-button { 105 | border: 1px solid transparent; 106 | border-radius: 5px; 107 | background: transparent; 108 | } 109 | 110 | QDockWidget::close-button:hover, QDockWidget::float-button:hover { 111 | background: rgba(255, 255, 255, 10); 112 | } 113 | 114 | QDockWidget::close-button:pressed, QDockWidget::float-button:pressed { 115 | padding: 1px -1px -1px 1px; 116 | background: rgba(255, 255, 255, 10); 117 | } 118 | 119 | 120 | 121 | [accessibleName="msg"], [accessibleName="info"]{ 122 | 123 | min-height: 1em; 124 | margin: 10px 0px 2px 0; 125 | background: #F8F8F9; 126 | padding: 0.5em 1.0em; 127 | border-radius: .28571429em; 128 | border: 1px solid #DDD; 129 | } 130 | 131 | [accessibleName="info"]{ 132 | color: #276F86; 133 | background: #F8FFFF; 134 | border-color: #10A3A3; 135 | } 136 | 137 | 138 | 139 | 140 | 141 | QSlider::groove:horizontal { 142 | border: 1px solid #bbb; 143 | background: white; 144 | height: 10px; 145 | border-radius: 4px; 146 | } 147 | 148 | QSlider::sub-page:horizontal { 149 | background-color: #2185D0; 150 | height: 10px; 151 | border-radius: 4px; 152 | } 153 | 154 | QSlider::add-page:horizontal { 155 | background: #EEE; 156 | height: 10px; 157 | border-radius: 4px; 158 | } 159 | 160 | QSlider::handle:horizontal { 161 | background-color: #CACBCD; 162 | border: 1px solid #CACBCD; 163 | width: 12px; 164 | margin-top: -1px; 165 | margin-bottom: -1px; 166 | border-radius: 3px; 167 | } 168 | 169 | QSlider::handle:horizontal:hover { 170 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #fff, stop:1 #CACBCD); 171 | border: 1px solid #CACBCD; 172 | } 173 | 174 | QSlider::sub-page:horizontal:disabled { 175 | background: #bbb; 176 | border-color: #999; 177 | } 178 | 179 | QSlider::add-page:horizontal:disabled { 180 | background: #eee; 181 | border-color: #999; 182 | } 183 | 184 | QSlider::handle:horizontal:disabled { 185 | background: #eee; 186 | border: 1px solid #aaa; 187 | border-radius: 4px; 188 | } 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | QScrollBar { 198 | border: transparent; 199 | padding: 0px; 200 | margin: 2px; 201 | background: transparent; 202 | border-radius: 3px; 203 | } 204 | QScrollBar::handle { 205 | background-color: #CACBCD; 206 | border: 1px solid #CACBCD; 207 | border-radius: 3px; 208 | } 209 | 210 | QScrollBar:horizontal { 211 | height: 10px; 212 | } 213 | QScrollBar::handle:horizontal { 214 | height: 8px; 215 | width: 20px; 216 | min-width: 10px; 217 | } 218 | 219 | QScrollBar:vertical { 220 | width: 10px; 221 | } 222 | QScrollBar::handle:vertical { 223 | width: 8px; 224 | min-height: 10px; 225 | } 226 | 227 | 228 | QScrollBar::handle:horizontal:hover { 229 | background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #fff, stop:1 #CACBCD); 230 | border: 1px solid #CACBCD; 231 | } 232 | 233 | QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal { 234 | border: none; 235 | background: none; 236 | color: none; 237 | } 238 | 239 | QScrollBar::sub-page { 240 | background-color: #EEE; 241 | border-radius: 3px; 242 | } 243 | 244 | QScrollBar::add-page { 245 | background: #EEE; 246 | border-radius: 3px; 247 | } 248 | 249 | QScrollBar::sub-page:horizontal { 250 | border-bottom-right-radius: 0px; 251 | border-top-right-radius: 0px; 252 | margin-right: -4px; 253 | } 254 | 255 | QScrollBar::add-page:horizontal { 256 | border-bottom-left-radius: 0px; 257 | border-top-left-radius: 0px; 258 | margin-left: -4px; 259 | } 260 | 261 | QScrollBar::sub-page:vertical { 262 | border-bottom-left-radius: 0px; 263 | border-bottom-right-radius: 0px; 264 | margin-bottom: -4px; 265 | } 266 | 267 | QScrollBar::add-page:vertical { 268 | border-top-right-radius: 0px; 269 | border-top-left-radius: 0px; 270 | margin-top: -4px; 271 | } 272 | 273 | 274 | QScrollBar::add-line, QScrollBar::sub-line{ 275 | border: none; 276 | background: none; 277 | 278 | width: 0px; 279 | height: 0px; 280 | } -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/ida-default/manifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 5 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/ida-default/stylesheet.qss: -------------------------------------------------------------------------------- 1 | CustomIDAMemo { 2 | font-family: ""; 3 | font-size: ; 4 | font-style: ; 5 | font-weight: ; 6 | } 7 | 8 | IDAView { 9 | font-family: ""; 10 | font-size: ; 11 | font-style: ; 12 | font-weight: ; 13 | } 14 | 15 | hexview_t { 16 | font-family: ""; 17 | font-size: ; 18 | font-style: ; 19 | font-weight: ; 20 | } -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/icons/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/icons/expand.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/icons/spacer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/icons/spacer.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/manifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 7 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/preview.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/idaskins-dark/stylesheet.qss: -------------------------------------------------------------------------------- 1 | QWidget { 2 | background-color: #363636; 3 | color: #ddd; 4 | } 5 | 6 | QCheckBox { 7 | background-color: rgba(0, 0, 0, 0); 8 | } 9 | 10 | QTextEdit { 11 | background-color: #2d2d2d; 12 | border: 1px solid #363636; 13 | border-radius: 2px; 14 | } 15 | 16 | QMenuBar, QMenuBar::item { 17 | background-color: #444444; 18 | color: #ddd; 19 | } 20 | 21 | QMenu::item:selected { 22 | background-color: #2A2A2A; 23 | } 24 | 25 | QLineEdit { 26 | border: 1px solid #474747; 27 | min-height: 20px; 28 | border-radius: 2px; 29 | } 30 | 31 | QLineEdit:hover, QLineEdit:focus { 32 | border: 1px solid #00aaaa; 33 | } 34 | 35 | QTabBar::tab { 36 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 37 | stop: 0 #555555, stop: 1 #444444); 38 | } 39 | 40 | QTabBar::tab:selected { 41 | background-color: #777777; 42 | } 43 | 44 | QHeaderView::section { 45 | background-color: #444; 46 | border-left: 3px solid #666; 47 | } 48 | 49 | QTableView { 50 | border: 1px solid #474747; 51 | background-color: #2d2d2d; 52 | 53 | } 54 | 55 | QTableCornerButton::section { 56 | background: #222; 57 | border: 2px outset #222; 58 | } 59 | 60 | IDAView, hexview_t, CustomIDAMemo { 61 | border: none; 62 | } 63 | 64 | CustomIDAMemo, EditContainer { 65 | font-family: ""; 66 | font-size: ; 67 | font-style: ; 68 | font-weight: ; 69 | } 70 | 71 | IDAView { 72 | font-family: ""; 73 | font-size: ; 74 | font-style: ; 75 | font-weight: ; 76 | } 77 | 78 | hexview_t { 79 | font-family: ""; 80 | font-size: ; 81 | font-style: ; 82 | font-weight: ; 83 | } 84 | 85 | /* TODO: DEBUG_REGISTERS, OUTPUT_WINDOW */ 86 | 87 | QScrollBar { 88 | background-color: #363636; 89 | width: 20px; 90 | height: 20px; 91 | margin: 0 0 0 0; 92 | } 93 | 94 | QScrollBar::sub-line, QScrollBar::add-line { 95 | width: 0; 96 | height: 0; 97 | } 98 | 99 | QScrollBar::add-page, QScrollBar::sub-page { 100 | background: none; 101 | } 102 | 103 | QScrollBar::handle:vertical { 104 | min-height: 20px; 105 | } 106 | 107 | QScrollBar::handle:horizontal { 108 | min-width: 20px; 109 | } 110 | 111 | QScrollBar::handle { 112 | background-color: #585858; 113 | margin: 3px; 114 | border-radius: 7px; 115 | } 116 | 117 | QToolBar { 118 | border: none; 119 | } 120 | 121 | QPushButton { 122 | border: 1px solid #077; 123 | text-align: center; 124 | min-height: 20px; 125 | min-width: 50px; 126 | padding: 0 6px 0 6px; 127 | border-radius: 2px; 128 | } 129 | 130 | QPushButton:hover, QPushButton:default { 131 | border: 1px solid #0aa; 132 | } 133 | 134 | QPushButton:pressed { 135 | border: 1px solid #0ee; 136 | } 137 | 138 | QComboBox { 139 | border: 1px solid #474747; 140 | border-radius: 2px; 141 | } 142 | 143 | QComboBox > QLineEdit, QComboBox > QLineEdit:hover, QComboBox > QLineEdit:focus { 144 | border: none; 145 | min-height: default; 146 | } 147 | 148 | QComboBox:hover, QComboBox:focus { 149 | border: 1px solid #00aaaa; 150 | } 151 | 152 | QComboBox::drop-down { 153 | subcontrol-origin: padding; 154 | subcontrol-position: top right; 155 | width: 15px; 156 | 157 | border-left-width: 1px; 158 | border-left-color: #666; 159 | border-left-style: solid; 160 | } 161 | 162 | QComboBox::down-arrow { 163 | image: url(/icons/expand.png); 164 | } 165 | 166 | /* Close, maximize and undock button for dock widgets */ 167 | IDADockWidget > QWidget > QAbstractButton { 168 | background-color: #666; 169 | border-radius: 3px; 170 | } 171 | 172 | QRadioButton, QLabel, QCheckBox { 173 | background: transparent; 174 | } 175 | 176 | TNavBand > QPushButton, RegJumpButton { 177 | min-height: 0; 178 | min-width: 0; 179 | padding: 0 0 0 0; 180 | border: none; 181 | } 182 | 183 | EditContainer, ChooserContainer, QGroupBox, QListView, QTreeView { 184 | border: 1px solid #606060; 185 | border-radius: 2px; 186 | } 187 | 188 | QGroupBox { 189 | margin-top: 5px; 190 | } 191 | 192 | QGroupBox::title { 193 | subcontrol-origin: margin; 194 | subcontrol-position: top center; 195 | } 196 | 197 | /* Remove border from IDC/Python switch button */ 198 | CLIWidget > QGroupBox > QPushButton, 199 | CLIWidget > QGroupBox > QPushButton:hover, 200 | CLIWidget > QGroupBox > QPushButton:focus { 201 | border: none; 202 | } 203 | 204 | CLIWidget > QGroupBox { 205 | margin-top: 0; 206 | } 207 | 208 | QTreeView::item:selected, QListView::item:selected, QTableView::item:selected { 209 | background-color: #474747; 210 | color: #ddd; 211 | } 212 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/README.md: -------------------------------------------------------------------------------- 1 | Qt Creator Wombat Theme 2 | ======================= 3 | 4 | This is a dark color scheme for Qt Creator inspired from the VIM [wombat][1] theme. In addition to the color scheme it also styles widgets such as combo boxes, tree views etc. to offer an elegant and uniform look and feel. 5 | 6 | ![Qt Creator with wombat theme](http://i.imgur.com/eqXMhz1.png) 7 | 8 | 9 | Note 10 | ==== 11 | 12 | This is a work in progress. Any suggestions or pull requests are appreciated. 13 | 14 | 15 | Install 16 | ======= 17 | 18 | The theme consists of two parts: 19 | 20 | 1. The wombat colorscheme 21 | 2. The application stylesheet 22 | 23 | The colorscheme should be copied in the styles directory of Qt Creator such as ~/.config/QtProject/qtcreator/styles 24 | 25 | The stylesheet can be copied along with the icons folder anywhere. It is then loaded using the -stylesheet parameter on startup of Qt Creator. 26 | 27 | An example: 28 | ``` 29 | /path/to/QtCreator/QtCreator -stylesheet=/path/to/stylesheet/stylesheet.css 30 | ``` 31 | 32 | 33 | [1]: http://dengmao.wordpress.com/2007/01/22/vim-color-scheme-wombat/ 34 | -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/caret-down_ffffff_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/caret-down_ffffff_14.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/caret-right_ffffff_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/caret-right_ffffff_14.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/check_ffffff_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/check_ffffff_14.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/video-annotator/pythonvideoannotator/dacba887d289ab254f8cc3a56eaff9465704b010/base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/icons/down_arrow.png -------------------------------------------------------------------------------- /base/pythonvideoannotator/pythonvideoannotator/resources/themes/wombat/wombat-style.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |