Merge branch 'master' of https://github.com/opentoonz/opentoonz
|
@ -1,42 +1,43 @@
|
|||
# Setting up the development environment for GNU/Linux and Unix
|
||||
# Setting up the development environment for GNU/Linux
|
||||
|
||||
## Required software
|
||||
|
||||
You will need to install some dependencies before you can build. Depending on your distribution you will be able to install the packages directly with the command lines below or will have to manually install:
|
||||
Building OpenToonz from source requires the following dependencies:
|
||||
- Git
|
||||
- GCC
|
||||
- CMake
|
||||
- confirmed to work with 3.4.1.
|
||||
- Qt5
|
||||
- http://download.qt.io/official_releases/qt/5.5/5.5.1/
|
||||
- Boost
|
||||
- http://www.boost.org/users/history/version_1_55_0.html
|
||||
- GCC or Clang
|
||||
- CMake (3.4.1 or newer).
|
||||
- Qt5 (5.5 or newer)
|
||||
- Boost (1.55 or newer)
|
||||
- SDL2
|
||||
- LibPNG
|
||||
- SuperLU
|
||||
- Lzo2
|
||||
- FreeType
|
||||
|
||||
### Installing required packages on Debian / Ubuntu
|
||||
### Installing Dependencies on Debian / Ubuntu
|
||||
|
||||
```
|
||||
$ sudo apt-get install build-essential git cmake pkg-config libboost-all-dev qt5-default qtbase5-dev libqt5svg5-dev qtscript5-dev qttools5-dev-tools libqt5opengl5-dev qtmultimedia5-dev libsuperlu-dev liblz4-dev libusb-1.0-0-dev liblzo2-dev libpng-dev libjpeg-dev libglew-dev freeglut3-dev libsdl2-dev libfreetype6-dev
|
||||
$ sudo apt-get install build-essential git cmake pkg-config libboost-all-dev qt5-default qtbase5-dev libqt5svg5-dev qtscript5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev qtmultimedia5-dev libsuperlu-dev liblz4-dev libusb-1.0-0-dev liblzo2-dev libpng-dev libjpeg-dev libglew-dev freeglut3-dev libsdl2-dev libfreetype6-dev
|
||||
```
|
||||
|
||||
Notes:
|
||||
* It's possible we also need libgsl2 (or maybe libopenbias-dev)
|
||||
* It's possible we also need `libgsl2` (or maybe `libopenblas-dev`)
|
||||
|
||||
### Installing required packages on RedHat / Mageia
|
||||
### Installing Dependencies on RedHat / CentOS
|
||||
|
||||
TODO
|
||||
```
|
||||
$ rpm ...
|
||||
```
|
||||
|
||||
### Installing required packages on Fedora
|
||||
### Installing Dependencies on Fedora
|
||||
(it may include some useless packages)
|
||||
|
||||
```
|
||||
dnf install gcc gcc-c++ automake git cmake boost boost-devel SuperLU SuperLU-devel lz4-devel libusb-devel lzo-devel libjpeg-turbo-devel GLEW libGLEW freeglut-devel freeglut SDL2 SDL2-devel freetype-devel libpng-devel qt5-base qt5-qtbase-devel qt5-qtsvg qt5-qtsvg-devel qt5-qtscript qt5-qtscript-devel qt5-qttools qt5-qttools-devel blas blas-devel
|
||||
$ dnf install gcc gcc-c++ automake git cmake boost boost-devel SuperLU SuperLU-devel lz4-devel lzma libusb-devel lzo-devel libjpeg-turbo-devel libGLEW glew-devel freeglut-devel freeglut SDL2 SDL2-devel freetype-devel libpng-devel qt5-qtbase-devel qt5-qtsvg qt5-qtsvg-devel qt5-qtscript qt5-qtscript-devel qt5-qttools qt5-qttools-devel qt5-qtmultimedia-devel blas blas-devel
|
||||
```
|
||||
|
||||
### Installing required packages on ArchLinux
|
||||
### Installing Dependencies on ArchLinux
|
||||
|
||||
```
|
||||
$ sudo pacman -S base-devel git cmake boost boost-libs qt5-base qt5-svg qt5-script qt5-tools qt5-multimedia lz4 libusb lzo libjpeg-turbo glew freeglut sdl2 freetype2
|
||||
|
@ -48,38 +49,40 @@ $ yaourt -S superlu
|
|||
```
|
||||
|
||||
Notes:
|
||||
* ArchLinux had BLAS splitted in blas and cblas
|
||||
* ArchLinux has `blas` split into `blas` and `cblas`.
|
||||
|
||||
### Installing required packages on openSUSE
|
||||
### Installing Dependencies on openSUSE
|
||||
|
||||
```
|
||||
zypper in boost-devel cmake freeglut-devel freetype2-devel gcc-c++ glew-devel libQt5OpenGL-devel libSDL2-devel libjpeg-devel liblz4-devel libpng16-compat-devel libqt5-linguist-devel libqt5-qtbase-devel libqt5-qtmultimedia-devel libqt5-qtscript-devel libqt5-qtsvg-devel libtiff-devel libusb-devel lzo-devel openblas-devel pkgconfig sed superlu-devel zlib-devel
|
||||
$ zypper in boost-devel cmake freeglut-devel freetype2-devel gcc-c++ glew-devel libQt5OpenGL-devel libSDL2-devel libjpeg-devel liblz4-devel libpng16-compat-devel libqt5-linguist-devel libqt5-qtbase-devel libqt5-qtmultimedia-devel libqt5-qtscript-devel libqt5-qtsvg-devel libtiff-devel libusb-devel lzo-devel openblas-devel pkgconfig sed superlu-devel zlib-devel
|
||||
```
|
||||
|
||||
## Build instructions
|
||||
|
||||
### cloning the git tree
|
||||
### Cloning the GIT Tree
|
||||
|
||||
```
|
||||
$ git clone https://github.com/opentoonz/opentoonz
|
||||
```
|
||||
|
||||
### Copying the stuff directory
|
||||
### Copying the 'stuff' Directory
|
||||
|
||||
TODO: some parts should really be installed in $prefix/ instead... and some other in various cache or user-local places.
|
||||
cf. https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
Until then we just follow the Win32/OSX layout.
|
||||
|
||||
It is supposedly optional but some files are actually required to run the executable properly.
|
||||
The `~/.config/OpenToonz/` directory contains your settings, work and other files.
|
||||
|
||||
The .config/OpenToonz/ directory in your home folder will contain your settings, work and other files. We need to create it from the command-line:
|
||||
Initialize this path with the folling commands:
|
||||
|
||||
```
|
||||
$ mkdir -p $HOME/.config/OpenToonz
|
||||
$ cp -r opentoonz/stuff $HOME/.config/OpenToonz/
|
||||
```
|
||||
|
||||
### Creating a default ini file for stuff folders
|
||||
*Currently this is required to run OpenToonz.*
|
||||
|
||||
### Creating SystemVar.ini
|
||||
|
||||
TODO: fix the code to discover it automatically
|
||||
|
||||
|
@ -98,20 +101,21 @@ TOONZROOT="$HOME/.config/OpenToonz/stuff"
|
|||
TOONZSTUDIOPALETTE="$HOME/.config/OpenToonz/stuff/projects/studiopalette"
|
||||
EOF
|
||||
```
|
||||
Note the generated file must not actually contain "$HOME", this shell command repaces it with /home/youraccount in the generated file.
|
||||
Note the generated file must not actually contain `$HOME`, this expands to an absolute path in the generated file.
|
||||
|
||||
### Building the tiff library from thirdparty
|
||||
### Building LibTIFF
|
||||
|
||||
TODO: make sure we can use the system libtiff instead and remove this section.
|
||||
Features from the modified libtiff and needed currently, so this isn't a simple switch.
|
||||
|
||||
```
|
||||
$ cd opentoonz/thirdparty/tiff-4.0.3
|
||||
$ CFLAGS="-fPIC" ./configure && make
|
||||
$ ./configure --with-pic --disable-jbig
|
||||
$ make
|
||||
$ cd -
|
||||
```
|
||||
|
||||
### Compiling the actual application
|
||||
### Building OpenToonz
|
||||
|
||||
```
|
||||
$ cd ../../toonz
|
||||
|
@ -123,18 +127,18 @@ $ make
|
|||
|
||||
The build takes a lot of time, be patient.
|
||||
|
||||
### Debugging the build
|
||||
### Troubleshooting Build Errors
|
||||
|
||||
If something doesn't compile or link, please run `make` this way to help spot the problem:
|
||||
```
|
||||
LANG=C make VERBOSE=1
|
||||
$ LANG=C make VERBOSE=1
|
||||
```
|
||||
|
||||
#### Debug build
|
||||
#### Debug Build
|
||||
If you need to debug the application, you should be able to use `cmake -DCMAKE_BUILD_TYPE=Debug`.
|
||||
|
||||
|
||||
### Running the application
|
||||
### Running OpenToonz
|
||||
|
||||
You can now run the application:
|
||||
|
||||
|
@ -143,7 +147,7 @@ $ cd bin
|
|||
$ LD_LIBRARY_PATH=./lib/opentoonz:$LD_LIBRARY_PATH ./bin/OpenToonz_1.0
|
||||
```
|
||||
|
||||
### Performing a system installation
|
||||
### Performing a System Installation
|
||||
|
||||
The steps above show how to run OpenToonz from the build directory,
|
||||
however you may wish to install OpenToonz onto your system.
|
||||
|
@ -158,3 +162,15 @@ Then you can launch OpenToonz by running `/opt/opentoonz/bin/opentoonz`.
|
|||
|
||||
You can change the installation path by modifying the `CMAKE_INSTALL_PREFIX` CMake variable.
|
||||
|
||||
----
|
||||
|
||||
# Linux Package Definitions
|
||||
|
||||
It may be helpful to use existing packages as a reference when creating a package for your own distribution.
|
||||
|
||||
- ArchLinux (AUR):
|
||||
https://aur.archlinux.org/packages/opentoonz-git/
|
||||
|
||||
- App-Image (Portable):
|
||||
https://github.com/morevnaproject/morevna-builds
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// out: gray_048.qss
|
||||
/* LESS Definitions */
|
||||
|
||||
/*Image URL*/
|
||||
|
@ -748,7 +748,7 @@ DvDirTreeView {
|
|||
/*---------------------------------------------------------------------------*/
|
||||
#CleanupSettingsFrame,
|
||||
#LoadLevelFrame,
|
||||
#SolidLineFrame{
|
||||
#SolidLineFrame {
|
||||
border: 1px solid @m_baseTxtColor;
|
||||
}
|
||||
|
||||
|
@ -821,30 +821,29 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
.baseBG(light, 10%);
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
|
||||
&:vertical {
|
||||
width: 18px;
|
||||
.set_margin( 0px, 20px );
|
||||
width: 16px;
|
||||
.set_margin( 0px, 16px );
|
||||
}
|
||||
&:horizontal {
|
||||
height: 18px;
|
||||
.set_margin( 20px, 0px );
|
||||
height: 16px;
|
||||
.set_margin( 16px, 0px );
|
||||
}
|
||||
|
||||
&::handle {
|
||||
border-width: 4;
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
&:vertical {
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
&:horizontal {
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
|
@ -854,7 +853,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_downarrow_pressed.png");
|
||||
|
@ -862,7 +861,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_rarrow_pressed.png");
|
||||
|
@ -874,7 +873,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_uparrow_pressed.png");
|
||||
|
@ -882,7 +881,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_larrow_pressed.png");
|
||||
|
@ -890,8 +889,8 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
|
||||
&::add-page {
|
||||
background: none;
|
||||
&::add-page, &::sub-page {
|
||||
.baseBG(light, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1365,4 +1364,15 @@ QDialog #dialogButtonFrame {
|
|||
|
||||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
#GearButton {
|
||||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
.baseBG(light, 10%);
|
||||
}
|
||||
}
|
|
@ -841,79 +841,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #4a4a4a;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("../gray_072/imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("../gray_072/imgs/sb_g_vhandle.png") 3;
|
||||
image: url("../gray_072/imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("../gray_072/imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("../gray_072/imgs/sb_g_hhandle.png") 3;
|
||||
image: url("../gray_072/imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("../gray_072/imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("../gray_072/imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("../gray_072/imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("../gray_072/imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #4a4a4a;
|
||||
}
|
||||
#noteTextEdit {
|
||||
color: black;
|
||||
|
@ -1369,5 +1369,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("../gray_072/imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #4a4a4a;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_048.qss.map
|
|
@ -841,79 +841,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #4a4a4a;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("../gray_072/imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("../gray_072/imgs/sb_g_vhandle.png") 3;
|
||||
image: url("../gray_072/imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("../gray_072/imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("../gray_072/imgs/sb_g_hhandle.png") 3;
|
||||
image: url("../gray_072/imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("../gray_072/imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("../gray_072/imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("../gray_072/imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("../gray_072/imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("../gray_072/imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #4a4a4a;
|
||||
}
|
||||
#noteTextEdit {
|
||||
color: black;
|
||||
|
@ -1369,5 +1369,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("../gray_072/imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #4a4a4a;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_048_mac.qss.map
|
|
@ -747,7 +747,7 @@ DvDirTreeView {
|
|||
/*---------------------------------------------------------------------------*/
|
||||
#CleanupSettingsFrame,
|
||||
#LoadLevelFrame,
|
||||
#SolidLineFrame{
|
||||
#SolidLineFrame {
|
||||
border: 1px solid @m_baseTxtColor;
|
||||
}
|
||||
|
||||
|
@ -821,30 +821,29 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
.baseBG(light, 10%);
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
|
||||
&:vertical {
|
||||
width: 18px;
|
||||
.set_margin( 0px, 20px );
|
||||
width: 16px;
|
||||
.set_margin( 0px, 16px );
|
||||
}
|
||||
&:horizontal {
|
||||
height: 18px;
|
||||
.set_margin( 20px, 0px );
|
||||
height: 16px;
|
||||
.set_margin( 16px, 0px );
|
||||
}
|
||||
|
||||
&::handle {
|
||||
border-width: 4;
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
&:vertical {
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
&:horizontal {
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
|
@ -854,7 +853,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_downarrow_pressed.png");
|
||||
|
@ -862,7 +861,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_rarrow_pressed.png");
|
||||
|
@ -874,7 +873,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_uparrow_pressed.png");
|
||||
|
@ -882,7 +881,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_larrow_pressed.png");
|
||||
|
@ -890,8 +889,8 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
|
||||
&::add-page {
|
||||
background: none;
|
||||
&::add-page, &::sub-page {
|
||||
.baseBG(light, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1365,4 +1364,15 @@ QDialog #dialogButtonFrame {
|
|||
|
||||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
#GearButton {
|
||||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
.baseBG(light, 10%);
|
||||
}
|
||||
}
|
|
@ -841,79 +841,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #626262;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 3;
|
||||
image: url("imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 3;
|
||||
image: url("imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #626262;
|
||||
}
|
||||
#noteTextEdit {
|
||||
color: black;
|
||||
|
@ -1369,5 +1369,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #626262;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_072.qss.map
|
|
@ -841,79 +841,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #626262;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 3;
|
||||
image: url("imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 3;
|
||||
image: url("imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #626262;
|
||||
}
|
||||
#noteTextEdit {
|
||||
color: black;
|
||||
|
@ -1369,5 +1369,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #626262;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_072_mac.qss.map
|
BIN
stuff/config/qss/gray_072/imgs/gear.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 545 B |
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 543 B |
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 555 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 545 B |
Before Width: | Height: | Size: 543 B |
Before Width: | Height: | Size: 549 B |
Before Width: | Height: | Size: 534 B |
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 562 B After Width: | Height: | Size: 549 B |
Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 534 B |
|
@ -1,3 +1,4 @@
|
|||
// out: gray_128.qss
|
||||
/* LESS Definitions */
|
||||
|
||||
/*Image URL*/
|
||||
|
@ -595,7 +596,7 @@ DvDirTreeView {
|
|||
/*---------------------------------------------------------------------------*/
|
||||
#CleanupSettingsFrame,
|
||||
#LoadLevelFrame,
|
||||
#SolidLineFrame{
|
||||
#SolidLineFrame {
|
||||
border: 1px solid rgb(20,20,20);
|
||||
}
|
||||
|
||||
|
@ -661,30 +662,29 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: rgb(160,160,160);
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
|
||||
&:vertical {
|
||||
width: 18px;
|
||||
.set_margin( 0px, 20px );
|
||||
width: 16px;
|
||||
.set_margin( 0px, 16px );
|
||||
}
|
||||
&:horizontal {
|
||||
height: 18px;
|
||||
.set_margin( 20px, 0px );
|
||||
height: 16px;
|
||||
.set_margin( 16px, 0px );
|
||||
}
|
||||
|
||||
&::handle {
|
||||
border-width: 4;
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
&:vertical {
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_vhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
&:horizontal {
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")4;
|
||||
border-image: url("@{image_url}/sb_g_hhandle.png")3;
|
||||
image: url("@{image_url}/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
|
@ -694,7 +694,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_downarrow_pressed.png");
|
||||
|
@ -702,7 +702,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_rarrow_pressed.png");
|
||||
|
@ -714,7 +714,7 @@ ParamsPage {
|
|||
subcontrol-origin: margin;
|
||||
&:vertical {
|
||||
image: url("@{image_url}/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
&:pressed {
|
||||
image: url("@{image_url}/sb_g_uparrow_pressed.png");
|
||||
|
@ -722,7 +722,7 @@ ParamsPage {
|
|||
}
|
||||
&:horizontal {
|
||||
image: url("@{image_url}/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
&:pressed{
|
||||
image: url("@{image_url}/sb_g_larrow_pressed.png");
|
||||
|
@ -730,8 +730,8 @@ ParamsPage {
|
|||
}
|
||||
}
|
||||
|
||||
&::add-page {
|
||||
background: none;
|
||||
&::add-page, &::sub-page {
|
||||
background-color: rgb(160,160,160);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1190,4 +1190,15 @@ QDialog #dialogButtonFrame {
|
|||
|
||||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
#GearButton {
|
||||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
.baseBG(light, 10%);
|
||||
}
|
||||
}
|
|
@ -591,79 +591,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #a0a0a0;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 3;
|
||||
image: url("imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 3;
|
||||
image: url("imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #a0a0a0;
|
||||
}
|
||||
XsheetViewer {
|
||||
qproperty-TextColor: black;
|
||||
|
@ -1108,5 +1108,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #9a9a9a;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_128.qss.map
|
|
@ -591,79 +591,79 @@ ParamsPage {
|
|||
background-color: #000080;
|
||||
}
|
||||
/* Customize QScrollBar vertical*/
|
||||
#XsheetScrollBar {
|
||||
background-color: #a0a0a0;
|
||||
QScrollBar {
|
||||
border: 1px solid black;
|
||||
/* buttons */
|
||||
}
|
||||
#XsheetScrollBar:vertical {
|
||||
width: 18px;
|
||||
QScrollBar:vertical {
|
||||
width: 16px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
#XsheetScrollBar:horizontal {
|
||||
height: 18px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
QScrollBar:horizontal {
|
||||
height: 16px;
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
#XsheetScrollBar::handle {
|
||||
border-width: 4;
|
||||
QScrollBar::handle {
|
||||
border-width: 3;
|
||||
image-position: center center;
|
||||
}
|
||||
#XsheetScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 4;
|
||||
QScrollBar::handle:vertical {
|
||||
border-image: url("imgs/sb_g_vhandle.png") 3;
|
||||
image: url("imgs/sb_g_vline.png");
|
||||
min-height: 40px;
|
||||
}
|
||||
#XsheetScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 4;
|
||||
QScrollBar::handle:horizontal {
|
||||
border-image: url("imgs/sb_g_hhandle.png") 3;
|
||||
image: url("imgs/sb_g_hline.png");
|
||||
min-width: 40px;
|
||||
}
|
||||
#XsheetScrollBar::add-line {
|
||||
QScrollBar::add-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical {
|
||||
QScrollBar::add-line:vertical {
|
||||
image: url("imgs/sb_g_downarrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: bottom;
|
||||
}
|
||||
#XsheetScrollBar::add-line:vertical:pressed {
|
||||
QScrollBar::add-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_downarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal {
|
||||
QScrollBar::add-line:horizontal {
|
||||
image: url("imgs/sb_g_rarrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: right;
|
||||
}
|
||||
#XsheetScrollBar::add-line:horizontal:pressed {
|
||||
QScrollBar::add-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_rarrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line {
|
||||
QScrollBar::sub-line {
|
||||
subcontrol-origin: margin;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical {
|
||||
QScrollBar::sub-line:vertical {
|
||||
image: url("imgs/sb_g_uparrow.png");
|
||||
height: 20px;
|
||||
height: 16px;
|
||||
subcontrol-position: top;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:vertical:pressed {
|
||||
QScrollBar::sub-line:vertical:pressed {
|
||||
image: url("imgs/sb_g_uparrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal {
|
||||
QScrollBar::sub-line:horizontal {
|
||||
image: url("imgs/sb_g_larrow.png");
|
||||
width: 20px;
|
||||
width: 16px;
|
||||
subcontrol-position: left;
|
||||
}
|
||||
#XsheetScrollBar::sub-line:horizontal:pressed {
|
||||
QScrollBar::sub-line:horizontal:pressed {
|
||||
image: url("imgs/sb_g_larrow_pressed.png");
|
||||
}
|
||||
#XsheetScrollBar::add-page {
|
||||
background: none;
|
||||
QScrollBar::add-page,
|
||||
QScrollBar::sub-page {
|
||||
background-color: #a0a0a0;
|
||||
}
|
||||
XsheetViewer {
|
||||
qproperty-TextColor: black;
|
||||
|
@ -1108,5 +1108,14 @@ QDialog #dialogButtonFrame {
|
|||
#LargeSizedText {
|
||||
font-size: 17px;
|
||||
}
|
||||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
#StartupLabel:hover {
|
||||
background-color: #9a9a9a;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=gray_128_mac.qss.map
|
BIN
stuff/config/qss/gray_128/imgs/gear.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 631 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 630 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 631 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 641 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 648 B After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 16 KiB |
|
@ -2,9 +2,9 @@
|
|||
<menu title="File">
|
||||
<command>MI_NewScene</command>
|
||||
<command>MI_LoadScene</command>
|
||||
<command>MI_SaveAll</command>
|
||||
<command>MI_SaveScene</command>
|
||||
<command>MI_SaveSceneAs</command>
|
||||
<command>MI_SaveAll</command>
|
||||
<command>MI_OpenRecentScene</command>
|
||||
<command>MI_RevertScene</command>
|
||||
<separator/>
|
||||
|
@ -13,6 +13,7 @@
|
|||
<separator/>
|
||||
<command>MI_NewLevel</command>
|
||||
<command>MI_LoadLevel</command>
|
||||
<command>MI_SaveAllLevels</command>
|
||||
<command>MI_SaveLevel</command>
|
||||
<command>MI_SaveLevelAs</command>
|
||||
<command>MI_ExportLevel</command>
|
||||
|
@ -33,6 +34,7 @@
|
|||
<separator/>
|
||||
<command>MI_OutputSettings</command>
|
||||
<command>MI_Render</command>
|
||||
<command>MI_FastRender</command>
|
||||
<separator/>
|
||||
<command>MI_PrintXsheet</command>
|
||||
<command>MI_Print</command>
|
||||
|
@ -233,6 +235,7 @@
|
|||
<command>MI_ResetRoomLayout</command>
|
||||
</menu>
|
||||
<menu title="Help">
|
||||
<command>MI_StartupPopup</command>
|
||||
<command>MI_About</command>
|
||||
</menu>
|
||||
</menubar>
|
|
@ -13,6 +13,7 @@
|
|||
<separator/>
|
||||
<command>MI_NewLevel</command>
|
||||
<command>MI_LoadLevel</command>
|
||||
<command>MI_SaveAllLevels</command>
|
||||
<command>MI_SaveLevel</command>
|
||||
<command>MI_SaveLevelAs</command>
|
||||
<command>MI_ExportLevel</command>
|
||||
|
|
366
stuff/profiles/layouts/shortcuts/defopentoonz.ini
Normal file
|
@ -0,0 +1,366 @@
|
|||
[shortcuts]
|
||||
MI_Clear=Del
|
||||
MI_OnionSkin=/
|
||||
A_DecreaseBrushHardness=
|
||||
A_DecreaseMaxBrushThickness=U
|
||||
A_DecreaseMinBrushThickness=H
|
||||
A_FxSchematicToggle=
|
||||
A_IncreaseBrushHardness=
|
||||
A_IncreaseMaxBrushThickness=I
|
||||
A_IncreaseMinBrushThickness=J
|
||||
A_ToolOption_AutoGroup=
|
||||
A_ToolOption_AutoSelect%3AColumn=
|
||||
A_ToolOption_AutoSelect%3ANone=
|
||||
A_ToolOption_AutoSelect%3APegbar=
|
||||
A_ToolOption_AutoSelectDrawing=
|
||||
A_ToolOption_Autofill=
|
||||
A_ToolOption_BreakSharpAngles=
|
||||
A_ToolOption_BrushPreset=
|
||||
A_ToolOption_EditToolActiveAxis=
|
||||
A_ToolOption_EditToolActiveAxis%3ACenter=
|
||||
A_ToolOption_EditToolActiveAxis%3APosition=
|
||||
A_ToolOption_EditToolActiveAxis%3ARotation=
|
||||
A_ToolOption_EditToolActiveAxis%3AScale=
|
||||
A_ToolOption_EditToolActiveAxis%3AShear=
|
||||
A_ToolOption_FrameRange=F6
|
||||
A_ToolOption_GeometricEdge=
|
||||
A_ToolOption_GeometricShape=
|
||||
A_ToolOption_GlobalKey=
|
||||
A_ToolOption_IK=
|
||||
A_ToolOption_Invert=
|
||||
A_ToolOption_JoinVectors=
|
||||
A_ToolOption_Manual=
|
||||
A_ToolOption_Meshify=
|
||||
A_ToolOption_Mode=
|
||||
A_ToolOption_Mode%3AAreas=
|
||||
A_ToolOption_Mode%3ALines=
|
||||
A_ToolOption_Mode%3ALines%20%26%20Areas=
|
||||
A_ToolOption_OnionSkin=
|
||||
A_ToolOption_Orientation=
|
||||
A_ToolOption_PencilMode=
|
||||
A_ToolOption_PickScreen=
|
||||
A_ToolOption_PreserveThickness=
|
||||
A_ToolOption_PressureSensitivity=Shift+P
|
||||
A_ToolOption_SegmentInk=F8
|
||||
A_ToolOption_Selective=F7
|
||||
A_ToolOption_ShowOnlyActiveSkeleton=
|
||||
A_ToolOption_SkeletonMode%3AAnimate=
|
||||
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
|
||||
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
|
||||
A_ToolOption_Smooth=
|
||||
A_ToolOption_Snap=
|
||||
A_ToolOption_Type=
|
||||
A_ToolOption_Type%3AFreehand=
|
||||
A_ToolOption_Type%3ANormal=
|
||||
A_ToolOption_Type%3APolyline=
|
||||
A_ToolOption_Type%3ARectangular=F5
|
||||
A_ToolOption_TypeFont=
|
||||
A_ToolOption_TypeSize=
|
||||
A_ToolOption_TypeStyle=
|
||||
MI_ACheck=
|
||||
MI_About=
|
||||
MI_ActivateAllColumns=
|
||||
MI_ActivateSelectedColumns=
|
||||
MI_ActivateThisColumnOnly=
|
||||
MI_AddFrames=
|
||||
MI_AddToBatchCleanupList=
|
||||
MI_AddToBatchRenderList=
|
||||
MI_AdjustLevels=
|
||||
MI_AdjustThickness=
|
||||
MI_Antialias=
|
||||
MI_ApplyMatchLines=
|
||||
MI_AutoFillToggle=Shift+A
|
||||
MI_Autocenter=
|
||||
MI_Autorenumber=
|
||||
MI_BCheck=
|
||||
MI_Binarize=
|
||||
MI_BlendColors=
|
||||
MI_BlueChannel=
|
||||
MI_BlueChannelGreyscale=
|
||||
MI_BrightnessAndContrast=
|
||||
MI_BringForward=]
|
||||
MI_BringToFront=Ctrl+]
|
||||
MI_CameraSettings=
|
||||
MI_CameraStage=
|
||||
MI_CameraTest=
|
||||
MI_CanvasSize=
|
||||
MI_Cleanup=
|
||||
MI_CleanupPreview=
|
||||
MI_CleanupSettings=
|
||||
MI_ClearRecentImage=
|
||||
MI_ClearRecentLevel=
|
||||
MI_ClearRecentScene=
|
||||
MI_CloneChild=
|
||||
MI_CloneLevel=
|
||||
MI_ClonePreview=
|
||||
MI_CloseChild=
|
||||
MI_Collapse=
|
||||
MI_CollectAssets=
|
||||
MI_CompareToSnapshot=
|
||||
MI_ConvertFileWithInput=
|
||||
MI_ConvertFiles=
|
||||
MI_ConvertToVectors=
|
||||
MI_Copy=Ctrl+C
|
||||
MI_Cut=Ctrl+X
|
||||
MI_DeactivateAllColumns=
|
||||
MI_DeactivateSelectedColumns=
|
||||
MI_DeactivateUpperColumns=
|
||||
MI_DecreaseStep=";"
|
||||
MI_DefineScanner=
|
||||
MI_DeleteInk=
|
||||
MI_DeleteMatchLines=
|
||||
MI_DisableAllColumns=
|
||||
MI_DisableSelectedColumns=
|
||||
MI_DockingCheck=
|
||||
MI_DrawingSubBackward=Q
|
||||
MI_DrawingSubForward=W
|
||||
MI_DrawingSubGroupBackward=Alt+Q
|
||||
MI_DrawingSubGroupForward=Alt+W
|
||||
MI_Dup=
|
||||
MI_Duplicate=D
|
||||
MI_DuplicateFile=
|
||||
MI_Each2=
|
||||
MI_Each3=
|
||||
MI_Each4=
|
||||
MI_EditLevel=
|
||||
MI_EditShift=
|
||||
MI_EnableAllColumns=
|
||||
MI_EnableSelectedColumns=
|
||||
MI_EnableThisColumnOnly=
|
||||
MI_EnterGroup=
|
||||
MI_EraseUnusedStyles=
|
||||
MI_ExitGroup=
|
||||
MI_ExplodeChild=
|
||||
MI_ExportLevel=
|
||||
MI_ExportScenes=
|
||||
MI_ExposeResource=
|
||||
MI_FieldGuide=Shift+G
|
||||
MI_FileInfo=
|
||||
MI_FillAreas=
|
||||
MI_FillLines=
|
||||
MI_FirstFrame="Alt+,"
|
||||
MI_FoldColumns=
|
||||
MI_FrezzePreview=
|
||||
MI_FullScreenWindow=Ctrl+`
|
||||
MI_FxParamEditor=Ctrl+K
|
||||
MI_GCheck=
|
||||
MI_GetColorFromStudioPalette=
|
||||
MI_GreenChannel=
|
||||
MI_GreenChannelGreyscale=
|
||||
MI_Group=Ctrl+G
|
||||
MI_Histogram=
|
||||
MI_ICheck=
|
||||
MI_IOnly=
|
||||
MI_ImportMagpieFile=
|
||||
MI_ImportScenes=
|
||||
MI_IncreaseStep="'"
|
||||
MI_Increment=
|
||||
MI_Ink1Check=
|
||||
MI_Insert=Ins
|
||||
MI_InsertFx=Ctrl+F
|
||||
MI_InsertGlobalKeyframe=
|
||||
MI_InsertSceneFrame=
|
||||
MI_InvertKeyframeSelection=
|
||||
MI_InvertSelection=
|
||||
MI_LastFrame=Alt+.
|
||||
MI_LevelSettings=
|
||||
MI_LinesFade=
|
||||
MI_Link=
|
||||
MI_LoadColorModel=
|
||||
MI_LoadFolder=
|
||||
MI_LoadLevel=
|
||||
MI_LoadScene=Ctrl+L
|
||||
MI_LoadSubSceneFile=
|
||||
MI_LockAllColumns=Ctrl+Alt+Shift+L
|
||||
MI_LockSelectedColumns=Ctrl+Shift+L
|
||||
MI_LockThisColumnOnly=Shift+L
|
||||
MI_Loop=L
|
||||
MI_MatteChannel=
|
||||
MI_MaximizePanel=`
|
||||
MI_MergeCmapped=
|
||||
MI_MergeColumns=
|
||||
MI_MergeFrames=
|
||||
MI_NewLevel=Alt+N
|
||||
MI_NewOutputFx=
|
||||
MI_NewProject=
|
||||
MI_NewScene=Ctrl+N
|
||||
MI_NextDrawing=.
|
||||
MI_NextFrame=Shift+.
|
||||
MI_NextStep=
|
||||
MI_NoShift=
|
||||
MI_OpacityCheck=Alt+1
|
||||
MI_OpenBatchServers=
|
||||
MI_OpenChild=
|
||||
MI_OpenCleanupSettings=
|
||||
MI_OpenColorModel=
|
||||
MI_OpenComboViewer=
|
||||
MI_OpenFileBrowser=
|
||||
MI_OpenFileBrowser2=
|
||||
MI_OpenFileViewer=
|
||||
MI_OpenFilmStrip=
|
||||
MI_OpenFunctionEditor=
|
||||
MI_OpenHistoryPanel=Ctrl+H
|
||||
MI_OpenLevelView=
|
||||
MI_OpenPalette=
|
||||
MI_OpenPltGizmo=
|
||||
MI_OpenRecentLevel=
|
||||
MI_OpenRecentScene=
|
||||
MI_OpenSchematic=
|
||||
MI_OpenScriptConsole=
|
||||
MI_OpenStudioPalette=
|
||||
MI_OpenStyleControl=
|
||||
MI_OpenTMessage=
|
||||
MI_OpenTasks=
|
||||
MI_OpenToolOptionBar=
|
||||
MI_OpenToolbar=
|
||||
MI_OpenXshView=
|
||||
MI_OutputSettings=Ctrl+O
|
||||
MI_OverwritePalette=
|
||||
MI_PCheck=
|
||||
MI_Paste=Ctrl+V
|
||||
MI_PasteColors=
|
||||
MI_PasteInto=
|
||||
MI_PasteNames=
|
||||
MI_PasteValues=
|
||||
MI_Pause=
|
||||
MI_PencilTest=
|
||||
MI_PickStyleAreas=
|
||||
MI_PickStyleLines=
|
||||
MI_Play=P
|
||||
MI_Preferences=Ctrl+U
|
||||
MI_PrevDrawing=","
|
||||
MI_PrevFrame="Shift+,"
|
||||
MI_PrevStep=
|
||||
MI_Preview=Ctrl+R
|
||||
MI_PreviewFx=
|
||||
MI_PreviewSettings=
|
||||
MI_Print=Ctrl+P
|
||||
MI_PrintXsheet=
|
||||
MI_ProjectSettings=
|
||||
MI_Quit=Ctrl+Q
|
||||
MI_Random=
|
||||
MI_RasterizePli=
|
||||
MI_RedChannel=
|
||||
MI_RedChannelGreyscale=
|
||||
MI_Redo=Ctrl+Y
|
||||
MI_Reframe1=
|
||||
MI_Reframe2=
|
||||
MI_Reframe3=
|
||||
MI_Reframe4=
|
||||
MI_RefreshTree=
|
||||
MI_RegenerateFramePr=
|
||||
MI_RegeneratePreview=
|
||||
MI_ReloadStyle=
|
||||
MI_RemoveEndpoints=
|
||||
MI_RemoveGlobalKeyframe=
|
||||
MI_RemoveLevel=
|
||||
MI_RemoveSceneFrame=
|
||||
MI_RemoveUnused=
|
||||
MI_Render=Ctrl+Shift+R
|
||||
MI_Renumber=
|
||||
MI_ReplaceLevel=
|
||||
MI_ReplaceParentDirectory=
|
||||
MI_Resequence=
|
||||
MI_ResetInterpolation=
|
||||
MI_ResetRoomLayout=
|
||||
MI_ResetScanCropbox=
|
||||
MI_ResetShift=
|
||||
MI_ResetStep=
|
||||
MI_Reverse=
|
||||
MI_RevertScene=
|
||||
MI_RevertToCleanedUp=
|
||||
MI_RevertToLastSaved=
|
||||
MI_Rolldown=
|
||||
MI_Rollup=
|
||||
MI_RunScript=
|
||||
MI_SafeArea=
|
||||
MI_SaveAll=Ctrl+S
|
||||
MI_SaveDefaultSettings=
|
||||
MI_SaveLevel=
|
||||
MI_SaveLevelAs=
|
||||
MI_SavePaletteAs=
|
||||
MI_SavePreset=
|
||||
MI_SavePreviewedFrames=
|
||||
MI_SaveScene=Ctrl+Shift+S
|
||||
MI_SaveSceneAs=
|
||||
MI_SaveSubxsheetAs=
|
||||
MI_Scan=
|
||||
MI_ScanSettings=
|
||||
MI_SceneSettings=
|
||||
MI_SelectAll=Ctrl+A
|
||||
MI_SelectAllKeyframes=
|
||||
MI_SelectAllKeyframesNotAfter=
|
||||
MI_SelectAllKeyframesNotBefore=
|
||||
MI_SelectColumnKeyframes=
|
||||
MI_SelectFollowingKeysInColumn=
|
||||
MI_SelectFollowingKeysInRow=
|
||||
MI_SelectPreviousKeysInColumn=
|
||||
MI_SelectPreviousKeysInRow=
|
||||
MI_SelectRowKeyframes=
|
||||
MI_SendBack=Ctrl+[
|
||||
MI_SendBackward=[
|
||||
MI_SetAcceleration=
|
||||
MI_SetConstantSpeed=
|
||||
MI_SetDeceleration=
|
||||
MI_SetKeyframes=Z
|
||||
MI_SetScanCropbox=
|
||||
MI_ShiftTrace=
|
||||
MI_ShortcutPopup=
|
||||
MI_ShowFolderContents=
|
||||
MI_Step2=
|
||||
MI_Step3=
|
||||
MI_Step4=
|
||||
MI_SwapEnabledColumns=
|
||||
MI_Swing=
|
||||
MI_TCheck=
|
||||
MI_TimeStretch=
|
||||
MI_ToggleColumnLocks=
|
||||
MI_ToggleColumnsActivation=
|
||||
MI_ToggleEditInPlace=
|
||||
MI_Tracking=
|
||||
MI_Undo=Ctrl+Z
|
||||
MI_Ungroup=Ctrl+Shift+G
|
||||
MI_UnlockAllColumns=Ctrl+Alt+Shift+U
|
||||
MI_UnlockSelectedColumns=Ctrl+Shift+U
|
||||
MI_ViewBBox=
|
||||
MI_ViewCamera=
|
||||
MI_ViewColorcard=
|
||||
MI_ViewFile=
|
||||
MI_ViewGuide=
|
||||
MI_ViewRuler=
|
||||
MI_ViewTable=
|
||||
MI_ZeroThick=Shift+/
|
||||
T_ActualPixelSize=N
|
||||
T_Bender=
|
||||
T_Brush=B
|
||||
T_ControlPointEditor=C
|
||||
T_Cutter=
|
||||
T_Edit=E
|
||||
T_Eraser=A
|
||||
T_Fill=F
|
||||
T_Finger=
|
||||
T_Geometric=G
|
||||
T_Hand=Space
|
||||
T_Hook=O
|
||||
T_Iron=
|
||||
T_Magnet=
|
||||
T_PaintBrush=
|
||||
T_Pinch=M
|
||||
T_Plastic=X
|
||||
T_Pump=
|
||||
T_RGBPicker=R
|
||||
T_Rotate=Ctrl+Space
|
||||
T_Ruler=
|
||||
T_Selection=S
|
||||
T_ShowHideFullScreen=Alt+F
|
||||
T_Skeleton=V
|
||||
T_StylePicker=K
|
||||
T_Tape=T
|
||||
T_Tracker=
|
||||
T_Type=Y
|
||||
T_Zoom=Shift+Space
|
||||
T_ZoomFit=Alt+9
|
||||
T_ZoomReset=Alt+0
|
||||
T_Zoomin=+
|
||||
T_Zoomout=-
|
||||
MI_LoadRecentImage=
|
366
stuff/profiles/layouts/shortcuts/otadobe.ini
Normal file
|
@ -0,0 +1,366 @@
|
|||
[shortcuts]
|
||||
MI_LoadRecentImage=
|
||||
A_ToolOption_FrameRange=
|
||||
A_ToolOption_SegmentInk=
|
||||
A_ToolOption_Selective=
|
||||
A_ToolOption_Type%3ARectangular=
|
||||
MI_BringForward=Ctrl+Up
|
||||
MI_BringToFront=Ctrl+Shift+Up
|
||||
MI_Clear=Delete
|
||||
MI_Copy=Ctrl+C
|
||||
MI_Cut=Ctrl+X
|
||||
MI_DrawingSubBackward=[
|
||||
MI_DrawingSubForward=]
|
||||
MI_DrawingSubGroupBackward=Ctrl+[
|
||||
MI_DrawingSubGroupForward=Ctrl+]
|
||||
MI_Duplicate=
|
||||
MI_FullScreenWindow=Ctrl+F
|
||||
MI_FxParamEditor=
|
||||
MI_Group=Ctrl+G
|
||||
MI_Insert=Ins
|
||||
MI_InsertFx=
|
||||
MI_LoadScene=Ctrl+O
|
||||
MI_MaximizePanel=
|
||||
MI_NewScene=Ctrl+N
|
||||
MI_NextDrawing=G
|
||||
MI_NextFrame=.
|
||||
MI_OpacityCheck=
|
||||
MI_Paste=Ctrl+V
|
||||
MI_PrevDrawing=F
|
||||
MI_PrevFrame=","
|
||||
MI_Preview=Alt+P
|
||||
MI_Quit=Ctrl+Q
|
||||
MI_Redo=Ctrl+Y
|
||||
MI_SaveScene=Ctrl+Shift+S
|
||||
MI_SaveSceneAs=Ctrl+Alt+Shift+S
|
||||
MI_SelectAll=Shift+A
|
||||
MI_SendBack=Ctrl+Shift+Down
|
||||
MI_SendBackward=Ctrl+Down
|
||||
MI_Undo=Ctrl+Z
|
||||
MI_ZeroThick=D
|
||||
T_ActualPixelSize=
|
||||
T_Brush=Alt+B
|
||||
T_ControlPointEditor=Alt+A
|
||||
T_Edit=Alt+Q
|
||||
T_Eraser=Alt+E
|
||||
T_Fill=Alt+K
|
||||
T_Geometric=Atl+R
|
||||
T_Hand=
|
||||
T_Pinch=
|
||||
T_Rotate=
|
||||
T_Selection=Alt+V
|
||||
T_StylePicker=Alt+I
|
||||
T_Tape=Alt+C
|
||||
T_Type=
|
||||
T_Zoom=Alt+Z
|
||||
T_ZoomReset=Shift+Z
|
||||
T_Zoomin=Ctrl+=
|
||||
T_Zoomout=Ctrl+-
|
||||
A_DecreaseBrushHardness=
|
||||
A_DecreaseMaxBrushThickness=
|
||||
A_DecreaseMinBrushThickness=
|
||||
A_FxSchematicToggle=
|
||||
A_IncreaseBrushHardness=
|
||||
A_IncreaseMaxBrushThickness=
|
||||
A_IncreaseMinBrushThickness=
|
||||
A_ToolOption_AutoGroup=
|
||||
A_ToolOption_AutoSelect%3AColumn=
|
||||
A_ToolOption_AutoSelect%3ANone=
|
||||
A_ToolOption_AutoSelect%3APegbar=
|
||||
A_ToolOption_AutoSelectDrawing=
|
||||
A_ToolOption_Autofill=
|
||||
A_ToolOption_BreakSharpAngles=
|
||||
A_ToolOption_BrushPreset=
|
||||
A_ToolOption_EditToolActiveAxis=
|
||||
A_ToolOption_EditToolActiveAxis%3ACenter=
|
||||
A_ToolOption_EditToolActiveAxis%3APosition=
|
||||
A_ToolOption_EditToolActiveAxis%3ARotation=
|
||||
A_ToolOption_EditToolActiveAxis%3AScale=
|
||||
A_ToolOption_EditToolActiveAxis%3AShear=
|
||||
A_ToolOption_GeometricEdge=
|
||||
A_ToolOption_GeometricShape=
|
||||
A_ToolOption_GlobalKey=
|
||||
A_ToolOption_IK=Alt+8
|
||||
A_ToolOption_Invert=
|
||||
A_ToolOption_JoinVectors=
|
||||
A_ToolOption_Manual=
|
||||
A_ToolOption_Meshify=
|
||||
A_ToolOption_Mode=
|
||||
A_ToolOption_Mode%3AAreas=
|
||||
A_ToolOption_Mode%3ALines=
|
||||
A_ToolOption_Mode%3ALines%20%26%20Areas=
|
||||
A_ToolOption_OnionSkin=
|
||||
A_ToolOption_Orientation=
|
||||
A_ToolOption_PencilMode=
|
||||
A_ToolOption_PickScreen=
|
||||
A_ToolOption_PreserveThickness=
|
||||
A_ToolOption_PressureSensitivity=
|
||||
A_ToolOption_ShowOnlyActiveSkeleton=
|
||||
A_ToolOption_SkeletonMode%3AAnimate=
|
||||
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
|
||||
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
|
||||
A_ToolOption_Smooth=
|
||||
A_ToolOption_Snap=
|
||||
A_ToolOption_Type=
|
||||
A_ToolOption_Type%3AFreehand=
|
||||
A_ToolOption_Type%3ANormal=
|
||||
A_ToolOption_Type%3APolyline=
|
||||
A_ToolOption_TypeFont=
|
||||
A_ToolOption_TypeSize=
|
||||
A_ToolOption_TypeStyle=
|
||||
MI_ACheck=
|
||||
MI_About=
|
||||
MI_ActivateAllColumns=
|
||||
MI_ActivateSelectedColumns=
|
||||
MI_ActivateThisColumnOnly=
|
||||
MI_AddFrames=Ctrl+H
|
||||
MI_AddToBatchCleanupList=
|
||||
MI_AddToBatchRenderList=
|
||||
MI_AdjustLevels=
|
||||
MI_AdjustThickness=
|
||||
MI_Antialias=
|
||||
MI_ApplyMatchLines=
|
||||
MI_AutoFillToggle=
|
||||
MI_Autocenter=
|
||||
MI_Autorenumber=
|
||||
MI_BCheck=
|
||||
MI_Binarize=
|
||||
MI_BlendColors=
|
||||
MI_BlueChannel=
|
||||
MI_BlueChannelGreyscale=
|
||||
MI_BrightnessAndContrast=
|
||||
MI_CameraSettings=
|
||||
MI_CameraStage=
|
||||
MI_CameraTest=
|
||||
MI_CanvasSize=
|
||||
MI_Cleanup=
|
||||
MI_CleanupPreview=
|
||||
MI_CleanupSettings=
|
||||
MI_ClearRecentImage=
|
||||
MI_ClearRecentLevel=
|
||||
MI_ClearRecentScene=
|
||||
MI_CloneChild=
|
||||
MI_CloneLevel=
|
||||
MI_ClonePreview=
|
||||
MI_CloseChild=
|
||||
MI_Collapse=
|
||||
MI_CollectAssets=
|
||||
MI_CompareToSnapshot=
|
||||
MI_ConvertFileWithInput=
|
||||
MI_ConvertFiles=
|
||||
MI_ConvertToVectors=
|
||||
MI_DeactivateAllColumns=
|
||||
MI_DeactivateSelectedColumns=Alt+H
|
||||
MI_DeactivateUpperColumns=
|
||||
MI_DecreaseStep=
|
||||
MI_DefineScanner=
|
||||
MI_DeleteInk=
|
||||
MI_DeleteMatchLines=
|
||||
MI_DisableAllColumns=
|
||||
MI_DisableSelectedColumns=
|
||||
MI_DockingCheck=
|
||||
MI_Dup=
|
||||
MI_DuplicateFile=
|
||||
MI_Each2=
|
||||
MI_Each3=
|
||||
MI_Each4=
|
||||
MI_EditLevel=
|
||||
MI_EditShift=
|
||||
MI_EnableAllColumns=Alt+Shift+H
|
||||
MI_EnableSelectedColumns=
|
||||
MI_EnableThisColumnOnly=
|
||||
MI_EnterGroup=Ctrl+Return
|
||||
MI_EraseUnusedStyles=
|
||||
MI_ExitGroup=Backspace
|
||||
MI_ExplodeChild=Ctrl+B
|
||||
MI_ExportLevel=
|
||||
MI_ExportScenes=
|
||||
MI_ExposeResource=
|
||||
MI_FieldGuide="Ctrl+'"
|
||||
MI_FileInfo=
|
||||
MI_FillAreas=
|
||||
MI_FillLines=
|
||||
MI_FirstFrame=Home
|
||||
MI_FoldColumns=
|
||||
MI_FrezzePreview=
|
||||
MI_GCheck=
|
||||
MI_GetColorFromStudioPalette=
|
||||
MI_GreenChannel=
|
||||
MI_GreenChannelGreyscale=
|
||||
MI_Histogram=
|
||||
MI_ICheck=
|
||||
MI_IOnly=
|
||||
MI_ImportMagpieFile=
|
||||
MI_ImportScenes=
|
||||
MI_IncreaseStep="+"
|
||||
MI_Increment=
|
||||
MI_Ink1Check=
|
||||
MI_InsertGlobalKeyframe=
|
||||
MI_InsertSceneFrame=
|
||||
MI_InvertKeyframeSelection=
|
||||
MI_InvertSelection=
|
||||
MI_LastFrame=End
|
||||
MI_LevelSettings=
|
||||
MI_LinesFade=
|
||||
MI_Link=
|
||||
MI_LoadColorModel=
|
||||
MI_LoadFolder=
|
||||
MI_LoadLevel=
|
||||
MI_LoadSubSceneFile=
|
||||
MI_LockAllColumns=
|
||||
MI_LockSelectedColumns=
|
||||
MI_LockThisColumnOnly=
|
||||
MI_Loop=
|
||||
MI_MatteChannel=
|
||||
MI_MergeCmapped=
|
||||
MI_MergeColumns=
|
||||
MI_MergeFrames=
|
||||
MI_NewLevel=
|
||||
MI_NewOutputFx=
|
||||
MI_NewProject=
|
||||
MI_NextStep=
|
||||
MI_NoShift=
|
||||
MI_OnionSkin=Ctrl+Alt+O
|
||||
MI_OpenBatchServers=
|
||||
MI_OpenChild=
|
||||
MI_OpenCleanupSettings=
|
||||
MI_OpenColorModel=
|
||||
MI_OpenComboViewer=
|
||||
MI_OpenFileBrowser=
|
||||
MI_OpenFileBrowser2=
|
||||
MI_OpenFileViewer=
|
||||
MI_OpenFilmStrip=
|
||||
MI_OpenFunctionEditor=Alt+F
|
||||
MI_OpenHistoryPanel=
|
||||
MI_OpenLevelView=
|
||||
MI_OpenPalette=
|
||||
MI_OpenPltGizmo=
|
||||
MI_OpenRecentScene=
|
||||
MI_OpenSchematic=
|
||||
MI_OpenScriptConsole=
|
||||
MI_OpenStudioPalette=
|
||||
MI_OpenStyleControl=
|
||||
MI_OpenTMessage=
|
||||
MI_OpenTasks=
|
||||
MI_OpenToolOptionBar=
|
||||
MI_OpenToolbar=
|
||||
MI_OpenXshView=
|
||||
MI_OutputSettings=
|
||||
MI_OverwritePalette=
|
||||
MI_PCheck=
|
||||
MI_PasteColors=
|
||||
MI_PasteInto=
|
||||
MI_PasteNames=
|
||||
MI_PasteValues=
|
||||
MI_Pause=
|
||||
MI_PencilTest=
|
||||
MI_PickStyleAreas=
|
||||
MI_PickStyleLines=
|
||||
MI_Play=Return
|
||||
MI_Preferences=Ctrl+U
|
||||
MI_PrevStep=
|
||||
MI_PreviewFx=
|
||||
MI_PreviewSettings=
|
||||
MI_Print=
|
||||
MI_PrintXsheet=
|
||||
MI_ProjectSettings=
|
||||
MI_Random=
|
||||
MI_RasterizePli=
|
||||
MI_RedChannel=
|
||||
MI_RedChannelGreyscale=
|
||||
MI_Reframe1=
|
||||
MI_Reframe2=
|
||||
MI_Reframe3=
|
||||
MI_Reframe4=
|
||||
MI_RefreshTree=
|
||||
MI_RegenerateFramePr=
|
||||
MI_RegeneratePreview=
|
||||
MI_ReloadStyle=
|
||||
MI_RemoveEndpoints=
|
||||
MI_RemoveGlobalKeyframe=
|
||||
MI_RemoveLevel=
|
||||
MI_RemoveSceneFrame=
|
||||
MI_RemoveUnused=
|
||||
MI_Render=Ctrl+Alt+Shift+S
|
||||
MI_Renumber=
|
||||
MI_ReplaceLevel=
|
||||
MI_ReplaceParentDirectory=
|
||||
MI_Resequence=
|
||||
MI_ResetInterpolation=
|
||||
MI_ResetRoomLayout=
|
||||
MI_ResetScanCropbox=
|
||||
MI_ResetShift=
|
||||
MI_ResetStep=
|
||||
MI_Reverse=
|
||||
MI_RevertScene=
|
||||
MI_RevertToCleanedUp=
|
||||
MI_RevertToLastSaved=
|
||||
MI_Rolldown=
|
||||
MI_Rollup=
|
||||
MI_RunScript=
|
||||
MI_SafeArea=
|
||||
MI_SaveAll=Ctrl+S
|
||||
MI_SaveDefaultSettings=
|
||||
MI_SaveLevel=
|
||||
MI_SaveLevelAs=
|
||||
MI_SavePaletteAs=
|
||||
MI_SavePreset=
|
||||
MI_SavePreviewedFrames=
|
||||
MI_SaveSubxsheetAs=
|
||||
MI_Scan=
|
||||
MI_ScanSettings=
|
||||
MI_SceneSettings=Ctrl+F3
|
||||
MI_SelectAllKeyframes=
|
||||
MI_SelectAllKeyframesNotAfter=
|
||||
MI_SelectAllKeyframesNotBefore=
|
||||
MI_SelectColumnKeyframes=
|
||||
MI_SelectFollowingKeysInColumn=
|
||||
MI_SelectFollowingKeysInRow=
|
||||
MI_SelectPreviousKeysInColumn=
|
||||
MI_SelectPreviousKeysInRow=
|
||||
MI_SelectRowKeyframes=
|
||||
MI_SetAcceleration=
|
||||
MI_SetConstantSpeed=
|
||||
MI_SetDeceleration=
|
||||
MI_SetKeyframes=Ctrl+F6
|
||||
MI_SetScanCropbox=
|
||||
MI_ShiftTrace=
|
||||
MI_ShortcutPopup=
|
||||
MI_ShowFolderContents=
|
||||
MI_Step2=
|
||||
MI_Step3=
|
||||
MI_Step4=
|
||||
MI_SwapEnabledColumns=
|
||||
MI_Swing=
|
||||
MI_TCheck=
|
||||
MI_TimeStretch=
|
||||
MI_ToggleColumnLocks=
|
||||
MI_ToggleColumnsActivation=
|
||||
MI_ToggleEditInPlace=
|
||||
MI_Tracking=
|
||||
MI_Ungroup=Ctrl+Shift+G
|
||||
MI_UnlockAllColumns=Ctrl+Alt+Shift+L
|
||||
MI_UnlockSelectedColumns=Ctrl+Shift+K
|
||||
MI_ViewBBox=
|
||||
MI_ViewCamera=
|
||||
MI_ViewColorcard=
|
||||
MI_ViewFile=
|
||||
MI_ViewGuide=
|
||||
MI_ViewRuler=Ctrl+Alt+Shift+R
|
||||
MI_ViewTable=
|
||||
T_Bender=
|
||||
T_Cutter=Alt+T
|
||||
T_Finger=
|
||||
T_Hook=
|
||||
T_Iron=
|
||||
T_Magnet=
|
||||
T_PaintBrush=
|
||||
T_Plastic=
|
||||
T_Pump=
|
||||
T_RGBPicker=
|
||||
T_Ruler=
|
||||
T_ShowHideFullScreen=F4
|
||||
T_Skeleton=
|
||||
T_Tracker=
|
||||
T_ZoomFit=
|
||||
MI_OpenRecentLevel=
|
366
stuff/profiles/layouts/shortcuts/otharmony.ini
Normal file
|
@ -0,0 +1,366 @@
|
|||
[shortcuts]
|
||||
MI_LoadRecentImage=
|
||||
A_ToolOption_FrameRange=
|
||||
A_ToolOption_SegmentInk=
|
||||
A_ToolOption_Selective=
|
||||
A_ToolOption_Type%3ARectangular=
|
||||
MI_BringForward=Ctrl+PgUp
|
||||
MI_BringToFront=Ctrl+Shift+PgUp
|
||||
MI_Clear=Delete
|
||||
MI_Copy=Ctrl+C
|
||||
MI_Cut=Ctrl+X
|
||||
MI_DrawingSubBackward=[
|
||||
MI_DrawingSubForward=]
|
||||
MI_DrawingSubGroupBackward=Ctrl+[
|
||||
MI_DrawingSubGroupForward=Ctrl+]
|
||||
MI_Duplicate=
|
||||
MI_FullScreenWindow=Ctrl+F
|
||||
MI_FxParamEditor=
|
||||
MI_Group=Ctrl+G
|
||||
MI_Insert=Ins
|
||||
MI_InsertFx=
|
||||
MI_LoadScene=Ctrl+O
|
||||
MI_MaximizePanel=`
|
||||
MI_NewScene=Ctrl+N
|
||||
MI_NextDrawing=G
|
||||
MI_NextFrame=.
|
||||
MI_OpacityCheck=
|
||||
MI_Paste=Ctrl+V
|
||||
MI_PrevDrawing=F
|
||||
MI_PrevFrame=","
|
||||
MI_Preview=
|
||||
MI_Quit=Ctrl+Q
|
||||
MI_Redo=Ctrl+Shift+Z
|
||||
MI_SaveScene=Ctrl+Shift+S
|
||||
MI_SaveSceneAs=Ctrl+Shift+Alt+S
|
||||
MI_SelectAll=Ctrl+A
|
||||
MI_SendBack=Ctrl+PgDown
|
||||
MI_SendBackward=Ctrl+Shift+PgDown
|
||||
MI_Undo=Ctrl+Z
|
||||
MI_ZeroThick=
|
||||
T_ActualPixelSize=
|
||||
T_Brush=Alt+B
|
||||
T_ControlPointEditor=Alt+Q
|
||||
T_Edit=Shift+T
|
||||
T_Eraser=Alt+E
|
||||
T_Fill=Alt+I
|
||||
T_Geometric=Alt+7
|
||||
T_Hand=
|
||||
T_Pinch=
|
||||
T_Rotate=
|
||||
T_Selection=Alt+S
|
||||
T_StylePicker=Alt+D
|
||||
T_Tape=Alt+C
|
||||
T_Type=Alt+9
|
||||
T_Zoom=Alt+Z
|
||||
T_ZoomReset=
|
||||
T_Zoomin=Alt+2
|
||||
T_Zoomout=Alt+1
|
||||
A_DecreaseBrushHardness=
|
||||
A_DecreaseMaxBrushThickness=
|
||||
A_DecreaseMinBrushThickness=
|
||||
A_FxSchematicToggle=
|
||||
A_IncreaseBrushHardness=
|
||||
A_IncreaseMaxBrushThickness=
|
||||
A_IncreaseMinBrushThickness=
|
||||
A_ToolOption_AutoGroup=
|
||||
A_ToolOption_AutoSelect%3AColumn=
|
||||
A_ToolOption_AutoSelect%3ANone=
|
||||
A_ToolOption_AutoSelect%3APegbar=
|
||||
A_ToolOption_AutoSelectDrawing=
|
||||
A_ToolOption_Autofill=
|
||||
A_ToolOption_BreakSharpAngles=
|
||||
A_ToolOption_BrushPreset=
|
||||
A_ToolOption_EditToolActiveAxis=
|
||||
A_ToolOption_EditToolActiveAxis%3ACenter=
|
||||
A_ToolOption_EditToolActiveAxis%3APosition=Alt+2
|
||||
A_ToolOption_EditToolActiveAxis%3ARotation=Alt+3
|
||||
A_ToolOption_EditToolActiveAxis%3AScale=Alt+4
|
||||
A_ToolOption_EditToolActiveAxis%3AShear=Alt+5
|
||||
A_ToolOption_GeometricEdge=
|
||||
A_ToolOption_GeometricShape=
|
||||
A_ToolOption_GlobalKey=
|
||||
A_ToolOption_IK=
|
||||
A_ToolOption_Invert=
|
||||
A_ToolOption_JoinVectors=
|
||||
A_ToolOption_Manual=
|
||||
A_ToolOption_Meshify=
|
||||
A_ToolOption_Mode=
|
||||
A_ToolOption_Mode%3AAreas=
|
||||
A_ToolOption_Mode%3ALines=
|
||||
A_ToolOption_Mode%3ALines%20%26%20Areas=
|
||||
A_ToolOption_OnionSkin=
|
||||
A_ToolOption_Orientation=
|
||||
A_ToolOption_PencilMode=
|
||||
A_ToolOption_PickScreen=
|
||||
A_ToolOption_PreserveThickness=
|
||||
A_ToolOption_PressureSensitivity=
|
||||
A_ToolOption_ShowOnlyActiveSkeleton=
|
||||
A_ToolOption_SkeletonMode%3AAnimate=
|
||||
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
|
||||
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
|
||||
A_ToolOption_Smooth=
|
||||
A_ToolOption_Snap=
|
||||
A_ToolOption_Type=
|
||||
A_ToolOption_Type%3AFreehand=
|
||||
A_ToolOption_Type%3ANormal=
|
||||
A_ToolOption_Type%3APolyline=
|
||||
A_ToolOption_TypeFont=
|
||||
A_ToolOption_TypeSize=
|
||||
A_ToolOption_TypeStyle=
|
||||
MI_ACheck=
|
||||
MI_About=
|
||||
MI_ActivateAllColumns=
|
||||
MI_ActivateSelectedColumns=
|
||||
MI_ActivateThisColumnOnly=
|
||||
MI_AddFrames=
|
||||
MI_AddToBatchCleanupList=
|
||||
MI_AddToBatchRenderList=
|
||||
MI_AdjustLevels=
|
||||
MI_AdjustThickness=
|
||||
MI_Antialias=
|
||||
MI_ApplyMatchLines=
|
||||
MI_AutoFillToggle=
|
||||
MI_Autocenter=
|
||||
MI_Autorenumber=
|
||||
MI_BCheck=
|
||||
MI_Binarize=
|
||||
MI_BlendColors=
|
||||
MI_BlueChannel=
|
||||
MI_BlueChannelGreyscale=
|
||||
MI_BrightnessAndContrast=
|
||||
MI_CameraSettings=
|
||||
MI_CameraStage=
|
||||
MI_CameraTest=
|
||||
MI_CanvasSize=
|
||||
MI_Cleanup=
|
||||
MI_CleanupPreview=
|
||||
MI_CleanupSettings=
|
||||
MI_ClearRecentImage=
|
||||
MI_ClearRecentLevel=
|
||||
MI_ClearRecentScene=
|
||||
MI_CloneChild=
|
||||
MI_CloneLevel=
|
||||
MI_ClonePreview=
|
||||
MI_CloseChild=
|
||||
MI_Collapse=Alt+0
|
||||
MI_CollectAssets=
|
||||
MI_CompareToSnapshot=
|
||||
MI_ConvertFileWithInput=
|
||||
MI_ConvertFiles=
|
||||
MI_ConvertToVectors=
|
||||
MI_DeactivateAllColumns=
|
||||
MI_DeactivateSelectedColumns=
|
||||
MI_DeactivateUpperColumns=
|
||||
MI_DecreaseStep=-
|
||||
MI_DefineScanner=
|
||||
MI_DeleteInk=
|
||||
MI_DeleteMatchLines=
|
||||
MI_DisableAllColumns=
|
||||
MI_DisableSelectedColumns=Alt+H
|
||||
MI_DockingCheck=
|
||||
MI_Dup=
|
||||
MI_DuplicateFile=
|
||||
MI_Each2=
|
||||
MI_Each3=
|
||||
MI_Each4=
|
||||
MI_EditLevel=
|
||||
MI_EditShift=
|
||||
MI_EnableAllColumns=Alt+Shift+H
|
||||
MI_EnableSelectedColumns=
|
||||
MI_EnableThisColumnOnly=
|
||||
MI_EnterGroup=Ctrl+Return
|
||||
MI_EraseUnusedStyles=
|
||||
MI_ExitGroup=Backspace
|
||||
MI_ExplodeChild=Ctrl+B
|
||||
MI_ExportLevel=
|
||||
MI_ExportScenes=
|
||||
MI_ExposeResource=
|
||||
MI_FieldGuide="Ctrl+'"
|
||||
MI_FileInfo=
|
||||
MI_FillAreas=
|
||||
MI_FillLines=
|
||||
MI_FirstFrame="Shift+<"
|
||||
MI_FoldColumns=
|
||||
MI_FrezzePreview=
|
||||
MI_GCheck=
|
||||
MI_GetColorFromStudioPalette=
|
||||
MI_GreenChannel=
|
||||
MI_GreenChannelGreyscale=
|
||||
MI_Histogram=
|
||||
MI_ICheck=
|
||||
MI_IOnly=
|
||||
MI_ImportMagpieFile=
|
||||
MI_ImportScenes=
|
||||
MI_IncreaseStep="+"
|
||||
MI_Increment=
|
||||
MI_Ink1Check=
|
||||
MI_InsertGlobalKeyframe=
|
||||
MI_InsertSceneFrame=
|
||||
MI_InvertKeyframeSelection=
|
||||
MI_InvertSelection=
|
||||
MI_LastFrame="Shift+>"
|
||||
MI_LevelSettings=
|
||||
MI_LinesFade=
|
||||
MI_Link=
|
||||
MI_LoadColorModel=
|
||||
MI_LoadFolder=
|
||||
MI_LoadLevel=
|
||||
MI_LoadSubSceneFile=
|
||||
MI_LockAllColumns=Ctrl+Shift+L
|
||||
MI_LockSelectedColumns=Ctrl+Alt+L
|
||||
MI_LockThisColumnOnly=
|
||||
MI_Loop=
|
||||
MI_MatteChannel=
|
||||
MI_MergeCmapped=
|
||||
MI_MergeColumns=
|
||||
MI_MergeFrames=
|
||||
MI_NewLevel=
|
||||
MI_NewOutputFx=
|
||||
MI_NewProject=
|
||||
MI_NextStep=
|
||||
MI_NoShift=
|
||||
MI_OnionSkin=Alt+O
|
||||
MI_OpenBatchServers=
|
||||
MI_OpenChild=
|
||||
MI_OpenCleanupSettings=
|
||||
MI_OpenColorModel=
|
||||
MI_OpenComboViewer=
|
||||
MI_OpenFileBrowser=
|
||||
MI_OpenFileBrowser2=
|
||||
MI_OpenFileViewer=
|
||||
MI_OpenFilmStrip=
|
||||
MI_OpenFunctionEditor=Alt+F
|
||||
MI_OpenHistoryPanel=
|
||||
MI_OpenLevelView=
|
||||
MI_OpenPalette=
|
||||
MI_OpenPltGizmo=
|
||||
MI_OpenRecentScene=
|
||||
MI_OpenSchematic=
|
||||
MI_OpenScriptConsole=
|
||||
MI_OpenStudioPalette=
|
||||
MI_OpenStyleControl=
|
||||
MI_OpenTMessage=
|
||||
MI_OpenTasks=
|
||||
MI_OpenToolOptionBar=
|
||||
MI_OpenToolbar=
|
||||
MI_OpenXshView=
|
||||
MI_OutputSettings=
|
||||
MI_OverwritePalette=
|
||||
MI_PCheck=
|
||||
MI_PasteColors=
|
||||
MI_PasteInto=
|
||||
MI_PasteNames=
|
||||
MI_PasteValues=
|
||||
MI_Pause=
|
||||
MI_PencilTest=
|
||||
MI_PickStyleAreas=
|
||||
MI_PickStyleLines=
|
||||
MI_Play=Ctrl+Return
|
||||
MI_Preferences=Ctrl+U
|
||||
MI_PrevStep=
|
||||
MI_PreviewFx=
|
||||
MI_PreviewSettings=
|
||||
MI_Print=
|
||||
MI_PrintXsheet=
|
||||
MI_ProjectSettings=
|
||||
MI_Random=
|
||||
MI_RasterizePli=
|
||||
MI_RedChannel=
|
||||
MI_RedChannelGreyscale=
|
||||
MI_Reframe1=
|
||||
MI_Reframe2=
|
||||
MI_Reframe3=
|
||||
MI_Reframe4=
|
||||
MI_RefreshTree=
|
||||
MI_RegenerateFramePr=
|
||||
MI_RegeneratePreview=
|
||||
MI_ReloadStyle=
|
||||
MI_RemoveEndpoints=
|
||||
MI_RemoveGlobalKeyframe=
|
||||
MI_RemoveLevel=
|
||||
MI_RemoveSceneFrame=
|
||||
MI_RemoveUnused=
|
||||
MI_Render=
|
||||
MI_Renumber=
|
||||
MI_ReplaceLevel=
|
||||
MI_ReplaceParentDirectory=
|
||||
MI_Resequence=
|
||||
MI_ResetInterpolation=
|
||||
MI_ResetRoomLayout=
|
||||
MI_ResetScanCropbox=
|
||||
MI_ResetShift=
|
||||
MI_ResetStep=
|
||||
MI_Reverse=
|
||||
MI_RevertScene=
|
||||
MI_RevertToCleanedUp=
|
||||
MI_RevertToLastSaved=
|
||||
MI_Rolldown=
|
||||
MI_Rollup=
|
||||
MI_RunScript=
|
||||
MI_SafeArea=
|
||||
MI_SaveAll=Ctrl+S
|
||||
MI_SaveDefaultSettings=
|
||||
MI_SaveLevel=
|
||||
MI_SaveLevelAs=
|
||||
MI_SavePaletteAs=
|
||||
MI_SavePreset=
|
||||
MI_SavePreviewedFrames=
|
||||
MI_SaveSubxsheetAs=
|
||||
MI_Scan=Ctrl+Shift+S
|
||||
MI_ScanSettings=
|
||||
MI_SceneSettings=
|
||||
MI_SelectAllKeyframes=
|
||||
MI_SelectAllKeyframesNotAfter=
|
||||
MI_SelectAllKeyframesNotBefore=
|
||||
MI_SelectColumnKeyframes=
|
||||
MI_SelectFollowingKeysInColumn=
|
||||
MI_SelectFollowingKeysInRow=
|
||||
MI_SelectPreviousKeysInColumn=
|
||||
MI_SelectPreviousKeysInRow=
|
||||
MI_SelectRowKeyframes=
|
||||
MI_SetAcceleration=
|
||||
MI_SetConstantSpeed=
|
||||
MI_SetDeceleration=
|
||||
MI_SetKeyframes=F6
|
||||
MI_SetScanCropbox=
|
||||
MI_ShiftTrace=
|
||||
MI_ShortcutPopup=
|
||||
MI_ShowFolderContents=
|
||||
MI_Step2=
|
||||
MI_Step3=
|
||||
MI_Step4=
|
||||
MI_SwapEnabledColumns=
|
||||
MI_Swing=
|
||||
MI_TCheck=
|
||||
MI_TimeStretch=
|
||||
MI_ToggleColumnLocks=
|
||||
MI_ToggleColumnsActivation=
|
||||
MI_ToggleEditInPlace=
|
||||
MI_Tracking=
|
||||
MI_Ungroup=Ctrl+Shift+G
|
||||
MI_UnlockAllColumns=Ctrl+Alt+Shift+K
|
||||
MI_UnlockSelectedColumns=Ctrl+Shift+K
|
||||
MI_ViewBBox=
|
||||
MI_ViewCamera=
|
||||
MI_ViewColorcard=
|
||||
MI_ViewFile=
|
||||
MI_ViewGuide="Ctrl+'"
|
||||
MI_ViewRuler=
|
||||
MI_ViewTable=
|
||||
T_Bender=
|
||||
T_Cutter=Alt+T
|
||||
T_Finger=
|
||||
T_Hook=
|
||||
T_Iron=
|
||||
T_Magnet=
|
||||
T_PaintBrush=
|
||||
T_Plastic=
|
||||
T_Pump=
|
||||
T_RGBPicker=
|
||||
T_Ruler=
|
||||
T_ShowHideFullScreen=
|
||||
T_Skeleton=
|
||||
T_Tracker=
|
||||
T_ZoomFit=
|
||||
MI_OpenRecentLevel=
|
366
stuff/profiles/layouts/shortcuts/otretas.ini
Normal file
|
@ -0,0 +1,366 @@
|
|||
[shortcuts]
|
||||
MI_LoadRecentImage=
|
||||
A_ToolOption_FrameRange=
|
||||
A_ToolOption_SegmentInk=
|
||||
A_ToolOption_Selective=
|
||||
A_ToolOption_Type%3ARectangular=
|
||||
MI_BringForward=Ctrl+Up
|
||||
MI_BringToFront=Ctrl+Shift+Up
|
||||
MI_Clear=Delete
|
||||
MI_Copy=Ctrl+C
|
||||
MI_Cut=Ctrl+X
|
||||
MI_DrawingSubBackward=[
|
||||
MI_DrawingSubForward=]
|
||||
MI_DrawingSubGroupBackward=Ctrl+[
|
||||
MI_DrawingSubGroupForward=Ctrl+]
|
||||
MI_Duplicate=
|
||||
MI_FullScreenWindow=Ctrl+F
|
||||
MI_FxParamEditor=
|
||||
MI_Group=Ctrl+G
|
||||
MI_Insert=Ins
|
||||
MI_InsertFx=
|
||||
MI_LoadScene=Ctrl+O
|
||||
MI_MaximizePanel=
|
||||
MI_NewScene=Ctrl+N
|
||||
MI_NextDrawing=G
|
||||
MI_NextFrame=.
|
||||
MI_OpacityCheck=
|
||||
MI_Paste=Ctrl+V
|
||||
MI_PrevDrawing=F
|
||||
MI_PrevFrame=","
|
||||
MI_Preview=Alt+P
|
||||
MI_Quit=Ctrl+Q
|
||||
MI_Redo=Ctrl+Y
|
||||
MI_SaveScene=Ctrl+Shift+S
|
||||
MI_SaveSceneAs=Ctrl+Alt+Shift+S
|
||||
MI_SelectAll=Shift+A
|
||||
MI_SendBack=Ctrl+Shift+Down
|
||||
MI_SendBackward=Ctrl+Down
|
||||
MI_Undo=Ctrl+Z
|
||||
MI_ZeroThick=D
|
||||
T_ActualPixelSize=
|
||||
T_Brush=Alt+B
|
||||
T_ControlPointEditor=Alt+A
|
||||
T_Edit=Alt+Q
|
||||
T_Eraser=Alt+E
|
||||
T_Fill=Alt+K
|
||||
T_Geometric=Atl+R
|
||||
T_Hand=
|
||||
T_Pinch=
|
||||
T_Rotate=
|
||||
T_Selection=Alt+V
|
||||
T_StylePicker=Alt+I
|
||||
T_Tape=Alt+C
|
||||
T_Type=
|
||||
T_Zoom=Alt+Z
|
||||
T_ZoomReset=Shift+Z
|
||||
T_Zoomin=Ctrl+=
|
||||
T_Zoomout=Ctrl+-
|
||||
A_DecreaseBrushHardness=
|
||||
A_DecreaseMaxBrushThickness=
|
||||
A_DecreaseMinBrushThickness=
|
||||
A_FxSchematicToggle=
|
||||
A_IncreaseBrushHardness=
|
||||
A_IncreaseMaxBrushThickness=
|
||||
A_IncreaseMinBrushThickness=
|
||||
A_ToolOption_AutoGroup=
|
||||
A_ToolOption_AutoSelect%3AColumn=
|
||||
A_ToolOption_AutoSelect%3ANone=
|
||||
A_ToolOption_AutoSelect%3APegbar=
|
||||
A_ToolOption_AutoSelectDrawing=
|
||||
A_ToolOption_Autofill=
|
||||
A_ToolOption_BreakSharpAngles=
|
||||
A_ToolOption_BrushPreset=
|
||||
A_ToolOption_EditToolActiveAxis=
|
||||
A_ToolOption_EditToolActiveAxis%3ACenter=
|
||||
A_ToolOption_EditToolActiveAxis%3APosition=
|
||||
A_ToolOption_EditToolActiveAxis%3ARotation=
|
||||
A_ToolOption_EditToolActiveAxis%3AScale=
|
||||
A_ToolOption_EditToolActiveAxis%3AShear=
|
||||
A_ToolOption_GeometricEdge=
|
||||
A_ToolOption_GeometricShape=
|
||||
A_ToolOption_GlobalKey=
|
||||
A_ToolOption_IK=Alt+8
|
||||
A_ToolOption_Invert=
|
||||
A_ToolOption_JoinVectors=
|
||||
A_ToolOption_Manual=
|
||||
A_ToolOption_Meshify=
|
||||
A_ToolOption_Mode=
|
||||
A_ToolOption_Mode%3AAreas=
|
||||
A_ToolOption_Mode%3ALines=
|
||||
A_ToolOption_Mode%3ALines%20%26%20Areas=
|
||||
A_ToolOption_OnionSkin=
|
||||
A_ToolOption_Orientation=
|
||||
A_ToolOption_PencilMode=
|
||||
A_ToolOption_PickScreen=
|
||||
A_ToolOption_PreserveThickness=
|
||||
A_ToolOption_PressureSensitivity=
|
||||
A_ToolOption_ShowOnlyActiveSkeleton=
|
||||
A_ToolOption_SkeletonMode%3AAnimate=
|
||||
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
|
||||
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
|
||||
A_ToolOption_Smooth=
|
||||
A_ToolOption_Snap=
|
||||
A_ToolOption_Type=
|
||||
A_ToolOption_Type%3AFreehand=
|
||||
A_ToolOption_Type%3ANormal=
|
||||
A_ToolOption_Type%3APolyline=
|
||||
A_ToolOption_TypeFont=
|
||||
A_ToolOption_TypeSize=
|
||||
A_ToolOption_TypeStyle=
|
||||
MI_ACheck=
|
||||
MI_About=
|
||||
MI_ActivateAllColumns=
|
||||
MI_ActivateSelectedColumns=
|
||||
MI_ActivateThisColumnOnly=
|
||||
MI_AddFrames=Ctrl+H
|
||||
MI_AddToBatchCleanupList=
|
||||
MI_AddToBatchRenderList=
|
||||
MI_AdjustLevels=
|
||||
MI_AdjustThickness=
|
||||
MI_Antialias=
|
||||
MI_ApplyMatchLines=
|
||||
MI_AutoFillToggle=
|
||||
MI_Autocenter=
|
||||
MI_Autorenumber=
|
||||
MI_BCheck=
|
||||
MI_Binarize=
|
||||
MI_BlendColors=
|
||||
MI_BlueChannel=
|
||||
MI_BlueChannelGreyscale=
|
||||
MI_BrightnessAndContrast=
|
||||
MI_CameraSettings=
|
||||
MI_CameraStage=
|
||||
MI_CameraTest=
|
||||
MI_CanvasSize=
|
||||
MI_Cleanup=
|
||||
MI_CleanupPreview=
|
||||
MI_CleanupSettings=
|
||||
MI_ClearRecentImage=
|
||||
MI_ClearRecentLevel=
|
||||
MI_ClearRecentScene=
|
||||
MI_CloneChild=
|
||||
MI_CloneLevel=
|
||||
MI_ClonePreview=
|
||||
MI_CloseChild=
|
||||
MI_Collapse=
|
||||
MI_CollectAssets=
|
||||
MI_CompareToSnapshot=
|
||||
MI_ConvertFileWithInput=
|
||||
MI_ConvertFiles=
|
||||
MI_ConvertToVectors=
|
||||
MI_DeactivateAllColumns=
|
||||
MI_DeactivateSelectedColumns=Alt+H
|
||||
MI_DeactivateUpperColumns=
|
||||
MI_DecreaseStep=
|
||||
MI_DefineScanner=
|
||||
MI_DeleteInk=
|
||||
MI_DeleteMatchLines=
|
||||
MI_DisableAllColumns=
|
||||
MI_DisableSelectedColumns=
|
||||
MI_DockingCheck=
|
||||
MI_Dup=
|
||||
MI_DuplicateFile=
|
||||
MI_Each2=
|
||||
MI_Each3=
|
||||
MI_Each4=
|
||||
MI_EditLevel=
|
||||
MI_EditShift=
|
||||
MI_EnableAllColumns=Alt+Shift+H
|
||||
MI_EnableSelectedColumns=
|
||||
MI_EnableThisColumnOnly=
|
||||
MI_EnterGroup=Ctrl+Return
|
||||
MI_EraseUnusedStyles=
|
||||
MI_ExitGroup=Backspace
|
||||
MI_ExplodeChild=Ctrl+B
|
||||
MI_ExportLevel=
|
||||
MI_ExportScenes=
|
||||
MI_ExposeResource=
|
||||
MI_FieldGuide="Ctrl+'"
|
||||
MI_FileInfo=
|
||||
MI_FillAreas=
|
||||
MI_FillLines=
|
||||
MI_FirstFrame=Home
|
||||
MI_FoldColumns=
|
||||
MI_FrezzePreview=
|
||||
MI_GCheck=
|
||||
MI_GetColorFromStudioPalette=
|
||||
MI_GreenChannel=
|
||||
MI_GreenChannelGreyscale=
|
||||
MI_Histogram=
|
||||
MI_ICheck=
|
||||
MI_IOnly=
|
||||
MI_ImportMagpieFile=
|
||||
MI_ImportScenes=
|
||||
MI_IncreaseStep="+"
|
||||
MI_Increment=
|
||||
MI_Ink1Check=
|
||||
MI_InsertGlobalKeyframe=
|
||||
MI_InsertSceneFrame=
|
||||
MI_InvertKeyframeSelection=
|
||||
MI_InvertSelection=
|
||||
MI_LastFrame=End
|
||||
MI_LevelSettings=
|
||||
MI_LinesFade=
|
||||
MI_Link=
|
||||
MI_LoadColorModel=
|
||||
MI_LoadFolder=
|
||||
MI_LoadLevel=
|
||||
MI_LoadSubSceneFile=
|
||||
MI_LockAllColumns=
|
||||
MI_LockSelectedColumns=
|
||||
MI_LockThisColumnOnly=
|
||||
MI_Loop=
|
||||
MI_MatteChannel=
|
||||
MI_MergeCmapped=
|
||||
MI_MergeColumns=
|
||||
MI_MergeFrames=
|
||||
MI_NewLevel=
|
||||
MI_NewOutputFx=
|
||||
MI_NewProject=
|
||||
MI_NextStep=
|
||||
MI_NoShift=
|
||||
MI_OnionSkin=Ctrl+Alt+O
|
||||
MI_OpenBatchServers=
|
||||
MI_OpenChild=
|
||||
MI_OpenCleanupSettings=
|
||||
MI_OpenColorModel=
|
||||
MI_OpenComboViewer=
|
||||
MI_OpenFileBrowser=
|
||||
MI_OpenFileBrowser2=
|
||||
MI_OpenFileViewer=
|
||||
MI_OpenFilmStrip=
|
||||
MI_OpenFunctionEditor=Alt+F
|
||||
MI_OpenHistoryPanel=
|
||||
MI_OpenLevelView=
|
||||
MI_OpenPalette=
|
||||
MI_OpenPltGizmo=
|
||||
MI_OpenRecentScene=
|
||||
MI_OpenSchematic=
|
||||
MI_OpenScriptConsole=
|
||||
MI_OpenStudioPalette=
|
||||
MI_OpenStyleControl=
|
||||
MI_OpenTMessage=
|
||||
MI_OpenTasks=
|
||||
MI_OpenToolOptionBar=
|
||||
MI_OpenToolbar=
|
||||
MI_OpenXshView=
|
||||
MI_OutputSettings=
|
||||
MI_OverwritePalette=
|
||||
MI_PCheck=
|
||||
MI_PasteColors=
|
||||
MI_PasteInto=
|
||||
MI_PasteNames=
|
||||
MI_PasteValues=
|
||||
MI_Pause=
|
||||
MI_PencilTest=
|
||||
MI_PickStyleAreas=
|
||||
MI_PickStyleLines=
|
||||
MI_Play=Return
|
||||
MI_Preferences=Ctrl+U
|
||||
MI_PrevStep=
|
||||
MI_PreviewFx=
|
||||
MI_PreviewSettings=
|
||||
MI_Print=
|
||||
MI_PrintXsheet=
|
||||
MI_ProjectSettings=
|
||||
MI_Random=
|
||||
MI_RasterizePli=
|
||||
MI_RedChannel=
|
||||
MI_RedChannelGreyscale=
|
||||
MI_Reframe1=
|
||||
MI_Reframe2=
|
||||
MI_Reframe3=
|
||||
MI_Reframe4=
|
||||
MI_RefreshTree=
|
||||
MI_RegenerateFramePr=
|
||||
MI_RegeneratePreview=
|
||||
MI_ReloadStyle=
|
||||
MI_RemoveEndpoints=
|
||||
MI_RemoveGlobalKeyframe=
|
||||
MI_RemoveLevel=
|
||||
MI_RemoveSceneFrame=
|
||||
MI_RemoveUnused=
|
||||
MI_Render=Ctrl+Alt+Shift+S
|
||||
MI_Renumber=
|
||||
MI_ReplaceLevel=
|
||||
MI_ReplaceParentDirectory=
|
||||
MI_Resequence=
|
||||
MI_ResetInterpolation=
|
||||
MI_ResetRoomLayout=
|
||||
MI_ResetScanCropbox=
|
||||
MI_ResetShift=
|
||||
MI_ResetStep=
|
||||
MI_Reverse=
|
||||
MI_RevertScene=
|
||||
MI_RevertToCleanedUp=
|
||||
MI_RevertToLastSaved=
|
||||
MI_Rolldown=
|
||||
MI_Rollup=
|
||||
MI_RunScript=
|
||||
MI_SafeArea=
|
||||
MI_SaveAll=Ctrl+S
|
||||
MI_SaveDefaultSettings=
|
||||
MI_SaveLevel=
|
||||
MI_SaveLevelAs=
|
||||
MI_SavePaletteAs=
|
||||
MI_SavePreset=
|
||||
MI_SavePreviewedFrames=
|
||||
MI_SaveSubxsheetAs=
|
||||
MI_Scan=
|
||||
MI_ScanSettings=
|
||||
MI_SceneSettings=Ctrl+F3
|
||||
MI_SelectAllKeyframes=
|
||||
MI_SelectAllKeyframesNotAfter=
|
||||
MI_SelectAllKeyframesNotBefore=
|
||||
MI_SelectColumnKeyframes=
|
||||
MI_SelectFollowingKeysInColumn=
|
||||
MI_SelectFollowingKeysInRow=
|
||||
MI_SelectPreviousKeysInColumn=
|
||||
MI_SelectPreviousKeysInRow=
|
||||
MI_SelectRowKeyframes=
|
||||
MI_SetAcceleration=
|
||||
MI_SetConstantSpeed=
|
||||
MI_SetDeceleration=
|
||||
MI_SetKeyframes=Ctrl+F6
|
||||
MI_SetScanCropbox=
|
||||
MI_ShiftTrace=
|
||||
MI_ShortcutPopup=
|
||||
MI_ShowFolderContents=
|
||||
MI_Step2=
|
||||
MI_Step3=
|
||||
MI_Step4=
|
||||
MI_SwapEnabledColumns=
|
||||
MI_Swing=
|
||||
MI_TCheck=
|
||||
MI_TimeStretch=
|
||||
MI_ToggleColumnLocks=
|
||||
MI_ToggleColumnsActivation=
|
||||
MI_ToggleEditInPlace=
|
||||
MI_Tracking=
|
||||
MI_Ungroup=Ctrl+Shift+G
|
||||
MI_UnlockAllColumns=Ctrl+Alt+Shift+L
|
||||
MI_UnlockSelectedColumns=Ctrl+Shift+K
|
||||
MI_ViewBBox=
|
||||
MI_ViewCamera=
|
||||
MI_ViewColorcard=
|
||||
MI_ViewFile=
|
||||
MI_ViewGuide=
|
||||
MI_ViewRuler=Ctrl+Alt+Shift+R
|
||||
MI_ViewTable=
|
||||
T_Bender=
|
||||
T_Cutter=Alt+T
|
||||
T_Finger=
|
||||
T_Hook=
|
||||
T_Iron=
|
||||
T_Magnet=
|
||||
T_PaintBrush=
|
||||
T_Plastic=
|
||||
T_Pump=
|
||||
T_RGBPicker=
|
||||
T_Ruler=
|
||||
T_ShowHideFullScreen=F4
|
||||
T_Skeleton=
|
||||
T_Tracker=
|
||||
T_ZoomFit=
|
||||
MI_OpenRecentLevel=
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d6be973caafd36b6dcf9b8fcb2d030ad2e0c3c523527fad7bbf7da9f9ba5b6e
|
||||
size 56118
|
||||
oid sha256:e005a1c28ab5a1f8ed57793a79c883f0b44cd5d2b25152544e3dca5fbdd616bc
|
||||
size 374568
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:be7784d0f86cf87b9dd965a32707e1a999b059d57fbeddb4066a033200e0fbc9
|
||||
size 56118
|
||||
oid sha256:f61acffbae2925d60a61bd11b6d5b09502843c89c8b3f20b89f240e050a1e916
|
||||
size 858596
|
||||
|
|
1
thirdparty/tiff-4.0.3/libtiff/Makefile.am
vendored
|
@ -74,6 +74,7 @@ libtiff_la_SOURCES = \
|
|||
tif_fax3sm.c \
|
||||
tif_flush.c \
|
||||
tif_getimage.c \
|
||||
tif_getimage_64.c \
|
||||
tif_jbig.c \
|
||||
tif_jpeg.c \
|
||||
tif_jpeg_12.c \
|
||||
|
|
|
@ -92,7 +92,7 @@ elseif(UNIX)
|
|||
else()
|
||||
set(PLATFORM 32)
|
||||
endif()
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
add_definitions(-DLINUX)
|
||||
else()
|
||||
message(WARNING "Support for generic Unix (Not Apple or Linux) isn't yet working!")
|
||||
|
|
|
@ -480,6 +480,7 @@ bool TFilePath::isRoot() const {
|
|||
// ritorna ""(niente tipo, niente punto), "." (file con tipo) o ".." (file con
|
||||
// tipo e frame)
|
||||
std::string TFilePath::getDots() const {
|
||||
if (isFfmpegType()) return ".";
|
||||
int i = getLastSlash(m_path);
|
||||
std::wstring str = m_path.substr(i + 1);
|
||||
// potrei anche avere a.b.c.d dove d e' l'estensione
|
||||
|
@ -561,7 +562,7 @@ std::string TFilePath::getLevelName() const {
|
|||
std::wstring TFilePath::getLevelNameW() const {
|
||||
int i = getLastSlash(m_path); // cerco l'ultimo slash
|
||||
std::wstring str = m_path.substr(i + 1); // str e' m_path senza directory
|
||||
|
||||
if (isFfmpegType()) return str;
|
||||
int j = str.rfind(L"."); // str[j..] = ".type"
|
||||
if (j == (int)std::wstring::npos) return str; // no frame; no type
|
||||
i = str.substr(0, j).rfind(L'.');
|
||||
|
@ -597,6 +598,7 @@ TFilePath TFilePath::getParentDir() const // noSlash!
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool TFilePath::isLevelName() const {
|
||||
if (isFfmpegType()) return false;
|
||||
try {
|
||||
return getFrame() == TFrameId(TFrameId::EMPTY_FRAME);
|
||||
}
|
||||
|
@ -638,6 +640,15 @@ TFrameId TFilePath::getFrame() const {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool TFilePath::isFfmpegType() const {
|
||||
QString type = QString::fromStdString(getType()).toLower();
|
||||
if (type == "gif" || type == "mp4" || type == "webm")
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
TFilePath TFilePath::withType(const std::string &type) const {
|
||||
assert(type.length() < 2 || type.substr(0, 2) != "..");
|
||||
int i = getLastSlash(m_path); // cerco l'ultimo slash
|
||||
|
|
|
@ -50,7 +50,8 @@ TColorStyle::TColorStyle()
|
|||
, m_enabled(true)
|
||||
, m_icon(0)
|
||||
, m_validIcon(false)
|
||||
, m_isEditedFromOriginal(false) {}
|
||||
, m_isEditedFromOriginal(false)
|
||||
, m_pickedPosition() {}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
@ -66,7 +67,8 @@ TColorStyle::TColorStyle(const TColorStyle &other)
|
|||
, m_flags(other.m_flags)
|
||||
, m_enabled(other.m_enabled)
|
||||
, m_validIcon(false)
|
||||
, m_isEditedFromOriginal(other.m_isEditedFromOriginal) {}
|
||||
, m_isEditedFromOriginal(other.m_isEditedFromOriginal)
|
||||
, m_pickedPosition(other.m_pickedPosition) {}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
@ -79,6 +81,7 @@ TColorStyle &TColorStyle::operator=(const TColorStyle &other) {
|
|||
m_enabled = other.m_enabled;
|
||||
m_validIcon = false;
|
||||
m_isEditedFromOriginal = other.m_isEditedFromOriginal;
|
||||
m_pickedPosition = other.m_pickedPosition;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -100,6 +103,7 @@ bool TColorStyle::operator==(const TColorStyle &cs) const {
|
|||
if (m_originalName != cs.getOriginalName()) return false;
|
||||
if (m_globalName != cs.getGlobalName()) return false;
|
||||
if (m_isEditedFromOriginal != cs.getIsEditedFlag()) return false;
|
||||
if (m_pickedPosition != cs.getPickedPosition()) return false;
|
||||
|
||||
for (int p = 0; p < colorParamCount; ++p)
|
||||
if (getColorParamValue(p) != cs.getColorParamValue(p)) return false;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "tpalette.h"
|
||||
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
|
||||
PERSIST_IDENTIFIER(TPalette, "palette")
|
||||
|
||||
|
@ -30,6 +31,21 @@ namespace {
|
|||
|
||||
const int maxStyleIndex = 32765;
|
||||
|
||||
const std::string pointToString(const TPoint &point) {
|
||||
return std::to_string(point.x) + "," + std::to_string(point.y);
|
||||
}
|
||||
|
||||
// splitting string with ','
|
||||
const TPoint stringToPoint(const std::string &string) {
|
||||
std::string buffer;
|
||||
std::stringstream ss(string);
|
||||
std::getline(ss, buffer, ','); // getting the first part of string
|
||||
int x = std::stoi(buffer);
|
||||
std::getline(ss, buffer); // getting the second part of string
|
||||
int y = std::stoi(buffer);
|
||||
return TPoint(x, y);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
//===================================================================
|
||||
|
@ -168,7 +184,8 @@ TPalette::TPalette()
|
|||
, m_dirtyFlag(false)
|
||||
, m_mutex(QMutex::Recursive)
|
||||
, m_isLocked(false)
|
||||
, m_askOverwriteFlag(false) {
|
||||
, m_askOverwriteFlag(false)
|
||||
, m_shortcutScopeIndex(0) {
|
||||
QString tempName(QObject::tr("colors"));
|
||||
std::wstring pageName = tempName.toStdWString();
|
||||
Page *page = addPage(pageName);
|
||||
|
@ -563,10 +580,17 @@ void TPalette::saveData(TOStream &os) {
|
|||
os.openChild("styles");
|
||||
{
|
||||
for (int i = 0; i < getStyleCount(); ++i) {
|
||||
os.openChild("style");
|
||||
TColorStyleP style = m_styles[i].second;
|
||||
if (style->getPickedPosition() == TPoint())
|
||||
os.openChild("style");
|
||||
else {
|
||||
std::map<std::string, std::string> attr;
|
||||
attr["pickedpos"] = pointToString(style->getPickedPosition());
|
||||
os.openChild("style", attr);
|
||||
}
|
||||
{
|
||||
StyleWriter w(os, i);
|
||||
m_styles[i].second->save(w);
|
||||
style->save(w);
|
||||
}
|
||||
os.closeChild();
|
||||
}
|
||||
|
@ -680,6 +704,10 @@ void TPalette::loadData(TIStream &is) {
|
|||
StyleReader r(is, version);
|
||||
TColorStyle *cs = TColorStyle::load(r);
|
||||
|
||||
std::string pickedPosStr;
|
||||
if (is.getTagParam("pickedpos", pickedPosStr))
|
||||
cs->setPickedPosition(stringToPoint(pickedPosStr));
|
||||
|
||||
addStyle(cs);
|
||||
}
|
||||
|
||||
|
@ -851,9 +879,10 @@ void TPalette::assign(const TPalette *src, bool isFromStudioPalette) {
|
|||
j->second = j->second->clone();
|
||||
m_styleAnimationTable[cit->first] = cit->second;
|
||||
}
|
||||
m_globalName = src->getGlobalName();
|
||||
m_shortcuts = src->m_shortcuts;
|
||||
m_currentFrame = src->m_currentFrame;
|
||||
m_globalName = src->getGlobalName();
|
||||
m_shortcuts = src->m_shortcuts;
|
||||
m_currentFrame = src->m_currentFrame;
|
||||
m_shortcutScopeIndex = src->m_shortcutScopeIndex;
|
||||
// setDirtyFlag(true);
|
||||
}
|
||||
|
||||
|
@ -1053,22 +1082,26 @@ void TPalette::clearKeyframe(int styleId, int frame) {
|
|||
//-------------------------------------------------------------------
|
||||
|
||||
int TPalette::getShortcutValue(int key) const {
|
||||
assert('0' <= key && key <= '9');
|
||||
std::map<int, int>::const_iterator it;
|
||||
it = m_shortcuts.find(key);
|
||||
if (it == m_shortcuts.end()) return -1;
|
||||
int styleId = it->second;
|
||||
return 0 <= styleId && styleId < getStyleCount() ? styleId : -1;
|
||||
assert(Qt::Key_0 <= key && key <= Qt::Key_9);
|
||||
|
||||
int shortcutIndex = (key == Qt::Key_0) ? 9 : key - Qt::Key_1;
|
||||
int indexInPage = m_shortcutScopeIndex * 10 + shortcutIndex;
|
||||
// shortcut is available only in the first page
|
||||
return getPage(0)->getStyleId(indexInPage);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
int TPalette::getStyleShortcut(int styleId) const {
|
||||
assert(0 <= styleId && styleId < getStyleCount());
|
||||
std::map<int, int>::const_iterator it;
|
||||
for (it = m_shortcuts.begin(); it != m_shortcuts.end(); ++it)
|
||||
if (it->second == styleId) return it->first;
|
||||
return -1;
|
||||
|
||||
Page *page = getStylePage(styleId);
|
||||
// shortcut is available only in the first page
|
||||
if (!page || page->getIndex() != 0) return -1;
|
||||
int indexInPage = page->search(styleId);
|
||||
int shortcutIndex = indexInPage - m_shortcutScopeIndex * 10;
|
||||
if (shortcutIndex < 0 || shortcutIndex > 9) return -1;
|
||||
return (shortcutIndex == 9) ? Qt::Key_0 : Qt::Key_1 + shortcutIndex;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
@ -1088,3 +1121,31 @@ void TPalette::setShortcutValue(int key, int styleId) {
|
|||
m_shortcuts[key] = styleId;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Returns true if there is at least one style with picked pos value
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
bool TPalette::hasPickedPosStyle() {
|
||||
for (int i = 0; i < getStyleCount(); ++i) {
|
||||
TColorStyleP style = m_styles[i].second;
|
||||
if (style->getPickedPosition() != TPoint()) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
void TPalette::nextShortcutScope(bool invert) {
|
||||
if (invert) {
|
||||
if (m_shortcutScopeIndex > 0)
|
||||
m_shortcutScopeIndex -= 1;
|
||||
else
|
||||
m_shortcutScopeIndex = getPage(0)->getStyleCount() / 10;
|
||||
} else {
|
||||
if ((m_shortcutScopeIndex + 1) * 10 < getPage(0)->getStyleCount())
|
||||
m_shortcutScopeIndex += 1;
|
||||
else
|
||||
m_shortcutScopeIndex = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <QProcess>
|
||||
#include <QDir>
|
||||
#include <QtGui/QImage>
|
||||
#include <QRegExp>
|
||||
#include "toonz/preferences.h"
|
||||
#include "toonz/toonzfolders.h"
|
||||
|
||||
|
@ -98,8 +99,9 @@ void Ffmpeg::setFrameRate(double fps) { m_frameRate = fps; }
|
|||
void Ffmpeg::setPath(TFilePath path) { m_path = path; }
|
||||
|
||||
void Ffmpeg::createIntermediateImage(const TImageP &img, int frameIndex) {
|
||||
m_frameCount++;
|
||||
QString tempPath = m_path.getQString() + "tempOut" +
|
||||
QString::number(frameIndex) + "." + m_intermediateFormat;
|
||||
QString::number(m_frameCount) + "." + m_intermediateFormat;
|
||||
std::string saveStatus = "";
|
||||
TRasterImageP tempImage(img);
|
||||
TRasterImage *image = (TRasterImage *)tempImage->cloneImage();
|
||||
|
@ -127,7 +129,7 @@ void Ffmpeg::createIntermediateImage(const TImageP &img, int frameIndex) {
|
|||
qi->save(tempPath, format, -1);
|
||||
free(buffer);
|
||||
m_cleanUpList.push_back(tempPath);
|
||||
m_frameCount++;
|
||||
|
||||
delete qi;
|
||||
delete image;
|
||||
}
|
||||
|
@ -217,9 +219,9 @@ void Ffmpeg::saveSoundTrack(TSoundTrack *st) {
|
|||
bool Ffmpeg::checkFilesExist() {
|
||||
QString ffmpegCachePath = getFfmpegCache().getQString();
|
||||
QString tempPath = ffmpegCachePath + "//" +
|
||||
QString::fromStdString(m_path.getName()) +
|
||||
QString::fromStdString(m_path.getType()) + "In0001." +
|
||||
m_intermediateFormat;
|
||||
m_path.getQString().remove(QRegExp(QString::fromUtf8(
|
||||
"[-`~!@#$%^&*()_—+=|:;<>«»,.?/{}\'\"\\[\\]\\\\]"))) +
|
||||
"In0001." + m_intermediateFormat;
|
||||
if (TSystem::doesExistFileOrLevel(TFilePath(tempPath))) {
|
||||
return true;
|
||||
} else
|
||||
|
@ -229,8 +231,9 @@ bool Ffmpeg::checkFilesExist() {
|
|||
ffmpegFileInfo Ffmpeg::getInfo() {
|
||||
QString ffmpegCachePath = getFfmpegCache().getQString();
|
||||
QString tempPath = ffmpegCachePath + "//" +
|
||||
QString::fromStdString(m_path.getName()) +
|
||||
QString::fromStdString(m_path.getType()) + ".txt";
|
||||
m_path.getQString().remove(QRegExp(QString::fromUtf8(
|
||||
"[-`~!@#$%^&*()_—+=|:;<>«»,.?/{}\'\"\\[\\]\\\\]"))) +
|
||||
".txt";
|
||||
if (QFile::exists(tempPath)) {
|
||||
QFile infoText(tempPath);
|
||||
infoText.open(QIODevice::ReadOnly);
|
||||
|
@ -264,8 +267,8 @@ ffmpegFileInfo Ffmpeg::getInfo() {
|
|||
TRasterImageP Ffmpeg::getImage(int frameIndex) {
|
||||
QString ffmpegCachePath = getFfmpegCache().getQString();
|
||||
QString tempPath = ffmpegCachePath + "//" +
|
||||
QString::fromStdString(m_path.getName()) +
|
||||
QString::fromStdString(m_path.getType());
|
||||
m_path.getQString().remove(QRegExp(QString::fromUtf8(
|
||||
"[-`~!@#$%^&*()_—+=|:;<>«»,.?/{}\'\"\\[\\]\\\\]")));
|
||||
std::string tmpPath = tempPath.toStdString();
|
||||
// QString tempPath= m_path.getQString();
|
||||
QString number = QString("%1").arg(frameIndex, 4, 10, QChar('0'));
|
||||
|
@ -356,8 +359,8 @@ int Ffmpeg::getFrameCount() {
|
|||
void Ffmpeg::getFramesFromMovie(int frame) {
|
||||
QString ffmpegCachePath = getFfmpegCache().getQString();
|
||||
QString tempPath = ffmpegCachePath + "//" +
|
||||
QString::fromStdString(m_path.getName()) +
|
||||
QString::fromStdString(m_path.getType());
|
||||
m_path.getQString().remove(QRegExp(QString::fromUtf8(
|
||||
"[-`~!@#$%^&*()_—+=|:;<>«»,.?/{}\'\"\\[\\]\\\\]")));
|
||||
std::string tmpPath = tempPath.toStdString();
|
||||
QString tempName = "In%04d." + m_intermediateFormat;
|
||||
tempName = tempPath + tempName;
|
||||
|
@ -399,6 +402,26 @@ void Ffmpeg::getFramesFromMovie(int frame) {
|
|||
}
|
||||
}
|
||||
|
||||
int Ffmpeg::getGifFrameCount() {
|
||||
int frame = 1;
|
||||
QString ffmpegCachePath = getFfmpegCache().getQString();
|
||||
QString tempPath = ffmpegCachePath + "//" +
|
||||
QString::fromStdString(m_path.getName()) +
|
||||
QString::fromStdString(m_path.getType());
|
||||
std::string tmpPath = tempPath.toStdString();
|
||||
QString tempName = "In%04d." + m_intermediateFormat;
|
||||
tempName = tempPath + tempName;
|
||||
QString tempStart;
|
||||
tempStart = "In0001." + m_intermediateFormat;
|
||||
tempStart = tempPath + tempStart;
|
||||
while (TSystem::doesExistFileOrLevel(TFilePath(tempStart))) {
|
||||
frame++;
|
||||
QString number = QString("%1").arg(frame, 4, 10, QChar('0'));
|
||||
tempStart = tempPath + "In" + number + "." + m_intermediateFormat;
|
||||
}
|
||||
return frame - 1;
|
||||
}
|
||||
|
||||
void Ffmpeg::addToCleanUp(QString path) {
|
||||
if (TSystem::doesExistFileOrLevel(TFilePath(path))) {
|
||||
m_cleanUpList.push_back(path);
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
TFilePath getFfmpegCache();
|
||||
ffmpegFileInfo getInfo();
|
||||
void disablePrecompute();
|
||||
int getGifFrameCount();
|
||||
|
||||
private:
|
||||
QString m_intermediateFormat, m_ffmpegPath, m_audioPath, m_audioFormat;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "tiio_gif.h"
|
||||
#include "trasterimage.h"
|
||||
#include "timageinfo.h"
|
||||
#include "toonz/stage.h"
|
||||
#include <QStringList>
|
||||
|
||||
//===========================================================
|
||||
|
@ -151,8 +152,9 @@ class TImageReaderGif final : public TImageReader {
|
|||
public:
|
||||
int m_frameIndex;
|
||||
|
||||
TImageReaderGif(const TFilePath &path, int index, TLevelReaderGif *lra)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index) {
|
||||
TImageReaderGif(const TFilePath &path, int index, TLevelReaderGif *lra,
|
||||
TImageInfo *info)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
|
||||
m_lra->addRef();
|
||||
}
|
||||
~TImageReaderGif() { m_lra->release(); }
|
||||
|
@ -160,9 +162,11 @@ public:
|
|||
TImageP load() override { return m_lra->load(m_frameIndex); }
|
||||
TDimension getSize() const { return m_lra->getSize(); }
|
||||
TRect getBBox() const { return TRect(); }
|
||||
const TImageInfo *getImageInfo() const override { return m_info; }
|
||||
|
||||
private:
|
||||
TLevelReaderGif *m_lra;
|
||||
TImageInfo *m_info;
|
||||
|
||||
// not implemented
|
||||
TImageReaderGif(const TImageReaderGif &);
|
||||
|
@ -190,7 +194,7 @@ TLevelReaderGif::TLevelReaderGif(const TFilePath &path)
|
|||
m_ly = m_size.ly;
|
||||
|
||||
ffmpegReader->getFramesFromMovie();
|
||||
|
||||
m_frameCount = ffmpegReader->getGifFrameCount();
|
||||
// set values
|
||||
m_info = new TImageInfo();
|
||||
m_info->m_frameRate = fps;
|
||||
|
@ -198,6 +202,8 @@ TLevelReaderGif::TLevelReaderGif(const TFilePath &path)
|
|||
m_info->m_ly = m_ly;
|
||||
m_info->m_bitsPerSample = 8;
|
||||
m_info->m_samplePerPixel = 4;
|
||||
m_info->m_dpix = Stage::standardDpi;
|
||||
m_info->m_dpiy = Stage::standardDpi;
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
|
||||
|
@ -220,9 +226,8 @@ TImageReaderP TLevelReaderGif::getFrameReader(TFrameId fid) {
|
|||
// if (IOError != 0)
|
||||
// throw TImageException(m_path, buildAVIExceptionString(IOError));
|
||||
if (fid.getLetter() != 0) return TImageReaderP(0);
|
||||
int index = fid.getNumber();
|
||||
|
||||
TImageReaderGif *irm = new TImageReaderGif(m_path, index, this);
|
||||
int index = fid.getNumber();
|
||||
TImageReaderGif *irm = new TImageReaderGif(m_path, index, this, m_info);
|
||||
return TImageReaderP(irm);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "trasterimage.h"
|
||||
#include "timageinfo.h"
|
||||
#include "tsound.h"
|
||||
#include "toonz/stage.h"
|
||||
#include <QStringList>
|
||||
|
||||
//===========================================================
|
||||
|
@ -38,11 +39,16 @@ private:
|
|||
TLevelWriterMp4::TLevelWriterMp4(const TFilePath &path, TPropertyGroup *winfo)
|
||||
: TLevelWriter(path, winfo) {
|
||||
if (!m_properties) m_properties = new Tiio::Mp4WriterProperties();
|
||||
std::string scale = m_properties->getProperty("Scale")->getValueAsString();
|
||||
m_scale = QString::fromStdString(scale).toInt();
|
||||
std::string quality =
|
||||
m_properties->getProperty("Quality")->getValueAsString();
|
||||
m_vidQuality = QString::fromStdString(quality).toInt();
|
||||
if (m_properties->getPropertyCount() == 0) {
|
||||
m_scale = 100;
|
||||
m_vidQuality = 100;
|
||||
} else {
|
||||
std::string scale = m_properties->getProperty("Scale")->getValueAsString();
|
||||
m_scale = QString::fromStdString(scale).toInt();
|
||||
std::string quality =
|
||||
m_properties->getProperty("Quality")->getValueAsString();
|
||||
m_vidQuality = QString::fromStdString(quality).toInt();
|
||||
}
|
||||
ffmpegWriter = new Ffmpeg();
|
||||
ffmpegWriter->setPath(m_path);
|
||||
if (TSystem::doesExistFileOrLevel(m_path)) TSystem::deleteFile(m_path);
|
||||
|
@ -129,8 +135,9 @@ class TImageReaderMp4 final : public TImageReader {
|
|||
public:
|
||||
int m_frameIndex;
|
||||
|
||||
TImageReaderMp4(const TFilePath &path, int index, TLevelReaderMp4 *lra)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index) {
|
||||
TImageReaderMp4(const TFilePath &path, int index, TLevelReaderMp4 *lra,
|
||||
TImageInfo *info)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
|
||||
m_lra->addRef();
|
||||
}
|
||||
~TImageReaderMp4() { m_lra->release(); }
|
||||
|
@ -138,9 +145,11 @@ public:
|
|||
TImageP load() override { return m_lra->load(m_frameIndex); }
|
||||
TDimension getSize() const { return m_lra->getSize(); }
|
||||
TRect getBBox() const { return TRect(); }
|
||||
const TImageInfo *getImageInfo() const override { return m_info; }
|
||||
|
||||
private:
|
||||
TLevelReaderMp4 *m_lra;
|
||||
TImageInfo *m_info;
|
||||
|
||||
// not implemented
|
||||
TImageReaderMp4(const TImageReaderMp4 &);
|
||||
|
@ -173,6 +182,8 @@ TLevelReaderMp4::TLevelReaderMp4(const TFilePath &path) : TLevelReader(path) {
|
|||
m_info->m_ly = m_ly;
|
||||
m_info->m_bitsPerSample = 8;
|
||||
m_info->m_samplePerPixel = 4;
|
||||
m_info->m_dpix = Stage::standardDpi;
|
||||
m_info->m_dpiy = Stage::standardDpi;
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
|
||||
|
@ -197,7 +208,7 @@ TImageReaderP TLevelReaderMp4::getFrameReader(TFrameId fid) {
|
|||
if (fid.getLetter() != 0) return TImageReaderP(0);
|
||||
int index = fid.getNumber();
|
||||
|
||||
TImageReaderMp4 *irm = new TImageReaderMp4(m_path, index, this);
|
||||
TImageReaderMp4 *irm = new TImageReaderMp4(m_path, index, this, m_info);
|
||||
return TImageReaderP(irm);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "trasterimage.h"
|
||||
#include "tsound.h"
|
||||
#include "timageinfo.h"
|
||||
#include "toonz/stage.h"
|
||||
#include <QStringList>
|
||||
|
||||
//===========================================================
|
||||
|
@ -133,8 +134,9 @@ class TImageReaderWebm final : public TImageReader {
|
|||
public:
|
||||
int m_frameIndex;
|
||||
|
||||
TImageReaderWebm(const TFilePath &path, int index, TLevelReaderWebm *lra)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index) {
|
||||
TImageReaderWebm(const TFilePath &path, int index, TLevelReaderWebm *lra,
|
||||
TImageInfo *info)
|
||||
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
|
||||
m_lra->addRef();
|
||||
}
|
||||
~TImageReaderWebm() { m_lra->release(); }
|
||||
|
@ -142,9 +144,11 @@ public:
|
|||
TImageP load() override { return m_lra->load(m_frameIndex); }
|
||||
TDimension getSize() const { return m_lra->getSize(); }
|
||||
TRect getBBox() const { return TRect(); }
|
||||
const TImageInfo *getImageInfo() const override { return m_info; }
|
||||
|
||||
private:
|
||||
TLevelReaderWebm *m_lra;
|
||||
TImageInfo *m_info;
|
||||
|
||||
// not implemented
|
||||
TImageReaderWebm(const TImageReaderWebm &);
|
||||
|
@ -177,6 +181,8 @@ TLevelReaderWebm::TLevelReaderWebm(const TFilePath &path) : TLevelReader(path) {
|
|||
m_info->m_ly = m_ly;
|
||||
m_info->m_bitsPerSample = 8;
|
||||
m_info->m_samplePerPixel = 4;
|
||||
m_info->m_dpix = Stage::standardDpi;
|
||||
m_info->m_dpiy = Stage::standardDpi;
|
||||
}
|
||||
//-----------------------------------------------------------
|
||||
|
||||
|
@ -201,7 +207,7 @@ TImageReaderP TLevelReaderWebm::getFrameReader(TFrameId fid) {
|
|||
if (fid.getLetter() != 0) return TImageReaderP(0);
|
||||
int index = fid.getNumber();
|
||||
|
||||
TImageReaderWebm *irm = new TImageReaderWebm(m_path, index, this);
|
||||
TImageReaderWebm *irm = new TImageReaderWebm(m_path, index, this, m_info);
|
||||
return TImageReaderP(irm);
|
||||
}
|
||||
|
||||
|
|
|
@ -118,6 +118,9 @@ private:
|
|||
// This flag will be set when the
|
||||
//! style is edited from the original one.
|
||||
|
||||
TPoint m_pickedPosition; // picked position from color model by using style
|
||||
// picker tool with "organize palette" option.
|
||||
|
||||
protected:
|
||||
TRaster32P m_icon; //!< Icon shown on TPalette viewers.
|
||||
bool m_validIcon; //!< Icon's validity status.
|
||||
|
@ -212,6 +215,9 @@ The \a global name contains information about palette id.
|
|||
m_flags = flags;
|
||||
} //!< Returns color attributes.
|
||||
|
||||
void setPickedPosition(const TPoint &pos) { m_pickedPosition = pos; }
|
||||
TPoint getPickedPosition() const { return m_pickedPosition; }
|
||||
|
||||
// Color-related functions
|
||||
|
||||
/*! \detail
|
||||
|
|
|
@ -177,7 +177,7 @@ If the path is "<alpha>:" a slash will be added*/
|
|||
TFilePath getParentDir() const; // noSlash!;
|
||||
|
||||
TFrameId getFrame() const;
|
||||
|
||||
bool isFfmpegType() const;
|
||||
bool isLevelName()
|
||||
const; //{return getFrame() == TFrameId(TFrameId::EMPTY_FRAME);};
|
||||
bool isAbsolute() const;
|
||||
|
|
|
@ -66,6 +66,8 @@ enum {
|
|||
PickerCursorWhite,
|
||||
PickerCursorWhiteLine,
|
||||
PickerCursorWhiteArea,
|
||||
PickerCursorOrganize,
|
||||
PickerCursorWhiteOrganize,
|
||||
|
||||
PickerRGB,
|
||||
PickerRGBWhite,
|
||||
|
|
|
@ -647,7 +647,9 @@ public slots:
|
|||
void onToolChanged();
|
||||
void onStageObjectChange();
|
||||
|
||||
// signals:
|
||||
signals:
|
||||
// used in ComboViewer to handle Tab focus
|
||||
void newPanelCreated();
|
||||
|
||||
// void toolOptionChange();
|
||||
};
|
||||
|
|
|
@ -146,7 +146,8 @@ public:
|
|||
return -1;
|
||||
}
|
||||
|
||||
TToonzImageP makeTlv(bool transparentSyntheticInks);
|
||||
TToonzImageP makeTlv(bool transparentSyntheticInks,
|
||||
bool removeUnusedStyles = false);
|
||||
|
||||
TVectorImageP vectorize(const TToonzImageP &ti);
|
||||
TVectorImageP vectorize(const TRaster32P &ras);
|
||||
|
|
|
@ -88,6 +88,17 @@ DVAPI void renamePalettePage(TPaletteHandle *paletteHandle, int pageIndex,
|
|||
DVAPI void renamePaletteStyle(TPaletteHandle *paletteHandle,
|
||||
const std::wstring &newName);
|
||||
|
||||
/* called in ColorModelViewer::pick() - move selected style to the first page */
|
||||
DVAPI void organizePaletteStyle(TPaletteHandle *paletteHandle, int styleId,
|
||||
const TPoint &point);
|
||||
|
||||
/*
|
||||
called in ColorModelViewer::repickFromColorModel().
|
||||
Pick color from the img for all styles with "picked position" value.
|
||||
*/
|
||||
DVAPI void pickColorByUsingPickedPosition(TPaletteHandle *paletteHandle,
|
||||
TImageP img);
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
||||
|
|
|
@ -99,6 +99,14 @@ public:
|
|||
void setAutosavePeriod(int minutes);
|
||||
int getAutosavePeriod() const { return m_autosavePeriod; } // minutes
|
||||
|
||||
void enableAutosaveScene(bool on);
|
||||
bool isAutosaveSceneEnabled() const { return m_autosaveSceneEnabled; }
|
||||
|
||||
void enableAutosaveOtherFiles(bool on);
|
||||
bool isAutosaveOtherFilesEnabled() const {
|
||||
return m_autosaveOtherFilesEnabled;
|
||||
}
|
||||
|
||||
void enableLevelsBackup(bool enabled);
|
||||
bool isLevelsBackupEnabled() const { return m_levelsBackupEnabled; }
|
||||
|
||||
|
@ -110,6 +118,9 @@ public:
|
|||
return m_replaceAfterSaveLevelAs;
|
||||
}
|
||||
|
||||
void enableStartupPopup(bool on);
|
||||
bool isStartupPopupEnabled() { return m_startupPopupEnabled; }
|
||||
|
||||
void setProjectRoot(int index);
|
||||
int getProjectRoot() { return m_projectRoot; }
|
||||
|
||||
|
@ -296,6 +307,11 @@ public:
|
|||
return m_multiLayerStylePickerEnabled;
|
||||
}
|
||||
|
||||
void enableUseNumpadForSwitchingStyles(bool on);
|
||||
bool isUseNumpadForSwitchingStylesEnabled() const {
|
||||
return m_useNumpadForSwitchingStyles;
|
||||
}
|
||||
|
||||
// Xsheet tab
|
||||
|
||||
void setXsheetStep(int step); //!< Sets the step used for the <I>next/prev
|
||||
|
@ -395,7 +411,8 @@ public:
|
|||
bool getPrecompute() { return m_precompute; }
|
||||
void setFfmpegTimeout(int seconds);
|
||||
int getFfmpegTimeout() { return m_ffmpegTimeout; }
|
||||
|
||||
void setFastRenderPath(std::string path);
|
||||
QString getFastRenderPath() const { return m_fastRenderPath; }
|
||||
// Uncategorized - internals
|
||||
|
||||
void setAskForOverrideRender(bool on);
|
||||
|
@ -407,6 +424,9 @@ public:
|
|||
int getTextureSize() const { return m_textureSize; }
|
||||
bool useDrawPixel() { return m_textureSize == 0; }
|
||||
|
||||
void setShortcutPreset(std::string preset);
|
||||
QString getShortcutPreset() { return m_shortcutPreset; }
|
||||
|
||||
int getShmMax() const {
|
||||
return m_shmmax;
|
||||
} //! \sa The \p sysctl unix command.
|
||||
|
@ -434,7 +454,9 @@ private:
|
|||
std::vector<LevelFormat> m_levelFormats;
|
||||
|
||||
QString m_units, m_cameraUnits, m_scanLevelType, m_currentRoomChoice,
|
||||
m_oldUnits, m_oldCameraUnits, m_ffmpegPath, m_customProjectRoot;
|
||||
m_oldUnits, m_oldCameraUnits, m_ffmpegPath, m_shortcutPreset,
|
||||
m_customProjectRoot;
|
||||
QString m_fastRenderPath;
|
||||
|
||||
double m_defLevelWidth, m_defLevelHeight, m_defLevelDpi;
|
||||
|
||||
|
@ -457,11 +479,13 @@ private:
|
|||
m_generatedMovieViewEnabled, m_xsheetAutopanEnabled,
|
||||
m_ignoreAlphaonColumn1Enabled, m_previewAlwaysOpenNewFlipEnabled,
|
||||
m_rewindAfterPlaybackEnabled, m_fitToFlipbookEnabled, m_autosaveEnabled,
|
||||
m_autosaveSceneEnabled, m_autosaveOtherFilesEnabled,
|
||||
m_defaultViewerEnabled, m_pixelsOnly;
|
||||
bool m_rasterOptimizedMemory, m_saveUnpaintedInCleanup,
|
||||
m_askForOverrideRender, m_automaticSVNFolderRefreshEnabled, m_SVNEnabled,
|
||||
m_levelsBackupEnabled, m_minimizeSaveboxAfterEditing,
|
||||
m_sceneNumberingEnabled, m_animationSheetEnabled, m_inksOnly;
|
||||
m_sceneNumberingEnabled, m_animationSheetEnabled, m_inksOnly,
|
||||
m_startupPopupEnabled;
|
||||
bool m_fillOnlySavebox, m_show0ThickLines, m_regionAntialias;
|
||||
bool m_onionSkinDuringPlayback;
|
||||
TPixel32 m_viewerBGColor, m_previewBGColor, m_chessboardColor1,
|
||||
|
@ -499,6 +523,8 @@ private:
|
|||
std::string m_layerNameEncoding = "SJIS"; // Fixed to SJIS for now. You can
|
||||
// add interface if you wanna
|
||||
// change encoding.
|
||||
// whether to use numpad and tab key shortcut for selecting styles
|
||||
bool m_useNumpadForSwitchingStyles;
|
||||
|
||||
private:
|
||||
Preferences();
|
||||
|
|
|
@ -57,7 +57,7 @@ public:
|
|||
bool isConstantFolder(int index) const;
|
||||
|
||||
TFilePath getFolder(int index) const;
|
||||
TFilePath getFolder(std::string name) const;
|
||||
TFilePath getFolder(std::string name, bool absolute = false) const;
|
||||
|
||||
TFilePath getScenesPath() const;
|
||||
|
||||
|
|
|
@ -52,7 +52,9 @@ public:
|
|||
}
|
||||
void notifyNameSceneChange() { emit nameSceneChanged(); }
|
||||
|
||||
void notifyPreferenceChanged() { emit preferenceChanged(); }
|
||||
void notifyPreferenceChanged(const QString &prefName) {
|
||||
emit preferenceChanged(prefName);
|
||||
}
|
||||
|
||||
void notifyPixelUnitSelected(bool on) { emit pixelUnitSelected(on); }
|
||||
|
||||
|
@ -76,7 +78,7 @@ signals:
|
|||
void castChanged();
|
||||
void castFolderAdded(const TFilePath &path);
|
||||
void nameSceneChanged();
|
||||
void preferenceChanged();
|
||||
void preferenceChanged(const QString &prefName);
|
||||
void pixelUnitSelected(bool on);
|
||||
};
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ protected:
|
|||
//---------------------------------------------------------------
|
||||
|
||||
class DVAPI CameraSettingsWidget final : public QFrame {
|
||||
friend class StartupPopup;
|
||||
Q_OBJECT
|
||||
|
||||
bool m_forCleanup;
|
||||
|
|
|
@ -58,10 +58,11 @@ void DVAPI MsgBoxInPopup(MsgType type, const QString &text);
|
|||
|
||||
// ATTENZIONE: Valore di ritorno
|
||||
// 0 = l'utente ha chiuso la finestra (dovrebbe corrispondere ad un cancel o ad
|
||||
// un NO)
|
||||
// 1 = primo bottone da sx premuto
|
||||
// 2 = secondo bottone da sx premuto
|
||||
// 3 = terzo bottone da sx premuto
|
||||
// un NO) - closed window
|
||||
// 1 = primo bottone da sx premuto - first button selected
|
||||
// 2 = secondo bottone da sx premuto - second button
|
||||
// 3 = terzo bottone da sx premuto - third button
|
||||
// 4 = fourth button
|
||||
|
||||
int DVAPI MsgBox(MsgType type, const QString &text,
|
||||
const std::vector<QString> &buttons,
|
||||
|
@ -77,6 +78,12 @@ int DVAPI MsgBox(const QString &text, const QString &button1,
|
|||
const QString &button2, const QString &button3,
|
||||
int defaultButtonIndex = 0, QWidget *parent = 0);
|
||||
|
||||
// QUESTION: four botton user defined
|
||||
int DVAPI MsgBox(const QString &text, const QString &button1,
|
||||
const QString &button2, const QString &button3,
|
||||
const QString &button4, int defaultButtonIndex = 0,
|
||||
QWidget *parent = 0);
|
||||
|
||||
Dialog DVAPI *createMsgBox(MsgType type, const QString &text,
|
||||
const QStringList &buttons, int defaultButtonIndex,
|
||||
QWidget *parent = 0);
|
||||
|
@ -229,6 +236,8 @@ public:
|
|||
void addButtonBarWidget(QWidget *widget);
|
||||
void addButtonBarWidget(QWidget *first, QWidget *second);
|
||||
void addButtonBarWidget(QWidget *first, QWidget *second, QWidget *third);
|
||||
void addButtonBarWidget(QWidget *first, QWidget *second, QWidget *third,
|
||||
QWidget *fourth);
|
||||
|
||||
void hideEvent(QHideEvent *event) override;
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ class DVAPI FileField : public QWidget {
|
|||
QStringList m_filters;
|
||||
QFileDialog::FileMode m_fileMode;
|
||||
QString m_windowTitle;
|
||||
QString m_descriptionText; // if the initial text is not path, set the string
|
||||
// here and prevent browsing
|
||||
|
||||
protected: // used in the child class for CleanupSettings
|
||||
QPushButton *m_fileBrowseButton;
|
||||
|
@ -73,7 +75,7 @@ public:
|
|||
static BrowserPopupController *m_browserPopupController;
|
||||
|
||||
FileField(QWidget *parent = 0, QString path = QString(),
|
||||
bool readOnly = false);
|
||||
bool readOnly = false, bool doNotBrowseInitialPath = false);
|
||||
~FileField() {}
|
||||
|
||||
/*! Set what the user may select in the file dialog:
|
||||
|
|
|
@ -214,7 +214,8 @@ public:
|
|||
eFilledRaster = 0x4000000, // Used only in LineTest
|
||||
eDefineLoadBox = 0x8000000,
|
||||
eUseLoadBox = 0x10000000,
|
||||
eEnd = 0x20000000
|
||||
eLocator = 0x20000000,
|
||||
eEnd = 0x40000000
|
||||
};
|
||||
|
||||
static const UINT cFullConsole = eEnd - 1;
|
||||
|
@ -249,6 +250,7 @@ public:
|
|||
void enableButton(UINT button, bool enable, bool doShowHide = true);
|
||||
void showCurrentFrame();
|
||||
int getCurrentFrame() const { return m_currentFrame; }
|
||||
int getCurrentFps() const { return m_fps; }
|
||||
void setChecked(UINT button, bool state);
|
||||
bool isChecked(UINT button) const;
|
||||
void setCurrentFrame(int frame, bool forceResetting = false);
|
||||
|
|
|
@ -111,8 +111,10 @@ void DVAPI convertNaa2Tlv(
|
|||
FrameTaskNotifier
|
||||
*frameNotifier, //!< Observer class for frame success notifications.
|
||||
TPalette *palette =
|
||||
0); //!< Special conversion function from an antialiased level to tlv.
|
||||
//! \sa Function ImageUtils::convert().
|
||||
0, //!< Special conversion function from an antialiased level to tlv.
|
||||
//! \sa Function ImageUtils::convert().
|
||||
bool removeUnusedStyles =
|
||||
false); //! Remove unused styles from input palette.
|
||||
|
||||
double DVAPI getQuantizedZoomFactor(double zf, bool forward);
|
||||
|
||||
|
|
|
@ -145,7 +145,8 @@ public:
|
|||
std::string getShortcutFromId(CommandId id);
|
||||
int getKeyFromShortcut(const std::string &shortcut);
|
||||
int getKeyFromId(CommandId id);
|
||||
void setShortcut(QAction *action, std::string shortcutString);
|
||||
void setShortcut(QAction *action, std::string shortcutString,
|
||||
bool keepDefault = true);
|
||||
|
||||
QAction *getAction(CommandId id, bool createIfNeeded = false);
|
||||
|
||||
|
|
|
@ -199,11 +199,7 @@ protected:
|
|||
void zoomInChip();
|
||||
void zoomOutChip();
|
||||
|
||||
protected slots:
|
||||
|
||||
void toggleLink();
|
||||
void eraseToggleLink();
|
||||
void removeLink();
|
||||
bool hasShortcut(int indexInPage);
|
||||
|
||||
private:
|
||||
DVGui::LineEdit *m_renameTextField;
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#define MI_PasteColors "MI_PasteColors"
|
||||
#define MI_PasteNames "MI_PasteNames"
|
||||
#define MI_GetColorFromStudioPalette "MI_GetColorFromStudioPalette"
|
||||
#define MI_ToggleLinkToStudioPalette "MI_ToggleLinkToStudioPalette"
|
||||
#define MI_RemoveReferenceToStudioPalette "MI_RemoveReferenceToStudioPalette"
|
||||
#define MI_Clear "MI_Clear"
|
||||
#define MI_SelectAll "MI_SelectAll"
|
||||
#define MI_InvertSelection "MI_InvertSelection"
|
||||
|
|
|
@ -95,9 +95,11 @@ public:
|
|||
void toggleKeyframe(int frame);
|
||||
|
||||
// remove link from the studio palette (if linked)
|
||||
bool removeLink();
|
||||
void removeLink();
|
||||
// get back the style from the studio palette (if linked)
|
||||
void getBackOriginalStyle();
|
||||
// return true if there is at least one linked style in the selection
|
||||
bool hasLinkedStyle();
|
||||
};
|
||||
|
||||
#endif // STYLESELECTION_INCLUDED
|
||||
|
|
|
@ -211,6 +211,9 @@ private:
|
|||
//! The confirmation dialog will not be opened unless the palette is edited
|
||||
//! again,
|
||||
//! even if the palette's dirtyflag is true.
|
||||
|
||||
int m_shortcutScopeIndex;
|
||||
|
||||
public:
|
||||
TPalette();
|
||||
~TPalette();
|
||||
|
@ -417,6 +420,11 @@ between RGBA color components.
|
|||
m_isLocked = lock;
|
||||
}
|
||||
|
||||
bool hasPickedPosStyle(); // Returns true if there is at least one style with
|
||||
// picked pos value
|
||||
|
||||
void nextShortcutScope(bool invert);
|
||||
|
||||
public:
|
||||
// Deprecated functions
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ set(MOC_HEADERS
|
|||
../include/tools/screenpicker.h
|
||||
rgbpickertool.h
|
||||
rulertool.h
|
||||
stylepickertool.h
|
||||
)
|
||||
|
||||
set(HEADERS ${MOC_HEADERS}
|
||||
|
|
BIN
toonz/sources/tnztools/Resources/picker_style_organize.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
toonz/sources/tnztools/Resources/picker_style_white_organize.png
Normal file
After Width: | Height: | Size: 16 KiB |
|
@ -45,7 +45,7 @@ using namespace ToolUtils;
|
|||
|
||||
TEnv::DoubleVar VectorBrushMinSize("InknpaintVectorBrushMinSize", 1);
|
||||
TEnv::DoubleVar VectorBrushMaxSize("InknpaintVectorBrushMaxSize", 5);
|
||||
TEnv::IntVar VectorCapStyle("InknpaintVectorCapStyle", 0);
|
||||
TEnv::IntVar VectorCapStyle("InknpaintVectorCapStyle", 1);
|
||||
TEnv::IntVar VectorJoinStyle("InknpaintVectorJoinStyle", 0);
|
||||
TEnv::IntVar VectorMiterValue("InknpaintVectorMiterValue", 4);
|
||||
TEnv::DoubleVar RasterBrushMinSize("InknpaintRasterBrushMinSize", 1);
|
||||
|
|
|
@ -73,6 +73,9 @@ const struct {
|
|||
{ToolCursor::PickerCursorWhiteLine, "picker_style_white_line", 7, 22},
|
||||
{ToolCursor::PickerCursorWhiteArea, "picker_style_white_area", 7, 22},
|
||||
{ToolCursor::PickerCursorWhite, "picker_style_white", 7, 22},
|
||||
{ToolCursor::PickerCursorOrganize, "picker_style_organize", 7, 22},
|
||||
{ToolCursor::PickerCursorWhiteOrganize, "picker_style_white_organize", 7,
|
||||
22},
|
||||
{ToolCursor::PickerRGB, "picker_rgb", 7, 22},
|
||||
{ToolCursor::PickerRGBWhite, "picker_rgb_white", 7, 22},
|
||||
{ToolCursor::FillCursorF, "fill_f", 6, 23},
|
||||
|
|
|
@ -1,238 +1,307 @@
|
|||
#include "stylepickertool.h"
|
||||
|
||||
|
||||
// TnzTools includes
|
||||
#include "tools/tool.h"
|
||||
#include "tools/cursors.h"
|
||||
#include "tools/stylepicker.h"
|
||||
#include "toonz/txshsimplelevel.h"
|
||||
#include "toonz/txshlevelhandle.h"
|
||||
#include "tools/toolhandle.h"
|
||||
|
||||
#include "drawutil.h"
|
||||
#include "tvectorimage.h"
|
||||
#include "ttoonzimage.h"
|
||||
#include "tundo.h"
|
||||
|
||||
#include "toonz/tpalettehandle.h"
|
||||
|
||||
#include "toonz/stage2.h"
|
||||
#include "tproperty.h"
|
||||
// TnzQt includes
|
||||
#include "toonzqt/tselectionhandle.h"
|
||||
#include "toonzqt/styleselection.h"
|
||||
#include "tools/toolhandle.h"
|
||||
|
||||
// TnzLib includes
|
||||
#include "toonz/txshsimplelevel.h"
|
||||
#include "toonz/txshlevelhandle.h"
|
||||
#include "toonz/tpalettehandle.h"
|
||||
#include "toonz/stage2.h"
|
||||
#include "toonz/tframehandle.h"
|
||||
#include "toonz/txsheethandle.h"
|
||||
#include "toonz/preferences.h"
|
||||
#include "toonz/tcolumnhandle.h"
|
||||
#include "toonz/dpiscale.h"
|
||||
#include "toonz/palettecontroller.h"
|
||||
#include "toonz/txshleveltypes.h"
|
||||
#include "toonz/txshpalettelevel.h"
|
||||
|
||||
// TnzCore includes
|
||||
#include "drawutil.h"
|
||||
#include "tvectorimage.h"
|
||||
#include "ttoonzimage.h"
|
||||
#include "tundo.h"
|
||||
#include "tmsgcore.h"
|
||||
|
||||
#define LINES L"Lines"
|
||||
#define AREAS L"Areas"
|
||||
#define ALL L"Lines & Areas"
|
||||
|
||||
namespace {
|
||||
|
||||
//========================================================================
|
||||
// Pick Style Tool
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
class StylePickerTool final : public TTool {
|
||||
int m_oldStyleId, m_currentStyleId;
|
||||
StylePickerTool::StylePickerTool()
|
||||
: TTool("T_StylePicker")
|
||||
, m_currentStyleId(0)
|
||||
, m_colorType("Mode:")
|
||||
, m_passivePick("Passive Pick", false)
|
||||
, m_organizePalette("Organize Palette", false)
|
||||
, m_paletteToBeOrganized(NULL) {
|
||||
m_prop.bind(m_colorType);
|
||||
m_colorType.addValue(AREAS);
|
||||
m_colorType.addValue(LINES);
|
||||
m_colorType.addValue(ALL);
|
||||
m_colorType.setId("Mode");
|
||||
bind(TTool::CommonLevels);
|
||||
|
||||
TEnumProperty m_colorType;
|
||||
TPropertyGroup m_prop;
|
||||
m_prop.bind(m_passivePick);
|
||||
m_passivePick.setId("PassivePick");
|
||||
|
||||
TBoolProperty m_passivePick;
|
||||
m_prop.bind(m_organizePalette);
|
||||
m_organizePalette.setId("OrganizePalette");
|
||||
}
|
||||
|
||||
public:
|
||||
TPropertyGroup *getProperties(int targetType) override { return &m_prop; }
|
||||
void StylePickerTool::leftButtonDown(const TPointD &pos, const TMouseEvent &e) {
|
||||
m_oldStyleId = m_currentStyleId =
|
||||
getApplication()->getCurrentLevelStyleIndex();
|
||||
pick(pos, e);
|
||||
}
|
||||
|
||||
StylePickerTool()
|
||||
: TTool("T_StylePicker")
|
||||
, m_currentStyleId(0)
|
||||
, m_colorType("Mode:")
|
||||
, m_passivePick("Passive Pick", false) {
|
||||
m_prop.bind(m_colorType);
|
||||
m_colorType.addValue(AREAS);
|
||||
m_colorType.addValue(LINES);
|
||||
m_colorType.addValue(ALL);
|
||||
m_colorType.setId("Mode");
|
||||
bind(TTool::CommonLevels);
|
||||
void StylePickerTool::leftButtonDrag(const TPointD &pos, const TMouseEvent &e) {
|
||||
pick(pos, e);
|
||||
}
|
||||
|
||||
m_prop.bind(m_passivePick);
|
||||
m_passivePick.setId("PassivePick");
|
||||
}
|
||||
void StylePickerTool::pick(const TPointD &pos, const TMouseEvent &e) {
|
||||
// Area = 0, Line = 1, All = 2
|
||||
int modeValue = m_colorType.getIndex();
|
||||
|
||||
ToolType getToolType() const override { return TTool::LevelReadTool; }
|
||||
//------------------------------------
|
||||
// MultiLayerStylePicker
|
||||
/*---
|
||||
PickしたStyleId = 0、かつ
|
||||
Preference で MultiLayerStylePickerが有効、かつ
|
||||
Scene編集モード、かつ
|
||||
下のカラムから拾った色がTransparentでない場合、
|
||||
→ カレントLevelを移動する。
|
||||
---*/
|
||||
if (Preferences::instance()->isMultiLayerStylePickerEnabled() &&
|
||||
getApplication()->getCurrentFrame()->isEditingScene()) {
|
||||
int superPickedColumnId = getViewer()->posToColumnIndex(
|
||||
e.m_pos, getPixelSize() * getPixelSize(), false);
|
||||
|
||||
void draw() override {}
|
||||
if (superPickedColumnId >= 0 /*-- 何かColumnに当たった場合 --*/
|
||||
&&
|
||||
getApplication()->getCurrentColumn()->getColumnIndex() !=
|
||||
superPickedColumnId) /*-- かつ、Current Columnでない場合 --*/
|
||||
{
|
||||
/*-- そのColumnからPickを試みる --*/
|
||||
int currentFrame = getApplication()->getCurrentFrame()->getFrame();
|
||||
TXshCell pickedCell =
|
||||
getApplication()->getCurrentXsheet()->getXsheet()->getCell(
|
||||
currentFrame, superPickedColumnId);
|
||||
TImageP pickedImage = pickedCell.getImage(false).getPointer();
|
||||
TToonzImageP picked_ti = pickedImage;
|
||||
TVectorImageP picked_vi = pickedImage;
|
||||
TXshSimpleLevel *picked_level = pickedCell.getSimpleLevel();
|
||||
if ((picked_ti || picked_vi) && picked_level) {
|
||||
TPointD tmpMousePosition = getColumnMatrix(superPickedColumnId).inv() *
|
||||
getViewer()->winToWorld(e.m_pos);
|
||||
|
||||
void leftButtonDown(const TPointD &pos, const TMouseEvent &e) override {
|
||||
m_oldStyleId = m_currentStyleId =
|
||||
getApplication()->getCurrentLevelStyleIndex();
|
||||
pick(pos, e);
|
||||
}
|
||||
void leftButtonDrag(const TPointD &pos, const TMouseEvent &e) override {
|
||||
pick(pos, e);
|
||||
}
|
||||
TPointD tmpDpiScale = getCurrentDpiScale(picked_level, getCurrentFid());
|
||||
|
||||
void pick(const TPointD &pos, const TMouseEvent &e) {
|
||||
// Area = 0, Line = 1, All = 2
|
||||
int modeValue = m_colorType.getIndex();
|
||||
tmpMousePosition.x /= tmpDpiScale.x;
|
||||
tmpMousePosition.y /= tmpDpiScale.y;
|
||||
|
||||
//------------------------------------
|
||||
// MultiLayerStylePicker
|
||||
/*---
|
||||
PickしたStyleId = 0、かつ
|
||||
Preference で MultiLayerStylePickerが有効、かつ
|
||||
Scene編集モード、かつ
|
||||
下のカラムから拾った色がTransparentでない場合、
|
||||
→ カレントLevelを移動する。
|
||||
---*/
|
||||
if (Preferences::instance()->isMultiLayerStylePickerEnabled() &&
|
||||
getApplication()->getCurrentFrame()->isEditingScene()) {
|
||||
int superPickedColumnId = getViewer()->posToColumnIndex(
|
||||
e.m_pos, getPixelSize() * getPixelSize(), false);
|
||||
|
||||
if (superPickedColumnId >= 0 /*-- 何かColumnに当たった場合 --*/
|
||||
&&
|
||||
getApplication()->getCurrentColumn()->getColumnIndex() !=
|
||||
superPickedColumnId) /*-- かつ、Current Columnでない場合 --*/
|
||||
{
|
||||
/*-- そのColumnからPickを試みる --*/
|
||||
int currentFrame = getApplication()->getCurrentFrame()->getFrame();
|
||||
TXshCell pickedCell =
|
||||
getApplication()->getCurrentXsheet()->getXsheet()->getCell(
|
||||
currentFrame, superPickedColumnId);
|
||||
TImageP pickedImage = pickedCell.getImage(false).getPointer();
|
||||
TToonzImageP picked_ti = pickedImage;
|
||||
TVectorImageP picked_vi = pickedImage;
|
||||
TXshSimpleLevel *picked_level = pickedCell.getSimpleLevel();
|
||||
if ((picked_ti || picked_vi) && picked_level) {
|
||||
TPointD tmpMousePosition =
|
||||
getColumnMatrix(superPickedColumnId).inv() *
|
||||
getViewer()->winToWorld(e.m_pos);
|
||||
|
||||
TPointD tmpDpiScale =
|
||||
getCurrentDpiScale(picked_level, getCurrentFid());
|
||||
|
||||
tmpMousePosition.x /= tmpDpiScale.x;
|
||||
tmpMousePosition.y /= tmpDpiScale.y;
|
||||
|
||||
StylePicker superPicker(pickedImage);
|
||||
int picked_subsampling =
|
||||
picked_level->getImageSubsampling(pickedCell.getFrameId());
|
||||
int superPicked_StyleId = superPicker.pickStyleId(
|
||||
TScale(1.0 / picked_subsampling) * tmpMousePosition +
|
||||
TPointD(-0.5, -0.5),
|
||||
getPixelSize() * getPixelSize(), modeValue);
|
||||
/*-- 何かStyleが拾えて、Transparentでない場合 --*/
|
||||
if (superPicked_StyleId > 0) {
|
||||
/*-- Levelの移動 --*/
|
||||
getApplication()->getCurrentLevel()->setLevel(picked_level);
|
||||
/*-- Columnの移動 --*/
|
||||
getApplication()->getCurrentColumn()->setColumnIndex(
|
||||
superPickedColumnId);
|
||||
/*-- 選択の解除 --*/
|
||||
if (getApplication()->getCurrentSelection()->getSelection())
|
||||
getApplication()
|
||||
->getCurrentSelection()
|
||||
->getSelection()
|
||||
->selectNone();
|
||||
/*-- StyleIdの移動 --*/
|
||||
getApplication()->setCurrentLevelStyleIndex(superPicked_StyleId);
|
||||
return;
|
||||
}
|
||||
StylePicker superPicker(pickedImage);
|
||||
int picked_subsampling =
|
||||
picked_level->getImageSubsampling(pickedCell.getFrameId());
|
||||
int superPicked_StyleId = superPicker.pickStyleId(
|
||||
TScale(1.0 / picked_subsampling) * tmpMousePosition +
|
||||
TPointD(-0.5, -0.5),
|
||||
getPixelSize() * getPixelSize(), modeValue);
|
||||
/*-- 何かStyleが拾えて、Transparentでない場合 --*/
|
||||
if (superPicked_StyleId > 0) {
|
||||
/*-- Levelの移動 --*/
|
||||
getApplication()->getCurrentLevel()->setLevel(picked_level);
|
||||
/*-- Columnの移動 --*/
|
||||
getApplication()->getCurrentColumn()->setColumnIndex(
|
||||
superPickedColumnId);
|
||||
/*-- 選択の解除 --*/
|
||||
if (getApplication()->getCurrentSelection()->getSelection())
|
||||
getApplication()
|
||||
->getCurrentSelection()
|
||||
->getSelection()
|
||||
->selectNone();
|
||||
/*-- StyleIdの移動 --*/
|
||||
getApplication()->setCurrentLevelStyleIndex(superPicked_StyleId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-- MultiLayerStylePicker ここまで --*/
|
||||
//------------------------------------
|
||||
TImageP image = getImage(false);
|
||||
TToonzImageP ti = image;
|
||||
TVectorImageP vi = image;
|
||||
TXshSimpleLevel *level =
|
||||
getApplication()->getCurrentLevel()->getSimpleLevel();
|
||||
if ((!ti && !vi) || !level) return;
|
||||
|
||||
/*-- 画面外をpickしても拾えないようにする --*/
|
||||
if (!m_viewer->getGeometry().contains(pos)) return;
|
||||
|
||||
int subsampling = level->getImageSubsampling(getCurrentFid());
|
||||
StylePicker picker(image);
|
||||
int styleId = picker.pickStyleId(
|
||||
TScale(1.0 / subsampling) * pos + TPointD(-0.5, -0.5),
|
||||
getPixelSize() * getPixelSize(), modeValue);
|
||||
|
||||
if (styleId < 0) return;
|
||||
|
||||
if (modeValue == 1) // LINES
|
||||
{
|
||||
/*-- pickLineモードのとき、取得Styleが0の場合はカレントStyleを変えない。
|
||||
* --*/
|
||||
if (styleId == 0) return;
|
||||
/*--
|
||||
* pickLineモードのとき、PurePaintの部分をクリックしてもカレントStyleを変えない
|
||||
* --*/
|
||||
if (ti &&
|
||||
picker.pickTone(TScale(1.0 / subsampling) * pos +
|
||||
TPointD(-0.5, -0.5)) == 255)
|
||||
return;
|
||||
}
|
||||
|
||||
/*--- Styleを選択している場合は選択を解除する ---*/
|
||||
TSelection *selection =
|
||||
TTool::getApplication()->getCurrentSelection()->getSelection();
|
||||
if (selection) {
|
||||
TStyleSelection *styleSelection =
|
||||
dynamic_cast<TStyleSelection *>(selection);
|
||||
if (styleSelection) styleSelection->selectNone();
|
||||
}
|
||||
|
||||
getApplication()->setCurrentLevelStyleIndex(styleId);
|
||||
}
|
||||
/*-- MultiLayerStylePicker ここまで --*/
|
||||
//------------------------------------
|
||||
TImageP image = getImage(false);
|
||||
TToonzImageP ti = image;
|
||||
TVectorImageP vi = image;
|
||||
TXshSimpleLevel *level =
|
||||
getApplication()->getCurrentLevel()->getSimpleLevel();
|
||||
if ((!ti && !vi) || !level) return;
|
||||
|
||||
void mouseMove(const TPointD &pos, const TMouseEvent &e) override {
|
||||
if (!m_passivePick.getValue()) return;
|
||||
/*--- PassiveにStyleを拾う機能 ---*/
|
||||
PaletteController *controller =
|
||||
TTool::getApplication()->getPaletteController();
|
||||
/*-- 画面外をpickしても拾えないようにする --*/
|
||||
if (!m_viewer->getGeometry().contains(pos)) return;
|
||||
|
||||
TImageP image = getImage(false);
|
||||
TToonzImageP ti = image;
|
||||
TVectorImageP vi = image;
|
||||
TXshSimpleLevel *level =
|
||||
getApplication()->getCurrentLevel()->getSimpleLevel();
|
||||
if ((!ti && !vi) || !level || !m_viewer->getGeometry().contains(pos)) {
|
||||
controller->notifyStylePassivePicked(-1, -1, -1);
|
||||
int subsampling = level->getImageSubsampling(getCurrentFid());
|
||||
StylePicker picker(image);
|
||||
int styleId =
|
||||
picker.pickStyleId(TScale(1.0 / subsampling) * pos + TPointD(-0.5, -0.5),
|
||||
getPixelSize() * getPixelSize(), modeValue);
|
||||
|
||||
if (styleId < 0) return;
|
||||
|
||||
if (modeValue == 1) // LINES
|
||||
{
|
||||
/*-- pickLineモードのとき、取得Styleが0の場合はカレントStyleを変えない。
|
||||
* --*/
|
||||
if (styleId == 0) return;
|
||||
/*--
|
||||
* pickLineモードのとき、PurePaintの部分をクリックしてもカレントStyleを変えない
|
||||
* --*/
|
||||
if (ti &&
|
||||
picker.pickTone(TScale(1.0 / subsampling) * pos +
|
||||
TPointD(-0.5, -0.5)) == 255)
|
||||
return;
|
||||
}
|
||||
|
||||
int subsampling = level->getImageSubsampling(getCurrentFid());
|
||||
StylePicker picker(image);
|
||||
TPointD pickPos(TScale(1.0 / subsampling) * pos + TPointD(-0.5, -0.5));
|
||||
int inkStyleId =
|
||||
picker.pickStyleId(pickPos, getPixelSize() * getPixelSize(), 1);
|
||||
int paintStyleId =
|
||||
picker.pickStyleId(pickPos, getPixelSize() * getPixelSize(), 0);
|
||||
int tone = picker.pickTone(pickPos);
|
||||
controller->notifyStylePassivePicked(inkStyleId, paintStyleId, tone);
|
||||
}
|
||||
|
||||
void onActivate() override {}
|
||||
|
||||
int getCursorId() const override {
|
||||
bool isBlackBG = ToonzCheck::instance()->getChecks() & ToonzCheck::eBlackBg;
|
||||
|
||||
if (m_colorType.getValue() == LINES)
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhiteLine
|
||||
: ToolCursor::PickerCursorLine;
|
||||
else if (m_colorType.getValue() == AREAS)
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhiteArea
|
||||
: ToolCursor::PickerCursorArea;
|
||||
else // line&areas
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhite
|
||||
: ToolCursor::PickerCursor;
|
||||
/*--- Styleを選択している場合は選択を解除する ---*/
|
||||
TSelection *selection =
|
||||
TTool::getApplication()->getCurrentSelection()->getSelection();
|
||||
if (selection) {
|
||||
TStyleSelection *styleSelection =
|
||||
dynamic_cast<TStyleSelection *>(selection);
|
||||
if (styleSelection) styleSelection->selectNone();
|
||||
}
|
||||
|
||||
} stylePickerTool;
|
||||
getApplication()->setCurrentLevelStyleIndex(styleId);
|
||||
}
|
||||
|
||||
void StylePickerTool::mouseMove(const TPointD &pos, const TMouseEvent &e) {
|
||||
if (!m_passivePick.getValue()) return;
|
||||
/*--- PassiveにStyleを拾う機能 ---*/
|
||||
PaletteController *controller =
|
||||
TTool::getApplication()->getPaletteController();
|
||||
|
||||
TImageP image = getImage(false);
|
||||
TToonzImageP ti = image;
|
||||
TVectorImageP vi = image;
|
||||
TXshSimpleLevel *level =
|
||||
getApplication()->getCurrentLevel()->getSimpleLevel();
|
||||
if ((!ti && !vi) || !level || !m_viewer->getGeometry().contains(pos)) {
|
||||
controller->notifyStylePassivePicked(-1, -1, -1);
|
||||
return;
|
||||
}
|
||||
|
||||
int subsampling = level->getImageSubsampling(getCurrentFid());
|
||||
StylePicker picker(image);
|
||||
TPointD pickPos(TScale(1.0 / subsampling) * pos + TPointD(-0.5, -0.5));
|
||||
int inkStyleId =
|
||||
picker.pickStyleId(pickPos, getPixelSize() * getPixelSize(), 1);
|
||||
int paintStyleId =
|
||||
picker.pickStyleId(pickPos, getPixelSize() * getPixelSize(), 0);
|
||||
int tone = picker.pickTone(pickPos);
|
||||
controller->notifyStylePassivePicked(inkStyleId, paintStyleId, tone);
|
||||
}
|
||||
|
||||
int StylePickerTool::getCursorId() const {
|
||||
bool isBlackBG = ToonzCheck::instance()->getChecks() & ToonzCheck::eBlackBg;
|
||||
|
||||
/* in case the "organize palette" option is active */
|
||||
if (m_organizePalette.getValue())
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhiteOrganize
|
||||
: ToolCursor::PickerCursorOrganize;
|
||||
|
||||
if (m_colorType.getValue() == LINES)
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhiteLine
|
||||
: ToolCursor::PickerCursorLine;
|
||||
else if (m_colorType.getValue() == AREAS)
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhiteArea
|
||||
: ToolCursor::PickerCursorArea;
|
||||
else // line&areas
|
||||
return (isBlackBG) ? ToolCursor::PickerCursorWhite
|
||||
: ToolCursor::PickerCursor;
|
||||
}
|
||||
|
||||
bool StylePickerTool::onPropertyChanged(std::string propertyName) {
|
||||
if (propertyName == m_organizePalette.getName()) {
|
||||
if (m_organizePalette.getValue()) {
|
||||
if (!startOrganizePalette()) {
|
||||
m_organizePalette.setValue(false);
|
||||
getApplication()->getCurrentTool()->notifyToolChanged();
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
std::cout << "End Organize Palette" << std::endl;
|
||||
m_paletteToBeOrganized = NULL;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StylePickerTool::startOrganizePalette() {
|
||||
/* Check if the organizing operation is available */
|
||||
TXshLevel *level = getApplication()->getCurrentLevel()->getLevel();
|
||||
if (!level) {
|
||||
DVGui::error(tr("No current level."));
|
||||
return false;
|
||||
}
|
||||
if (level->getType() != PLI_XSHLEVEL && level->getType() != TZP_XSHLEVEL &&
|
||||
level->getType() != PLT_XSHLEVEL) {
|
||||
DVGui::error(tr("Current level has no available palette."));
|
||||
return false;
|
||||
}
|
||||
/* palette should have more than one page to organize */
|
||||
TPalette *pal = NULL;
|
||||
if (level->getType() == PLT_XSHLEVEL)
|
||||
pal = level->getPaletteLevel()->getPalette();
|
||||
else
|
||||
pal = level->getSimpleLevel()->getPalette();
|
||||
if (!pal || pal->getPageCount() < 2) {
|
||||
DVGui::error(
|
||||
tr("Palette must have more than one palette to be organized."));
|
||||
return false;
|
||||
}
|
||||
|
||||
m_paletteToBeOrganized = pal;
|
||||
|
||||
std::cout << "Start Organize Palette" << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
If the working palette is changed, then deactivate the "organize palette"
|
||||
toggle.
|
||||
*/
|
||||
void StylePickerTool::onImageChanged() {
|
||||
std::cout << "StylePickerTool::onImageChanged" << std::endl;
|
||||
if (!m_organizePalette.getValue() || !m_paletteToBeOrganized) return;
|
||||
|
||||
TXshLevel *level = getApplication()->getCurrentLevel()->getLevel();
|
||||
if (!level) {
|
||||
m_organizePalette.setValue(false);
|
||||
getApplication()->getCurrentTool()->notifyToolChanged();
|
||||
return;
|
||||
}
|
||||
TPalette *pal = NULL;
|
||||
if (level->getType() == PLT_XSHLEVEL)
|
||||
pal = level->getPaletteLevel()->getPalette();
|
||||
else if (level->getSimpleLevel()) {
|
||||
pal = level->getSimpleLevel()->getPalette();
|
||||
}
|
||||
if (!pal || pal != m_paletteToBeOrganized) {
|
||||
m_organizePalette.setValue(false);
|
||||
getApplication()->getCurrentTool()->notifyToolChanged();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
StylePickerTool stylePickerTool;
|
||||
|
|
54
toonz/sources/tnztools/stylepickertool.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef STYLEPICKERTOOL_H
|
||||
#define STYLEPICKERTOOL_H
|
||||
|
||||
#include "tools/tool.h"
|
||||
#include "tproperty.h"
|
||||
#include <QObject>
|
||||
|
||||
class StylePickerTool final : public TTool, public QObject {
|
||||
int m_oldStyleId, m_currentStyleId;
|
||||
|
||||
TEnumProperty m_colorType;
|
||||
TPropertyGroup m_prop;
|
||||
TBoolProperty m_passivePick;
|
||||
|
||||
TBoolProperty m_organizePalette;
|
||||
TPalette *m_paletteToBeOrganized;
|
||||
|
||||
bool startOrganizePalette();
|
||||
|
||||
public:
|
||||
TPropertyGroup *getProperties(int targetType) override { return &m_prop; }
|
||||
|
||||
StylePickerTool();
|
||||
|
||||
ToolType getToolType() const override { return TTool::LevelReadTool; }
|
||||
|
||||
void draw() override {}
|
||||
|
||||
void leftButtonDown(const TPointD &pos, const TMouseEvent &e) override;
|
||||
|
||||
void leftButtonDrag(const TPointD &pos, const TMouseEvent &e) override;
|
||||
|
||||
void pick(const TPointD &pos, const TMouseEvent &e);
|
||||
|
||||
void mouseMove(const TPointD &pos, const TMouseEvent &e) override;
|
||||
|
||||
int getCursorId() const override;
|
||||
|
||||
bool onPropertyChanged(std::string propertyName);
|
||||
|
||||
bool isOrganizePaletteActive() { return m_organizePalette.getValue(); }
|
||||
|
||||
/*
|
||||
This function is called when either frame/column/level/scene is switched or
|
||||
either scene/level/object is changed (see tapp.cpp).
|
||||
If the working palette is changed, then deactivate the "organize palette"
|
||||
toggle.
|
||||
*/
|
||||
void onImageChanged() override;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -50,6 +50,8 @@
|
|||
<file>Resources/picker_style_white_line.png</file>
|
||||
<file>Resources/picker_style_white_area.png</file>
|
||||
<file>Resources/picker_style_white.png</file>
|
||||
<file>Resources/picker_style_organize.png</file>
|
||||
<file>Resources/picker_style_white_organize.png</file>
|
||||
<file>Resources/picker_rgb.png</file>
|
||||
<file>Resources/picker_rgb_white.png</file>
|
||||
<file>Resources/fill_f.png</file>
|
||||
|
|
|
@ -2182,6 +2182,17 @@ StylePickerToolOptionsBox::StylePickerToolOptionsBox(
|
|||
m_layout->addWidget(m_currentStyleLabel, 0);
|
||||
m_layout->addStretch(1);
|
||||
|
||||
// retrieve the "organize palette" checkbox from the layout and insert
|
||||
// into rightmost of the tool option bar
|
||||
ToolOptionCheckbox *organizePaletteCB =
|
||||
dynamic_cast<ToolOptionCheckbox *>(m_controls.value("Organize Palette"));
|
||||
m_layout->removeWidget(organizePaletteCB);
|
||||
m_layout->addWidget(new ToolOptionsBarSeparator(this), 0);
|
||||
m_layout->addWidget(organizePaletteCB);
|
||||
organizePaletteCB->setToolTip(
|
||||
tr("With this option being activated, the picked style will be\nmoved to "
|
||||
"the end of the first page of the palette."));
|
||||
|
||||
if (m_realTimePickMode) {
|
||||
connect(m_realTimePickMode, SIGNAL(toggled(bool)), m_currentStyleLabel,
|
||||
SLOT(setVisible(bool)));
|
||||
|
@ -2340,6 +2351,7 @@ un po' di codice... */
|
|||
|
||||
m_panels[tool] = panel;
|
||||
layout()->addWidget(panel);
|
||||
emit newPanelCreated();
|
||||
} else {
|
||||
// il panel c'e' gia'.
|
||||
panel = it->second;
|
||||
|
|
|
@ -100,6 +100,7 @@ set(MOC_HEADERS
|
|||
selectionutils.h
|
||||
shifttracetool.h
|
||||
shortcutpopup.h
|
||||
startuppopup.h
|
||||
subcameramanager.h
|
||||
subscenecommand.h
|
||||
svncleanupdialog.h
|
||||
|
@ -140,6 +141,8 @@ set(MOC_HEADERS
|
|||
historypane.h
|
||||
cleanupsettingspane.h
|
||||
penciltestpopup.h
|
||||
locatorpopup.h
|
||||
styleshortcutswitchablepanel.h
|
||||
# Tracker file
|
||||
dummyprocessor.h
|
||||
metnum.h
|
||||
|
@ -232,6 +235,7 @@ set(SOURCES
|
|||
scriptconsolepanel.cpp
|
||||
shifttracetool.cpp
|
||||
shortcutpopup.cpp
|
||||
startuppopup.cpp
|
||||
subcameramanager.cpp
|
||||
timestretchpopup.cpp
|
||||
trackerpopup.cpp
|
||||
|
@ -298,6 +302,8 @@ set(SOURCES
|
|||
historypane.cpp
|
||||
cleanupsettingspane.cpp
|
||||
penciltestpopup.cpp
|
||||
locatorpopup.cpp
|
||||
styleshortcutswitchablepanel.cpp
|
||||
# Tracker file
|
||||
dummyprocessor.cpp
|
||||
metnum.cpp
|
||||
|
@ -378,7 +384,7 @@ if(WIN32)
|
|||
target_link_libraries(OpenToonz_${VERSION}
|
||||
Qt5::WinMain Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Svg Qt5::Xml
|
||||
Qt5::Script Qt5::Widgets Qt5::PrintSupport Qt5::Multimedia
|
||||
${GL_LIB} ${GLUT_LIB}
|
||||
${GL_LIB} ${GLUT_LIB} strmiids
|
||||
tnzcore tnzbase toonzlib colorfx tnzext image sound toonzqt tnztools tnzstdfx tfarm
|
||||
)
|
||||
elseif(APPLE)
|
||||
|
@ -430,10 +436,10 @@ if(APPLE)
|
|||
get_target_property(loc OpenToonz_${VERSION} MACOSX_BUNDLE_NAME)
|
||||
message(" ==> App Bundle: " ${loc})
|
||||
message(" ==> Mach-o: " ${bin})
|
||||
foreach (lib ${EXTRA_LIBS})
|
||||
foreach(lib ${EXTRA_LIBS})
|
||||
message(" copy:" ${lib} "==>" ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/MacOS/)
|
||||
add_custom_command(TARGET OpenToonz_${VERSION} POST_BUILD COMMAND cp ${lib} ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz_${VERSION}.app/Contents/MacOS/)
|
||||
endforeach ()
|
||||
endforeach()
|
||||
|
||||
add_custom_command(TARGET OpenToonz_${VERSION}
|
||||
POST_BUILD COMMAND
|
||||
|
|
BIN
toonz/sources/toonz/Resources/locator.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
toonz/sources/toonz/Resources/locator_click.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
toonz/sources/toonz/Resources/locator_over.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
toonz/sources/toonz/Resources/startup.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
|
@ -1292,6 +1292,7 @@ TXshSimpleLevel *CloneLevelUndo::cloneLevel(
|
|||
assert(palette);
|
||||
|
||||
dstSl->setPalette(palette->clone());
|
||||
dstSl->getPalette()->setDirtyFlag(true);
|
||||
}
|
||||
|
||||
// The level clone shell was created. Now, clone the associated frames found
|
||||
|
@ -1306,6 +1307,8 @@ TXshSimpleLevel *CloneLevelUndo::cloneLevel(
|
|||
dstSl->setFrame(*ft, img->cloneImage());
|
||||
}
|
||||
|
||||
dstSl->setDirtyFlag(true);
|
||||
|
||||
return dstSl;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QHBoxLayout>
|
||||
#include <QGroupBox>
|
||||
|
||||
#include "cleanupsettingspane.h"
|
||||
|
||||
|
@ -80,6 +81,10 @@ void CleanupSaveInField::browseDirectory() {
|
|||
|
||||
CleanupSettingsPane::CleanupSettingsPane(QWidget *parent)
|
||||
: QFrame(parent), m_attached(false) {
|
||||
// Autocenter
|
||||
m_autocenterBox = new QGroupBox(tr("Autocenter"), this);
|
||||
m_pegHolesOm = new QComboBox(this);
|
||||
m_fieldGuideOm = new QComboBox(this);
|
||||
// Rotate&Flip
|
||||
QFrame *rotFlipFrame = new QFrame(this);
|
||||
m_rotateOm = new QComboBox(this);
|
||||
|
@ -103,6 +108,19 @@ CleanupSettingsPane::CleanupSettingsPane(QWidget *parent)
|
|||
QPushButton *loadBtn = new QPushButton(tr("Load"));
|
||||
QPushButton *resetBtn = new QPushButton(tr("Reset"));
|
||||
|
||||
// Autocenter
|
||||
m_autocenterBox->setCheckable(true);
|
||||
QStringList pegbarHoles;
|
||||
pegbarHoles << "Bottom"
|
||||
<< "Top"
|
||||
<< "Left"
|
||||
<< "Right";
|
||||
m_pegHolesOm->addItems(pegbarHoles);
|
||||
std::vector<std::string> fdgNames;
|
||||
CleanupParameters::getFdgNames(fdgNames);
|
||||
for (int i = 0; i < (int)fdgNames.size(); i++)
|
||||
m_fieldGuideOm->addItem(QString(fdgNames[i].c_str()));
|
||||
|
||||
// Rotate&Flip
|
||||
rotFlipFrame->setObjectName("CleanupSettingsFrame");
|
||||
QStringList rotate;
|
||||
|
@ -137,6 +155,23 @@ CleanupSettingsPane::CleanupSettingsPane(QWidget *parent)
|
|||
mainLay->setSpacing(2);
|
||||
mainLay->setMargin(5);
|
||||
{
|
||||
// Autocenter
|
||||
QGridLayout *autocenterLay = new QGridLayout();
|
||||
autocenterLay->setMargin(5);
|
||||
autocenterLay->setSpacing(3);
|
||||
{
|
||||
autocenterLay->addWidget(new QLabel(tr("Pegbar Holes")), 0, 0,
|
||||
Qt::AlignRight | Qt::AlignVCenter);
|
||||
autocenterLay->addWidget(m_pegHolesOm, 0, 1);
|
||||
autocenterLay->addWidget(new QLabel(tr("Field Guide")), 1, 0,
|
||||
Qt::AlignRight | Qt::AlignVCenter);
|
||||
autocenterLay->addWidget(m_fieldGuideOm, 1, 1);
|
||||
}
|
||||
autocenterLay->setColumnStretch(0, 0);
|
||||
autocenterLay->setColumnStretch(1, 1);
|
||||
m_autocenterBox->setLayout(autocenterLay);
|
||||
mainLay->addWidget(m_autocenterBox, 0);
|
||||
|
||||
// Rotate&Flip
|
||||
QGridLayout *rotFlipLay = new QGridLayout();
|
||||
rotFlipLay->setMargin(5);
|
||||
|
@ -226,7 +261,14 @@ CleanupSettingsPane::CleanupSettingsPane(QWidget *parent)
|
|||
|
||||
//-----signal-slot connections
|
||||
bool ret = true;
|
||||
ret = ret && connect(m_rotateOm, SIGNAL(activated(int)),
|
||||
ret = ret && connect(m_autocenterBox, SIGNAL(toggled(bool)),
|
||||
SLOT(onGenericSettingsChange()));
|
||||
ret = ret && connect(m_pegHolesOm, SIGNAL(activated(int)),
|
||||
SLOT(onGenericSettingsChange()));
|
||||
ret = ret && connect(m_fieldGuideOm, SIGNAL(activated(int)),
|
||||
SLOT(onGenericSettingsChange()));
|
||||
|
||||
ret = ret && connect(m_rotateOm, SIGNAL(activated(int)),
|
||||
SLOT(onGenericSettingsChange()));
|
||||
ret = ret && connect(m_flipX, SIGNAL(stateChanged(int)),
|
||||
SLOT(onGenericSettingsChange()));
|
||||
|
@ -336,6 +378,15 @@ void CleanupSettingsPane::updateGui(bool needsPostProcess) {
|
|||
|
||||
void CleanupSettingsPane::updateGui(CleanupParameters *params,
|
||||
CleanupParameters *oldParams) {
|
||||
m_autocenterBox->setChecked(params->m_autocenterType ==
|
||||
CleanupTypes::AUTOCENTER_FDG);
|
||||
m_pegHolesOm->setCurrentIndex(params->m_pegSide - 1);
|
||||
|
||||
QString fieldName = QString::fromStdString(params->getFdgName());
|
||||
int index = (fieldName.isEmpty()) ? 0 : m_fieldGuideOm->findText(fieldName);
|
||||
assert(index != -1);
|
||||
m_fieldGuideOm->setCurrentIndex(index);
|
||||
|
||||
m_rotateOm->setCurrentIndex(params->m_rotate / 90);
|
||||
m_flipX->setChecked(params->m_flipx);
|
||||
m_flipY->setChecked(params->m_flipy);
|
||||
|
@ -462,6 +513,13 @@ void CleanupSettingsPane::onGenericSettingsChange() {
|
|||
CleanupSettingsModel *model = CleanupSettingsModel::instance();
|
||||
CleanupParameters *params = model->getCurrentParameters();
|
||||
|
||||
params->m_autocenterType = m_autocenterBox->isChecked()
|
||||
? CleanupTypes::AUTOCENTER_FDG
|
||||
: CleanupTypes::AUTOCENTER_NONE;
|
||||
params->m_pegSide =
|
||||
(CleanupTypes::PEGS_SIDE)(m_pegHolesOm->currentIndex() + 1);
|
||||
params->setFdgByName(m_fieldGuideOm->currentText().toStdString());
|
||||
|
||||
params->m_rotate = m_rotateOm->currentIndex() * 90;
|
||||
params->m_flipx = m_flipX->isChecked();
|
||||
params->m_flipy = m_flipY->isChecked();
|
||||
|
|
|
@ -18,6 +18,7 @@ class QComboBox;
|
|||
class QLabel;
|
||||
class QCheckBox;
|
||||
class CleanupPaletteViewer;
|
||||
class QGroupBox;
|
||||
|
||||
namespace DVGui {
|
||||
|
||||
|
@ -47,6 +48,9 @@ public:
|
|||
CleanupCameraSettingsWidget *m_cameraWidget;
|
||||
|
||||
private:
|
||||
//----Autocenter
|
||||
QGroupBox *m_autocenterBox;
|
||||
QComboBox *m_pegHolesOm, *m_fieldGuideOm;
|
||||
//----Rotate & Flip
|
||||
QComboBox *m_rotateOm;
|
||||
QCheckBox *m_flipX;
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "tools/toolcommandids.h"
|
||||
#include "tools/tool.h"
|
||||
#include "tools/toolhandle.h"
|
||||
#include "../tnztools/stylepickertool.h"
|
||||
|
||||
// TnzQt includes
|
||||
#include "toonzqt/menubarcommand.h"
|
||||
|
@ -84,7 +85,7 @@ ColorModelViewer::ColorModelViewer(QWidget *parent)
|
|||
FlipConsole::eCompare | FlipConsole::eCustomize |
|
||||
FlipConsole::eSave | FlipConsole::eFilledRaster |
|
||||
FlipConsole::eDefineLoadBox | FlipConsole::eUseLoadBox |
|
||||
FlipConsole::eDefineSubCamera)),
|
||||
FlipConsole::eDefineSubCamera | FlipConsole::eLocator)),
|
||||
eDontKeepFilesOpened, true)
|
||||
, m_mode(0)
|
||||
, m_currentRefImgPath(TFilePath()) {
|
||||
|
@ -222,11 +223,28 @@ void ColorModelViewer::contextMenuEvent(QContextMenuEvent *event) {
|
|||
connect(loadCurrentFrame, SIGNAL(triggered()), SLOT(loadCurrentFrame()));
|
||||
menu.addAction(loadCurrentFrame);
|
||||
|
||||
if (!m_imageViewer->getImage()) {
|
||||
menu.exec(event->globalPos());
|
||||
return;
|
||||
}
|
||||
|
||||
QAction *removeColorModel =
|
||||
new QAction(QString(tr("Remove Color Model")), this);
|
||||
connect(removeColorModel, SIGNAL(triggered()), SLOT(removeColorModel()));
|
||||
menu.addAction(removeColorModel);
|
||||
|
||||
/* If there is at least one style with "picked pos" parameter, then enable
|
||||
* repick command */
|
||||
TRasterImageP ri = m_imageViewer->getImage();
|
||||
if (ri && currentPalette->hasPickedPosStyle()) {
|
||||
menu.addSeparator();
|
||||
QAction *repickFromColorModelAct = new QAction(
|
||||
QString(tr("Update Colors by Using Picked Positions")), this);
|
||||
connect(repickFromColorModelAct, SIGNAL(triggered()),
|
||||
SLOT(repickFromColorModel()));
|
||||
menu.addAction(repickFromColorModelAct);
|
||||
}
|
||||
|
||||
menu.addSeparator();
|
||||
|
||||
QString shortcut = QString::fromStdString(
|
||||
|
@ -306,6 +324,19 @@ void ColorModelViewer::pick(const QPoint &p) {
|
|||
if (styleSelection) styleSelection->selectNone();
|
||||
}
|
||||
|
||||
/*
|
||||
if the Style Picker tool is current and "organize palette" is activated,
|
||||
then move the picked style to the first page of the palette.
|
||||
*/
|
||||
TTool *tool = TApp::instance()->getCurrentTool()->getTool();
|
||||
if (tool->getName() == "T_StylePicker") {
|
||||
StylePickerTool *spTool = dynamic_cast<StylePickerTool *>(tool);
|
||||
if (spTool && spTool->isOrganizePaletteActive()) {
|
||||
TPoint point = picker.getRasterPoint(pos);
|
||||
PaletteCmd::organizePaletteStyle(ph, styleIndex, point);
|
||||
}
|
||||
}
|
||||
|
||||
ph->setStyleIndex(styleIndex);
|
||||
}
|
||||
|
||||
|
@ -356,8 +387,16 @@ void ColorModelViewer::showEvent(QShowEvent *e) {
|
|||
//-----------------------------------------------------------------------------
|
||||
/*- ツールのTypeに合わせてPickのタイプも変え、カーソルも切り替える -*/
|
||||
void ColorModelViewer::changePickType() {
|
||||
TPropertyGroup *propGroup =
|
||||
TApp::instance()->getCurrentTool()->getTool()->getProperties(0);
|
||||
TTool *tool = TApp::instance()->getCurrentTool()->getTool();
|
||||
if (tool->getName() == T_StylePicker) {
|
||||
StylePickerTool *stylePickerTool = dynamic_cast<StylePickerTool *>(tool);
|
||||
if (stylePickerTool->isOrganizePaletteActive()) {
|
||||
setToolCursor(m_imageViewer, ToolCursor::PickerCursorOrganize);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
TPropertyGroup *propGroup = tool->getProperties(0);
|
||||
/*- Propertyの無いツールの場合 -*/
|
||||
if (!propGroup) {
|
||||
m_mode = 2;
|
||||
|
@ -573,6 +612,17 @@ void ColorModelViewer::onRefImageNotFound() {
|
|||
"level."));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void ColorModelViewer::repickFromColorModel() {
|
||||
TImageP img = m_imageViewer->getImage();
|
||||
if (!img) return;
|
||||
TPaletteHandle *ph =
|
||||
TApp::instance()->getPaletteController()->getCurrentLevelPalette();
|
||||
|
||||
PaletteCmd::pickColorByUsingPickedPosition(ph, img);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
OpenFloatingPanel openColorModelCommand(MI_OpenColorModel, "ColorModel",
|
||||
|
|
|
@ -48,6 +48,7 @@ protected:
|
|||
* UseCurrentFrameのLevelに移動してきたときに、改めてCurrentFrameを格納しなおす
|
||||
* -*/
|
||||
void reloadCurrentFrame();
|
||||
|
||||
protected slots:
|
||||
void showCurrentImage();
|
||||
|
||||
|
@ -62,6 +63,8 @@ protected slots:
|
|||
* -*/
|
||||
void changePickType();
|
||||
|
||||
void repickFromColorModel();
|
||||
|
||||
signals:
|
||||
void refImageNotFound();
|
||||
};
|
||||
|
|
|
@ -86,7 +86,7 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WindowFlags flags)
|
|||
#else
|
||||
ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
||||
#endif
|
||||
: TPanel(parent) {
|
||||
: StyleShortcutSwitchablePanel(parent) {
|
||||
TApp *app = TApp::instance();
|
||||
|
||||
QFrame *hbox = new QFrame(this);
|
||||
|
@ -103,6 +103,7 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
|||
ImageUtils::FullScreenWidget *fsWidget =
|
||||
new ImageUtils::FullScreenWidget(this);
|
||||
fsWidget->setWidget(m_sceneViewer = new SceneViewer(fsWidget));
|
||||
m_sceneViewer->setIsStyleShortcutSwitchable();
|
||||
|
||||
#if defined(Q_OS_WIN) && (QT_VERSION >= 0x050500) && (QT_VERSION < 0x050600)
|
||||
// Workaround for QTBUG-48288
|
||||
|
@ -189,6 +190,9 @@ ComboViewerPanel::ComboViewerPanel(QWidget *parent, Qt::WFlags flags)
|
|||
SLOT(update()));
|
||||
ret = ret && connect(app->getCurrentScene(), SIGNAL(sceneSwitched()), this,
|
||||
SLOT(onSceneSwitched()));
|
||||
ret = ret && connect(m_toolOptions, SIGNAL(newPanelCreated()), this,
|
||||
SLOT(updateTabFocus()));
|
||||
|
||||
assert(ret);
|
||||
|
||||
// note: initializeTitleBar() refers to m_sceneViewer
|
||||
|
@ -336,7 +340,8 @@ ComboViewerPanel::~ComboViewerPanel() {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void ComboViewerPanel::showEvent(QShowEvent *) {
|
||||
void ComboViewerPanel::showEvent(QShowEvent *event) {
|
||||
StyleShortcutSwitchablePanel::showEvent(event);
|
||||
TApp *app = TApp::instance();
|
||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
||||
TSceneHandle *sceneHandle = app->getCurrentScene();
|
||||
|
@ -388,9 +393,6 @@ void ComboViewerPanel::showEvent(QShowEvent *) {
|
|||
|
||||
ret = ret && connect(app->getCurrentTool(), SIGNAL(toolSwitched()),
|
||||
m_sceneViewer, SLOT(onToolSwitched()));
|
||||
ret = ret && connect(sceneHandle, SIGNAL(preferenceChanged()), m_flipConsole,
|
||||
SLOT(onPreferenceChanged()));
|
||||
m_flipConsole->onPreferenceChanged();
|
||||
|
||||
assert(ret);
|
||||
|
||||
|
@ -403,7 +405,8 @@ void ComboViewerPanel::showEvent(QShowEvent *) {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void ComboViewerPanel::hideEvent(QHideEvent *) {
|
||||
void ComboViewerPanel::hideEvent(QHideEvent *event) {
|
||||
StyleShortcutSwitchablePanel::hideEvent(event);
|
||||
TApp *app = TApp::instance();
|
||||
disconnect(app->getCurrentScene());
|
||||
disconnect(app->getCurrentLevel());
|
||||
|
@ -781,3 +784,12 @@ bool ComboViewerPanel::isFrameAlreadyCached(int frame) {
|
|||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void ComboViewerPanel::onPreferenceChanged(const QString &prefName) {
|
||||
// if no name specified (on showEvent), then process all updates
|
||||
if (prefName == "BlankCount" || prefName == "BlankColor" ||
|
||||
prefName.isEmpty())
|
||||
m_flipConsole->onPreferenceChanged();
|
||||
|
||||
StyleShortcutSwitchablePanel::onPreferenceChanged(prefName);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#ifndef COMBOVIEWER_PANE_INCLUDED
|
||||
#define COMBOVIEWER_PANE_INCLUDED
|
||||
|
||||
#include "pane.h"
|
||||
#include "styleshortcutswitchablepanel.h"
|
||||
#include "sceneviewer.h"
|
||||
#include "toonzqt/intfield.h"
|
||||
#include "toonzqt/keyframenavigator.h"
|
||||
|
@ -37,7 +37,8 @@ enum CV_Parts {
|
|||
};
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class ComboViewerPanel final : public TPanel, public FlipConsoleOwner {
|
||||
class ComboViewerPanel final : public StyleShortcutSwitchablePanel,
|
||||
public FlipConsoleOwner {
|
||||
Q_OBJECT
|
||||
|
||||
SceneViewer *m_sceneViewer;
|
||||
|
@ -118,6 +119,8 @@ protected slots:
|
|||
void onSceneSwitched();
|
||||
void enableFullPreview(bool enabled);
|
||||
void enableSubCameraPreview(bool enabled);
|
||||
|
||||
void onPreferenceChanged(const QString &prefName) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -55,6 +55,8 @@ TEnv::IntVar ConvertPopupRemoveDot("ConvertPopupRemoveDot", 1);
|
|||
TEnv::IntVar ConvertPopupSaveToNopaint("ConvertPopupSaveToNopaint", 1);
|
||||
TEnv::IntVar ConvertPopupAppendDefaultPalette(
|
||||
"ConvertPopupAppendDefaultPalette", 0);
|
||||
TEnv::IntVar ConvertPopupRemoveUnusedStyles("ConvertPopupRemoveUnusedStyles",
|
||||
0);
|
||||
|
||||
//=============================================================================
|
||||
// convertPopup
|
||||
|
@ -200,7 +202,8 @@ void ConvertPopup::Converter::convertLevel(
|
|||
// no AA source (retas)
|
||||
TPaletteP palette = popup->readUserProvidedPalette();
|
||||
ImageUtils::convertNaa2Tlv(sourceFileFullPath, dstFileFullPath, from, to,
|
||||
m_parent->m_notifier, palette.getPointer());
|
||||
m_parent->m_notifier, palette.getPointer(),
|
||||
m_parent->m_removeUnusedStyles->isChecked());
|
||||
} else {
|
||||
convertLevelWithConvert2Tlv(sourceFileFullPath);
|
||||
}
|
||||
|
@ -441,6 +444,7 @@ ConvertPopup::ConvertPopup(bool specifyInput)
|
|||
m_removeDotBeforeFrameNumber->setChecked(ConvertPopupRemoveDot != 0);
|
||||
m_saveBackupToNopaint->setChecked(ConvertPopupSaveToNopaint != 0);
|
||||
m_appendDefaultPalette->setChecked(ConvertPopupAppendDefaultPalette != 0);
|
||||
m_removeUnusedStyles->setChecked(ConvertPopupRemoveUnusedStyles != 0);
|
||||
|
||||
//--- signal-slot connections
|
||||
qRegisterMetaType<TFilePath>("TFilePath");
|
||||
|
@ -470,6 +474,9 @@ ConvertPopup::ConvertPopup(bool specifyInput)
|
|||
ret = ret && connect(m_convertFileFld, SIGNAL(pathChanged()), this,
|
||||
SLOT(onFileInChanged()));
|
||||
|
||||
// update unable/enable of checkboxes
|
||||
onTlvModeSelected(m_tlvMode->currentText());
|
||||
|
||||
assert(ret);
|
||||
}
|
||||
|
||||
|
@ -522,7 +529,7 @@ QFrame *ConvertPopup::createTlvSettings() {
|
|||
m_tlvMode = new QComboBox();
|
||||
m_unpaintedFolderLabel = new QLabel(tr("Unpainted File Folder:"));
|
||||
m_unpaintedFolder =
|
||||
new DVGui::FileField(0, QString(tr("Same as Painted")), true);
|
||||
new DVGui::FileField(0, QString(tr("Same as Painted")), true, true);
|
||||
m_suffixLabel = new QLabel(tr(" Unpainted File Suffix:"));
|
||||
m_unpaintedSuffix = new DVGui::LineEdit("_np");
|
||||
m_applyAutoclose = new QCheckBox(tr("Apply Autoclose"));
|
||||
|
@ -531,8 +538,12 @@ QFrame *ConvertPopup::createTlvSettings() {
|
|||
m_appendDefaultPalette = new QCheckBox(tr("Append Default Palette"));
|
||||
m_antialias = new QComboBox();
|
||||
m_antialiasIntensity = new DVGui::IntLineEdit(0, 50, 0, 100);
|
||||
m_palettePath = new DVGui::FileField(0, QString(CreateNewPalette), true);
|
||||
m_tolerance = new DVGui::IntLineEdit(0, 0, 0, 255);
|
||||
m_palettePath =
|
||||
new DVGui::FileField(0, QString(CreateNewPalette), true, true);
|
||||
m_tolerance = new DVGui::IntLineEdit(0, 0, 0, 255);
|
||||
|
||||
m_removeUnusedStyles =
|
||||
new QCheckBox(tr("Remove Unused Styles from Input Palette"));
|
||||
|
||||
m_unpaintedFolder->setFileMode(QFileDialog::DirectoryOnly);
|
||||
m_unpaintedSuffix->setMaximumWidth(40);
|
||||
|
@ -585,8 +596,9 @@ QFrame *ConvertPopup::createTlvSettings() {
|
|||
Qt::AlignRight | Qt::AlignVCenter);
|
||||
gridLay->addWidget(m_tolerance, 4, 3);
|
||||
|
||||
gridLay->addWidget(m_appendDefaultPalette, 5, 1, 1, 3);
|
||||
gridLay->addWidget(m_saveBackupToNopaint, 6, 1, 1, 3);
|
||||
gridLay->addWidget(m_removeUnusedStyles, 5, 1, 1, 3);
|
||||
gridLay->addWidget(m_appendDefaultPalette, 6, 1, 1, 3);
|
||||
gridLay->addWidget(m_saveBackupToNopaint, 7, 1, 1, 3);
|
||||
}
|
||||
gridLay->setColumnStretch(0, 0);
|
||||
gridLay->setColumnStretch(1, 1);
|
||||
|
@ -597,6 +609,9 @@ QFrame *ConvertPopup::createTlvSettings() {
|
|||
bool ret = true;
|
||||
ret = ret && connect(m_antialias, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(onAntialiasSelected(int)));
|
||||
ret = ret && connect(m_palettePath, SIGNAL(pathChanged()), this,
|
||||
SLOT(onPalettePathChanged()));
|
||||
|
||||
assert(ret);
|
||||
|
||||
frame->setVisible(false);
|
||||
|
@ -652,8 +667,13 @@ void ConvertPopup::onTlvModeSelected(const QString &tlvMode) {
|
|||
m_suffixLabel->setEnabled(usesTwoImages);
|
||||
m_unpaintedSuffix->setEnabled(usesTwoImages);
|
||||
m_antialias->setEnabled(TlvMode_PaintedFromNonAA != tlvMode);
|
||||
m_palettePath->setEnabled(TlvMode_PaintedFromNonAA != tlvMode);
|
||||
// m_palettePath->setEnabled(TlvMode_PaintedFromNonAA != tlvMode);
|
||||
m_tolerance->setEnabled(TlvMode_PaintedFromNonAA != tlvMode);
|
||||
m_appendDefaultPalette->setEnabled(TlvMode_PaintedFromNonAA != tlvMode);
|
||||
|
||||
m_removeUnusedStyles->setEnabled(TlvMode_PaintedFromNonAA == tlvMode &&
|
||||
m_palettePath->getPath() !=
|
||||
CreateNewPalette);
|
||||
|
||||
m_saveBackupToNopaint->setEnabled(TlvMode_Unpainted == tlvMode);
|
||||
}
|
||||
|
@ -1057,6 +1077,7 @@ void ConvertPopup::apply() {
|
|||
ConvertPopupSaveToNopaint = m_saveBackupToNopaint->isChecked() ? 1 : 0;
|
||||
ConvertPopupAppendDefaultPalette =
|
||||
m_appendDefaultPalette->isChecked() ? 1 : 0;
|
||||
ConvertPopupRemoveUnusedStyles = m_removeUnusedStyles->isChecked() ? 1 : 0;
|
||||
|
||||
// parameters are ok: close the dialog first
|
||||
close();
|
||||
|
@ -1174,6 +1195,14 @@ void ConvertPopup::onFormatChanged(const QString &ext) {
|
|||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
void ConvertPopup::onPalettePathChanged() {
|
||||
m_removeUnusedStyles->setEnabled(
|
||||
m_tlvMode->currentText() == TlvMode_PaintedFromNonAA &&
|
||||
m_palettePath->getPath() != CreateNewPalette);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
bool ConvertPopup::isSaveTlvBackupToNopaintActive() {
|
||||
return m_fileFormat->currentText() ==
|
||||
TlvExtension /*-- tlvが選択されている --*/
|
||||
|
|
|
@ -87,6 +87,7 @@ public slots:
|
|||
void onLevelConverted(const TFilePath &fullPath);
|
||||
|
||||
void onFormatChanged(const QString &);
|
||||
void onPalettePathChanged();
|
||||
|
||||
protected:
|
||||
Convert2Tlv *makeTlvConverter(const TFilePath &sourceFilePath);
|
||||
|
@ -104,7 +105,7 @@ private:
|
|||
DVGui::ColorField *m_bgColorField;
|
||||
QFrame *m_tlvFrame;
|
||||
QCheckBox *m_applyAutoclose, *m_removeDotBeforeFrameNumber,
|
||||
*m_saveBackupToNopaint, *m_appendDefaultPalette;
|
||||
*m_saveBackupToNopaint, *m_appendDefaultPalette, *m_removeUnusedStyles;
|
||||
DVGui::CheckBox *m_skip;
|
||||
QComboBox *m_antialias, *m_tlvMode, *m_fileFormat;
|
||||
QLabel *m_bgColorLabel, *m_suffixLabel, *m_unpaintedFolderLabel,
|
||||
|
|
|
@ -148,7 +148,8 @@ QMutex levelFileMutex;
|
|||
|
||||
inline bool isMultipleFrameType(std::string type) {
|
||||
return (type == "tlv" || type == "tzl" || type == "pli" || type == "mov" ||
|
||||
type == "avi" || type == "3gp");
|
||||
type == "avi" || type == "3gp" || type == "gif" || type == "mp4" ||
|
||||
type == "webm");
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
|
|
@ -485,17 +485,15 @@ bool LoadScenePopup::execute() {
|
|||
void LoadScenePopup::initFolder() { setInitialFolderByCurrentRoom(); }
|
||||
|
||||
void LoadScenePopup::setInitialFolderByCurrentRoom() {
|
||||
QString roomName = TApp::instance()->getCurrentRoomName();
|
||||
QString roomName = TApp::instance()->getCurrentRoomName();
|
||||
TProjectP project = TProjectManager::instance()->getCurrentProject();
|
||||
TFilePath scenePath;
|
||||
if (roomName == "Cleanup" || roomName == "InknPaint")
|
||||
scenePath = TProjectManager::instance()->getCurrentProject()->getFolder(
|
||||
TProject::Drawings);
|
||||
scenePath = project->getFolder(TProject::Drawings, true);
|
||||
else if (roomName == "PltEdit")
|
||||
scenePath = TProjectManager::instance()->getCurrentProject()->getFolder(
|
||||
TProject::Palettes);
|
||||
scenePath = project->getFolder(TProject::Palettes, true);
|
||||
else
|
||||
scenePath = TProjectManager::instance()->getCurrentProject()->getFolder(
|
||||
TProject::Scenes);
|
||||
scenePath = project->getFolder(TProject::Scenes, true);
|
||||
setFolder(scenePath);
|
||||
}
|
||||
|
||||
|
|
|
@ -179,7 +179,8 @@ public:
|
|||
FlipBook(QWidget *parent = 0, QString viewerTitle = QString(),
|
||||
UINT flipConsoleButtonMask = FlipConsole::cFullConsole &
|
||||
(~(FlipConsole::eFilledRaster |
|
||||
FlipConsole::eDefineSubCamera)),
|
||||
FlipConsole::eDefineSubCamera |
|
||||
FlipConsole::eLocator)),
|
||||
UCHAR flags = 0, bool isColorModel = false);
|
||||
~FlipBook();
|
||||
void setLevel(const TFilePath &path, TPalette *palette = 0, int from = -1,
|
||||
|
|
|
@ -1176,17 +1176,21 @@ bool IoCmd::saveSceneIfNeeded(QString msg) {
|
|||
QString question;
|
||||
question = QObject::tr(
|
||||
"%1: the current scene has been modified.\n"
|
||||
"Do you want to save your changes?")
|
||||
"What would you like to do?")
|
||||
.arg(msg);
|
||||
int ret = DVGui::MsgBox(question, QObject::tr("Save"),
|
||||
QObject::tr("Discard"), QObject::tr("Cancel"), 0);
|
||||
if (ret == 0 || ret == 3) {
|
||||
int ret = DVGui::MsgBox(
|
||||
question, QObject::tr("Save All"), QObject::tr("Save Scene Only"),
|
||||
QObject::tr("Discard Changes"), QObject::tr("Cancel"), 0);
|
||||
if (ret == 0 || ret == 4) {
|
||||
// cancel (or closed message box window)
|
||||
return false;
|
||||
} else if (ret == 1) {
|
||||
// save all
|
||||
if (!IoCmd::saveAll()) return false;
|
||||
} else if (ret == 2) {
|
||||
// save
|
||||
if (!IoCmd::saveScene()) return false;
|
||||
} else if (ret == 2) {
|
||||
} else if (ret == 3) {
|
||||
}
|
||||
|
||||
isLevelOrSceneIsDirty = true;
|
||||
|
@ -1203,21 +1207,25 @@ bool IoCmd::saveSceneIfNeeded(QString msg) {
|
|||
if (!dirtyResources.empty()) {
|
||||
QString question;
|
||||
|
||||
question =
|
||||
msg + ":" + QObject::tr(" Following file(s) are modified.\n\n");
|
||||
question = msg + ":" +
|
||||
QObject::tr(" The following file(s) have been modified.\n\n");
|
||||
for (int i = 0; i < dirtyResources.size(); i++) {
|
||||
question += " " + dirtyResources[i] + "\n";
|
||||
}
|
||||
question +=
|
||||
QObject::tr("\nAre you sure to ") + msg + QObject::tr(" anyway ?");
|
||||
question += QObject::tr("\nWhat would you like to do? ");
|
||||
|
||||
int ret =
|
||||
DVGui::MsgBox(question, QObject::tr("OK"), QObject::tr("Cancel"), 0);
|
||||
if (ret == 0 || ret == 2) {
|
||||
DVGui::MsgBox(question, QObject::tr("Save Changes"),
|
||||
msg + QObject::tr(" Anyway"), QObject::tr("Cancel"), 0);
|
||||
if (ret == 0 || ret == 3) {
|
||||
// cancel (or closed message box window)
|
||||
return false;
|
||||
} else if (ret == 1) {
|
||||
// ok
|
||||
// save non scene files
|
||||
IoCmd::saveNonSceneFiles();
|
||||
return false;
|
||||
} else if (ret == 2) {
|
||||
// quit
|
||||
}
|
||||
|
||||
isLevelOrSceneIsDirty = true;
|
||||
|
@ -1604,7 +1612,7 @@ bool IoCmd::saveLevel(TXshSimpleLevel *sl) {
|
|||
}
|
||||
|
||||
//===========================================================================
|
||||
// IoCmd::saveSound(soundPath, soundColumn, overwrite)
|
||||
// IoCmd::saveAll()
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool IoCmd::saveAll() {
|
||||
|
@ -1626,6 +1634,26 @@ bool IoCmd::saveAll() {
|
|||
return result;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// IoCmd::saveNonSceneFiles()
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void IoCmd::saveNonSceneFiles() {
|
||||
// try to save non scene files
|
||||
|
||||
TApp *app = TApp::instance();
|
||||
ToonzScene *scene = app->getCurrentScene()->getScene();
|
||||
bool untitled = scene->isUntitled();
|
||||
SceneResources resources(scene, 0);
|
||||
resources.save(scene->getScenePath());
|
||||
if (untitled) scene->setUntitled();
|
||||
resources.updatePaths();
|
||||
|
||||
// for update title bar
|
||||
app->getCurrentLevel()->notifyLevelTitleChange();
|
||||
app->getCurrentPalette()->notifyPaletteTitleChanged();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// IoCmd::saveSound(soundPath, soundColumn, overwrite)
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2738,3 +2766,12 @@ public:
|
|||
SaveAllCommandHandler() : MenuItemHandler(MI_SaveAll) {}
|
||||
void execute() override { IoCmd::saveAll(); }
|
||||
} saveAllCommandHandler;
|
||||
|
||||
//=============================================================================
|
||||
// Save all levels
|
||||
//-----------------------------------------------------------------------------
|
||||
class SaveAllLevelsCommandHandler : public MenuItemHandler {
|
||||
public:
|
||||
SaveAllLevelsCommandHandler() : MenuItemHandler(MI_SaveAllLevels) {}
|
||||
void execute() { IoCmd::saveNonSceneFiles(); }
|
||||
} saveAllLevelsCommandHandler;
|
||||
|
|
|
@ -197,6 +197,8 @@ bool saveLevel(TXshSimpleLevel *sl);
|
|||
|
||||
bool saveAll();
|
||||
|
||||
void saveNonSceneFiles();
|
||||
|
||||
bool saveSound(const TFilePath &fp, TXshSoundLevel *sc, bool overwrite);
|
||||
bool saveSound(TXshSoundLevel *sc);
|
||||
|
||||
|
|
117
toonz/sources/toonz/locatorpopup.cpp
Normal file
|
@ -0,0 +1,117 @@
|
|||
#include "locatorpopup.h"
|
||||
|
||||
// TnzLib includes
|
||||
#include "toonz/txshlevelhandle.h"
|
||||
#include "toonz/tframehandle.h"
|
||||
#include "toonz/preferences.h"
|
||||
#include "toonz/stage2.h"
|
||||
|
||||
// Tnz6 includes
|
||||
#include "tapp.h"
|
||||
#include "sceneviewer.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
|
||||
LocatorPopup::LocatorPopup(QWidget *parent)
|
||||
: QDialog(parent), m_initialZoom(true) {
|
||||
m_viewer = new SceneViewer(NULL);
|
||||
m_viewer->setParent(parent);
|
||||
m_viewer->setIsLocator();
|
||||
|
||||
//---- layout
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout();
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addWidget(m_viewer, 1);
|
||||
setLayout(mainLayout);
|
||||
|
||||
bool ret = true;
|
||||
// When zoom changed, change window title.
|
||||
ret = connect(m_viewer, SIGNAL(onZoomChanged()), SLOT(changeWindowTitle()));
|
||||
ret = ret &&
|
||||
connect(m_viewer, SIGNAL(previewToggled()), SLOT(changeWindowTitle()));
|
||||
assert(ret);
|
||||
|
||||
resize(400, 400);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void LocatorPopup::onChangeViewAff(const TPointD &pos) {
|
||||
TAffine curAff = m_viewer->getSceneMatrix();
|
||||
TAffine newAff(curAff.a11, 0, -pos.x * curAff.a11, 0, curAff.a22,
|
||||
-pos.y * curAff.a22);
|
||||
m_viewer->setViewMatrix(newAff, 0);
|
||||
m_viewer->setViewMatrix(newAff, 1);
|
||||
m_viewer->update();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void LocatorPopup::showEvent(QShowEvent *) {
|
||||
// zoom the locator for the first time
|
||||
if (m_initialZoom) {
|
||||
for (int z = 0; z < 4; z++) m_viewer->zoomQt(true, false);
|
||||
m_initialZoom = false;
|
||||
}
|
||||
|
||||
TApp *app = TApp::instance();
|
||||
TFrameHandle *frameHandle = app->getCurrentFrame();
|
||||
TXshLevelHandle *levelHandle = app->getCurrentLevel();
|
||||
|
||||
bool ret = true;
|
||||
ret = ret && connect(frameHandle, SIGNAL(frameSwitched()), this,
|
||||
SLOT(changeWindowTitle()));
|
||||
ret = ret && connect(levelHandle, SIGNAL(xshLevelSwitched(TXshLevel *)), this,
|
||||
SLOT(changeWindowTitle()));
|
||||
assert(ret);
|
||||
|
||||
changeWindowTitle();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void LocatorPopup::hideEvent(QHideEvent *) {
|
||||
TApp *app = TApp::instance();
|
||||
disconnect(app->getCurrentLevel());
|
||||
disconnect(app->getCurrentFrame());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void LocatorPopup::changeWindowTitle() {
|
||||
TApp *app = TApp::instance();
|
||||
// put the titlebar texts in this string
|
||||
QString name = tr("Locator");
|
||||
|
||||
bool showZoomFactor = false;
|
||||
|
||||
// if the frame type is "scene editing"
|
||||
if (app->getCurrentFrame()->isEditingScene()) {
|
||||
if (m_viewer->isPreviewEnabled()) showZoomFactor = true;
|
||||
|
||||
// If the current level exists and some option is set in the preference,
|
||||
// set the zoom value to the current level's dpi
|
||||
else if (Preferences::instance()
|
||||
->isActualPixelViewOnSceneEditingModeEnabled() &&
|
||||
app->getCurrentLevel()->getSimpleLevel() &&
|
||||
!CleanupPreviewCheck::instance()
|
||||
->isEnabled() // cleanup preview must be OFF
|
||||
&&
|
||||
!CameraTestCheck::instance()
|
||||
->isEnabled()) // camera test mode must be OFF neither
|
||||
showZoomFactor = true;
|
||||
}
|
||||
// if the frame type is "level editing"
|
||||
else {
|
||||
TXshLevel *level = app->getCurrentLevel()->getLevel();
|
||||
if (level) showZoomFactor = true;
|
||||
}
|
||||
|
||||
if (showZoomFactor) {
|
||||
name = name + " Zoom : " +
|
||||
QString::number((int)(100.0 * sqrt(m_viewer->getViewMatrix().det()) *
|
||||
m_viewer->getDpiFactor())) +
|
||||
"%";
|
||||
}
|
||||
setWindowTitle(name);
|
||||
}
|
34
toonz/sources/toonz/locatorpopup.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef LOCATORPOPUP_H
|
||||
#define LOCATORPOPUP_H
|
||||
|
||||
#include "tgeometry.h"
|
||||
#include <QDialog>
|
||||
|
||||
class SceneViewer;
|
||||
|
||||
//=============================================================================
|
||||
// LoactorPopup
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class LocatorPopup : public QDialog {
|
||||
Q_OBJECT
|
||||
SceneViewer* m_viewer;
|
||||
bool m_initialZoom;
|
||||
|
||||
public:
|
||||
LocatorPopup(QWidget* parent = 0);
|
||||
SceneViewer* viewer() { return m_viewer; }
|
||||
|
||||
void onChangeViewAff(const TPointD& curPos);
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent*);
|
||||
void hideEvent(QHideEvent*);
|
||||
|
||||
protected slots:
|
||||
void changeWindowTitle();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -124,7 +124,7 @@ MagpieFileImportPopup::MagpieFileImportPopup()
|
|||
FlipConsole::eRed | FlipConsole::eGreen | FlipConsole::eBlue |
|
||||
FlipConsole::eMatte | FlipConsole::eDefineSubCamera |
|
||||
FlipConsole::eDefineLoadBox | FlipConsole::eUseLoadBox |
|
||||
FlipConsole::eFilledRaster));
|
||||
FlipConsole::eFilledRaster | FlipConsole::eLocator));
|
||||
m_flipbook = new FlipBook(this, tr("Import Magpie File"), buttonMask);
|
||||
m_flipbook->setFixedHeight(250);
|
||||
frameLayout->addWidget(m_flipbook);
|
||||
|
|