Fix conflicts with opentoonz master

This commit is contained in:
manongjohn 2019-09-21 22:52:32 -04:00
commit d274884f4f
122 changed files with 2194 additions and 1248 deletions

View file

@ -33,19 +33,28 @@ build:
verbosity: minimal
after_build:
- cmd: >-
C:\Qt\5.9\msvc2015_64\bin\windeployqt.exe %CONFIGURATION%\OpenToonz.exe
mkdir %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\glut\3.7.6\lib\glut64.dll %CONFIGURATION%
move %CONFIGURATION%\*.* %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\glew\glew-1.9.0\bin\64bit\glew32.dll %CONFIGURATION%
C:\Qt\5.9\msvc2015_64\bin\windeployqt.exe %CONFIGURATION%\OpenToonz\OpenToonz.exe
copy /Y ..\..\thirdparty\libmypaint\dist\64\libiconv-2.dll %CONFIGURATION%
copy /Y ..\..\thirdparty\glut\3.7.6\lib\glut64.dll %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\libmypaint\dist\64\libintl-8.dll %CONFIGURATION%
copy /Y ..\..\thirdparty\glew\glew-1.9.0\bin\64bit\glew32.dll %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\libmypaint\dist\64\libjson-c-2.dll %CONFIGURATION%
copy /Y ..\..\thirdparty\libmypaint\dist\64\libiconv-2.dll %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\libmypaint\dist\64\libintl-8.dll %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\libmypaint\dist\64\libjson-c-2.dll %CONFIGURATION%\OpenToonz
copy /Y ..\..\thirdparty\libmypaint\dist\64\libmypaint-1-4-0.dll %CONFIGURATION%\OpenToonz
mkdir "%CONFIGURATION%\OpenToonz stuff"
xcopy /Y /E ..\..\stuff "%CONFIGURATION%\OpenToonz stuff"
copy /Y ..\..\thirdparty\libmypaint\dist\64\libmypaint-1-4-0.dll %CONFIGURATION%
artifacts:
- path: toonz\$(PLATFORM)\$(CONFIGURATION)
name: OpenToonz

View file

@ -34,7 +34,7 @@ Notes:
(it may include some useless packages)
```
$ sudo 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 json-c-devel
$ sudo 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 json-c-devel libtool intltool make
```
For newest versions of OS you may install libmypaint from repository and don't need to build it from source:

View file

@ -6,85 +6,129 @@
- git
- brew
- Xcode
- cmake
- Version 3.2.2 confirmed to work.
- Qt
- http://download.qt.io/official_releases/qt/5.9/5.9.2/
- qt-opensource-mac-x64-5.9.2.dmg
- boost
- http://www.boost.org/users/history/version_1_55_0.html (or later, though only 1.55.0 is supported)
- cmake (3.2.2 or later)
- Qt (5.9.2 or later)
- boost (1.55.0 or later)
## Building on MacOSX
### Download boost from https://boost.org
### 0. Install Qt 5.9 (Most recent is 5.9.2)
Download the .bz2 mac (unix if mac not specified) version 1_55_0 or later (last tested with 1_69_0)
### 1. Install Dependent Packages
Save for later step.
With homebrew, you can install them with following command.
### Download and install Xcode from Apple
When downloading Xcode, you should use the appropriate version for your OS version. You can refer to the Version Comparison Table on https://en.wikipedia.org/wiki/Xcode to find out which version you should use.
Apple store usually provides for the most recent macOS version. For older versions, you will need to go to the Apple Developer site.
After installing the application, you will need to start it in order to complete the installation.
### Install Homebrew from https://brew.sh
Check site for any changes in installation instructions, but they will probably just be this:
1. Open a Terminal window
2. Execute the following statement:
```
$ brew install glew lz4 libjpeg libpng lzo pkg-config libusb cmake git-lfs libmypaint
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
Or, you should build and install them manually.
### 2. Clone the Repository
### Install required software using brew
In a Terminal window, execute the following statements:
```
$ brew install glew lz4 libjpeg libpng lzo pkg-config libusb cmake git-lfs libmypaint qt
$ git lfs install
```
NOTE: This will install the latest version of QT which may not be compatible with older OS versions.
If you cannot use the most recent version, download the online installer from https://www.qt.io/download and install the appropriate `macOS` version (min 5.9.2). If installing via this method, be sure to install the `Qt Script (Deprecated)` libraries.
### Set up OpenToonz repository
These steps will put the OpenToonz repository under /Users/yourlogin/Documents.
```
$ cd ~/Documents #or where you want to store the repository#
$ git clone https://github.com/opentoonz/opentoonz
cd opentoonz
git lfs pull
```
### (Optional) Create the stuff Directory
If the directory `/Applications/OpenToonz/OpenToonz_stuff` does not exist, enter the following command:
```
$ sudo cp -r stuff /Applications/OpenToonz/OpenToonz_stuff
```
### 3. Build tiff in thirdparty
```
$ cd thirdparty/tiff-4.0.3
$ cd opentoonz
$ git lfs pull
$ cd thirdparty/boost
$ mv ~/Downloads/boost_1_69_0.tar.bz2 . #or whatever the boost filename you downloaded is#
$ tar xvjf boost_1_69_0.tar.bz2
$ cd ../lzo
$ cp -r 2.03/include/lzo driver
$ cd ../tiff-4.0.3
$ ./configure && make
```
### 4. Put Boost library into thirdpaty directory
The following assumes `boost_1_55_0.tar.bz2` was downloaded to `~/Downloads`.
### Configure build for QT version
Edit the `/Users/yourlogin/Documents/opentoonz/toonz/sources/CMakeLists.txt` file at line 160 (64bit OS) or 172 (32bit OS) and modify the root path for the QT lib directory
If you installed QT using `brew` , you can get the version and path to use with: `$ brew info qt`. The lib path will look something like this: `/usr/local/Cellar/qt/5.12.2/lib`
If you downloaded the QT installer and installed to `/Users/yourlogin/Qt`, your lib path may look something like this: `~/Qt/5.12.2/clang_64/lib` or `~/Qt/5.12.2/clang_32/lib`
### Configure environment and Build OpenToonz
1. Create the build directory with the following:
```
$ cd ../boost
$ mv ~/Downloads/boost_1_55_0.tar.bz2 .
$ tar xjvf boost_1_55_0.tar.bz2
```
### 5. Update the path to your Qt 5.9 install in opentoonz/toonz/sources/CMakeLists.txt line 160 or 172
If using Qt 5.9.2, this is unnecessary.
### 6. Copy the lzo header folder to the lzo driver directory
```
$ cd ../lzo
$ cp -r 2.03/include/lzo driver
```
### 6. Build Everything Together
```
$ cd ../../toonz
$ cd ~/Documents/opentoonz/toonz
$ mkdir build
$ cd build
CMAKE_PREFIX_PATH=~/Qt5.9.2/5.9.2/clang_64 cmake ../sources
```
2. Set up build environment
To build from command line, do the following:
```
$ CMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.12.2 cmake ../sources #replace QT path with your installed QT version#
$ make
```
Please be patient as the install will take a while.
To build using Xcode, do the following:
```
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
$ CMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.12.2 cmake -G Xcode ../sources -B. #replace QT path with your installed QT version#
```
### After Building
- Open Xcode app and open project /Users/yourlogin/Documents/opentoonz/toonz/build/OpenToonz.xcodeproj
- Change `ALL_BUILD` to `OpenToonz`
- Start build with: Product -> Build
- NOTE about rebuilding in Xcode: The initial build should succeed without any errors. There after, the build will succeed but the following 3 errors can be ignored:
```
$ open ./toonz/OpenToonz.app
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: for: /Users/yourlogin/Documents/opentoonz/toonz/build/toonz/Debug/OpenToonz.app/Contents/MacOS/OpenToonz (for architecture x86_64) option "-add_rpath @executable_path/." would duplicate path, file already has LC_RPATH for: @executable_path/.
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: for: /Users/yourlogin/Documents/opentoonz/toonz/build/toonz/Debug/OpenToonz.app/Contents/MacOS/OpenToonz (for architecture x86_64) option "-add_rpath /usr/local/Cellar/qt/5.12.2/lib/" would duplicate path, file already has LC_RPATH for: /usr/local/Cellar/qt/5.12.2/lib/
Command /bin/sh emitted errors but did not return a nonzero exit code to indicate failure
```
Side note: If you want the option to build by command line and Xcode, create a separate build directory for each.
### Create the stuff Directory
If you have installed OpenToonz on the machine already, you can skip this. Otherwise, you need to create the stuff folder with the following:
```
$ cd ~/Documents/opentoonz
$ sudo mkdir /Applications/OpenToonz
$ sudo cp -r stuff /Applications/OpenToonz/OpenToonz_stuff
$ sudo chmod -R 777 /Applications/OpenToonz
```
### Running the build
- If built using command line, run the following:
```
$ open ~/Documents/opentoonz/build/toonz/OpenToonz.app
```
- If built using Xcode, do the following:
- Open Scheme editor for OpenToonz: Product -> Scheme -> Edit Scheme
- Uncheck: Run -> Options -> Document Versions
- Run in Debug mode: Product -> Run
- To open with command line or from Finder window, the application is found in `/Users/yourlogin/Documents/opentoonz/toonz/build/Debug/OpenToonz.app`

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -369,6 +369,12 @@
@xsheet-DarkBG-color: lighten(@bg, 60.0000);
@xsheet-DarkLine-color: lighten(@bg, 30.5882);
@xsheet-ActiveCamera-color: #2d7dca;
@xsheet-SelectedActiveCamera-color: lighten(desaturate(@xsheet-ActiveCamera-color, 5), 10);
@xsheet-OtherCamera-color: #6c797b;
@xsheet-SelectedOtherCamera-color: lighten(desaturate(@xsheet-OtherCamera-color, 5), 10);
// Timeline
@xsheet-ColumnNameBg-color: rgba(0, 0, 0, 0);

View file

@ -164,6 +164,12 @@ XsheetViewer {
qproperty-LayerHeaderCamstandOverImage: url('@{img-url}/@{layerheader-CamstandOverImage}');
qproperty-LayerHeaderLockImage: url('@{img-url}/@{layerheader-LockImage}');
qproperty-LayerHeaderLockOverImage: url('@{img-url}/@{layerheader-LockOverImage}');
qproperty-ActiveCameraColor: @xsheet-ActiveCamera-color;
qproperty-SelectedActiveCameraColor: @xsheet-SelectedActiveCamera-color;
qproperty-OtherCameraColor: @xsheet-OtherCamera-color;
qproperty-SelectedOtherCameraColor: @xsheet-SelectedOtherCamera-color;
}
/* XSheet Toolbar

View file

@ -290,6 +290,12 @@
@xsheet-DarkBG-color: rgb(225,225,225);
@xsheet-DarkLine-color: rgb(150,150,150);
@xsheet-ActiveCamera-color: rgb(107, 165, 222);
@xsheet-SelectedActiveCamera-color: lighten(desaturate(@xsheet-ActiveCamera-color, 5), 10);
@xsheet-OtherCamera-color: rgb(143, 156, 158);
@xsheet-SelectedOtherCamera-color: lighten(desaturate(@xsheet-OtherCamera-color, 5), 10);
// -----------------------------------------------------------------------------
// Function Editor
// -----------------------------------------------------------------------------

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
room1.ini
room2.ini
room3.ini
room9.ini
room4.ini
room5.ini
room6.ini
room7.ini
room8.ini
room9.ini

View file

@ -40,6 +40,8 @@
<command>MI_Preferences</command>
<command>MI_ShortcutPopup</command>
<separator/>
<command>MI_ClearCacheFolder</command>
<separator/>
<command>MI_Quit</command>
</menu>
<menu title="Edit">
@ -313,6 +315,6 @@
<menu title="Help">
<command>MI_OpenOnlineManual</command>
<separator/>
<command>MI_About</command>
<command>MI_About</command>
</menu>
</menubar>

View file

@ -1,20 +1,26 @@
[room]
pane_0\name=Xsheet
pane_0\geometry=@Rect(1518 34 402 962)
pane_0\geometry=@Rect(1121 30 159 668)
pane_0\orientation=TopToBottom
pane_0\frameZoomFactor=100
pane_1\name=FilmStrip
pane_1\geometry=@Rect(1168 34 342 514)
pane_1\geometry=@Rect(921 30 196 369)
pane_2\name=LevelPalette
pane_2\geometry=@Rect(421 706 739 290)
pane_2\geometry=@Rect(296 553 621 145)
pane_2\viewtype=2
pane_3\name=StyleEditor
pane_3\geometry=@Rect(1168 556 342 440)
pane_3\geometry=@Rect(921 403 196 295)
pane_3\isVertical=true
pane_3\visibleParts=15
pane_3\splitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xf0\0\0\0\xf0\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
pane_4\name=SceneViewer
pane_4\geometry=@Rect(43 34 1117 664)
pane_4\geometry=@Rect(39 30 878 519)
pane_5\name=ToolBar
pane_5\geometry=@Rect(0 34 35 962)
pane_5\geometry=@Rect(0 30 35 668)
pane_6\name=ToolOptions
pane_6\geometry=@Rect(0 0 1920 26)
pane_6\geometry=@Rect(0 0 1280 26)
pane_7\name=StudioPalette
pane_7\geometry=@Rect(43 706 370 290)
pane_7\geometry=@Rect(39 553 253 145)
pane_7\viewtype=1
hierarchy="-1 1 [ 6 [ 5 [ 4 [ 7 2 ] ] [ 1 3 ] 0 ] ] "
name=Basics

View file

@ -1,13 +1,15 @@
[room]
pane_0\name=CleanupSettings
pane_0\geometry=@Rect(1278 34 642 962)
pane_0\geometry=@Rect(956 30 324 668)
pane_1\name=ToolOptions
pane_1\geometry=@Rect(0 0 1920 26)
pane_1\geometry=@Rect(0 0 1280 26)
pane_2\name=SceneViewer
pane_2\geometry=@Rect(43 34 1227 567)
pane_2\geometry=@Rect(39 30 913 422)
pane_3\name=ToolBar
pane_3\geometry=@Rect(0 34 35 962)
pane_3\geometry=@Rect(0 30 35 668)
pane_4\name=Xsheet
pane_4\geometry=@Rect(43 609 1227 387)
pane_4\geometry=@Rect(39 456 913 242)
pane_4\orientation=TopToBottom
pane_4\frameZoomFactor=100
hierarchy="-1 1 [ 1 [ 3 [ 2 4 ] 0 ] ] "
name=Cleanup

View file

@ -1,16 +1,19 @@
[room]
pane_0\name=SceneViewer
pane_0\geometry=@Rect(43 34 1080 962)
pane_0\geometry=@Rect(39 30 928 668)
pane_1\name=ToolBar
pane_1\geometry=@Rect(0 34 35 962)
pane_1\geometry=@Rect(0 30 35 668)
pane_2\name=FilmStrip
pane_2\geometry=@Rect(1537 34 383 962)
pane_2\geometry=@Rect(1169 30 111 668)
pane_3\name=ToolOptions
pane_3\geometry=@Rect(0 0 1920 26)
pane_3\geometry=@Rect(0 0 1280 26)
pane_4\name=LevelPalette
pane_4\geometry=@Rect(1131 34 398 217)
pane_4\geometry=@Rect(971 30 194 72)
pane_4\viewtype=2
pane_5\name=StyleEditor
pane_5\geometry=@Rect(1131 259 398 737)
pane_5\geometry=@Rect(971 106 194 592)
pane_5\isVertical=true
pane_5\visibleParts=15
pane_5\splitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xf0\0\0\0\xf0\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
hierarchy="-1 1 [ 3 [ 1 0 [ 4 5 ] 2 ] ] "
name=Drawing

View file

@ -1,18 +1,23 @@
[room]
pane_0\name=SceneViewer
pane_0\geometry=@Rect(43 34 1095 557)
pane_1\name=ToolBar
pane_1\geometry=@Rect(0 34 35 962)
pane_2\name=ToolOptions
pane_2\geometry=@Rect(0 0 1920 26)
pane_3\name=Xsheet
pane_3\geometry=@Rect(1146 34 480 578)
pane_4\name=FunctionEditor
pane_4\geometry=@Rect(43 599 1095 397)
pane_5\name=Schematic
pane_5\geometry=@Rect(1146 620 774 376)
pane_5\viewtype=1
pane_6\name=FilmStrip
pane_6\geometry=@Rect(1634 34 286 578)
hierarchy="-1 1 [ 2 [ 1 [ 0 4 ] [ [ 3 6 ] 5 ] ] ] "
name=Animation
pane_0\name=StyleEditor
pane_0\geometry=@Rect(0 30 191 405)
pane_0\isVertical=true
pane_0\visibleParts=15
pane_0\splitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xa4\0\0\0\xd6\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
pane_1\name=FilmStrip
pane_1\geometry=@Rect(1169 30 111 517)
pane_2\name=Timeline
pane_2\geometry=@Rect(0 551 1280 147)
pane_2\orientation=LeftToRight
pane_2\frameZoomFactor=100
pane_3\name=SceneViewer
pane_3\geometry=@Rect(234 30 931 517)
pane_4\name=ToolBar
pane_4\geometry=@Rect(195 30 35 517)
pane_5\name=ToolOptions
pane_5\geometry=@Rect(0 0 1280 26)
pane_6\name=LevelPalette
pane_6\geometry=@Rect(0 439 191 108)
pane_6\viewtype=2
hierarchy="-1 1 [ 5 [ [ 0 6 ] 4 3 1 ] 2 ] "
name=Timeline

View file

@ -1,20 +1,21 @@
[room]
pane_0\name=SceneViewer
pane_0\geometry=@Rect(43 34 1181 604)
pane_0\geometry=@Rect(39 30 779 412)
pane_1\name=ToolBar
pane_1\geometry=@Rect(0 34 35 962)
pane_1\geometry=@Rect(0 30 35 668)
pane_2\name=ToolOptions
pane_2\geometry=@Rect(0 0 1920 26)
pane_3\name=ColorModel
pane_3\geometry=@Rect(1232 34 341 278)
pane_4\name=Xsheet
pane_4\geometry=@Rect(43 646 1181 350)
pane_5\name=LevelPalette
pane_5\geometry=@Rect(1232 320 688 130)
pane_5\viewtype=2
pane_6\name=StyleEditor
pane_6\geometry=@Rect(1232 458 688 538)
pane_7\name=StudioPalette
pane_7\geometry=@Rect(1581 34 339 278)
hierarchy="-1 1 [ 2 [ 1 [ 0 4 ] [ [ 3 7 ] 5 6 ] ] ] "
name=Palette
pane_2\geometry=@Rect(0 0 1280 26)
pane_3\name=Xsheet
pane_3\geometry=@Rect(822 30 343 435)
pane_3\orientation=TopToBottom
pane_3\frameZoomFactor=100
pane_4\name=FunctionEditor
pane_4\geometry=@Rect(39 446 779 252)
pane_4\toggleStatus=0
pane_5\name=Schematic
pane_5\geometry=@Rect(822 469 458 229)
pane_5\viewtype=1
pane_6\name=FilmStrip
pane_6\geometry=@Rect(1169 30 111 435)
hierarchy="-1 1 [ 2 [ 1 [ 0 4 ] [ [ 3 6 ] 5 ] ] ] "
name=Animation

View file

@ -1,9 +1,26 @@
[room]
pane_0\name=Xsheet
pane_0\geometry=@Rect(0 0 1104 996)
pane_1\name=FunctionEditor
pane_1\geometry=@Rect(1112 487 808 509)
pane_2\name=SceneViewer
pane_2\geometry=@Rect(1112 0 808 479)
hierarchy="-1 0 [ 0 [ 2 1 ] ] "
name=Xsheet
pane_0\name=SceneViewer
pane_0\geometry=@Rect(39 30 865 459)
pane_1\name=ToolBar
pane_1\geometry=@Rect(0 30 35 668)
pane_2\name=ToolOptions
pane_2\geometry=@Rect(0 0 1280 26)
pane_3\name=ColorModel
pane_3\geometry=@Rect(908 30 185 181)
pane_4\name=Xsheet
pane_4\geometry=@Rect(39 493 865 205)
pane_4\orientation=TopToBottom
pane_4\frameZoomFactor=100
pane_5\name=LevelPalette
pane_5\geometry=@Rect(908 215 372 40)
pane_5\viewtype=2
pane_6\name=StyleEditor
pane_6\geometry=@Rect(908 259 372 439)
pane_6\isVertical=true
pane_6\visibleParts=15
pane_6\splitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xf0\0\0\0\xf0\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
pane_7\name=StudioPalette
pane_7\geometry=@Rect(1097 30 183 181)
pane_7\viewtype=1
hierarchy="-1 1 [ 2 [ 1 [ 0 4 ] [ [ 3 7 ] 5 6 ] ] ] "
name=Palette

View file

@ -1,7 +1,12 @@
[room]
pane_0\name=Browser
pane_0\geometry=@Rect(0 0 1920 495)
pane_1\name=SceneCast
pane_1\geometry=@Rect(0 503 1920 493)
hierarchy="-1 1 [ 0 1 ] "
name=Browser
pane_0\name=Xsheet
pane_0\geometry=@Rect(0 0 786 698)
pane_0\orientation=TopToBottom
pane_0\frameZoomFactor=100
pane_1\name=FunctionEditor
pane_1\geometry=@Rect(790 336 490 362)
pane_1\toggleStatus=0
pane_2\name=SceneViewer
pane_2\geometry=@Rect(790 0 490 332)
hierarchy="-1 0 [ 0 [ 2 1 ] ] "
name=Xsheet

View file

@ -1,7 +1,7 @@
[room]
pane_0\name=Tasks
pane_0\geometry=@Rect(0 0 956 996)
pane_1\name=BatchServers
pane_1\geometry=@Rect(964 0 956 996)
hierarchy="-1 0 [ 0 1 ] "
name=Farm
pane_0\name=Browser
pane_0\geometry=@Rect(0 0 1280 348)
pane_1\name=SceneCast
pane_1\geometry=@Rect(0 352 1280 346)
hierarchy="-1 1 [ 0 1 ] "
name=Browser

View file

@ -1,23 +1,7 @@
[room]
hierarchy="-1 1 [ 5 [ [ 0 6 ] 4 3 1 ] 2 ] "
pane_0\name=StyleEditor
name=Timeline
pane_0\geometry=@Rect(0 30 238 487)
pane_0\isVertical=true
pane_0\visibleParts=15
pane_0\splitterState=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xa4\0\0\0\xd6\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
pane_1\name=FilmStrip
pane_1\geometry=@Rect(1660 30 260 681)
pane_2\name=Timeline
pane_2\geometry=@Rect(0 715 1920 278)
pane_2\orientation=LeftToRight
pane_2\frameZoomFactor=100
pane_3\name=SceneViewer
pane_3\geometry=@Rect(281 30 1375 681)
pane_4\name=ToolBar
pane_4\geometry=@Rect(242 30 35 681)
pane_5\name=ToolOptions
pane_5\geometry=@Rect(0 0 1920 26)
pane_6\name=LevelPalette
pane_6\geometry=@Rect(0 521 238 190)
pane_6\viewtype=2
pane_0\name=Tasks
pane_0\geometry=@Rect(0 0 638 698)
pane_1\name=BatchServers
pane_1\geometry=@Rect(642 0 638 698)
hierarchy="-1 0 [ 0 1 ] "
name=Farm

View file

@ -15,6 +15,8 @@
<command>"MI_RunScript"</command>
<command>"MI_OpenScriptConsole"</command>
<command_debug>"MI_ReloadStyle"</command_debug>
<separator/>
<command>"MI_ClearCacheFolder"</command>
</menu>
<menu title="Help">
<command>MI_About</command>

View file

@ -30,6 +30,7 @@ A_ToolOption_GlobalKey=
A_ToolOption_IK=
A_ToolOption_Invert=
A_ToolOption_JoinVectors=
A_ToolOption_LockAlpha=
A_ToolOption_Manual=
A_ToolOption_Meshify=
A_ToolOption_Mode:Areas=
@ -42,6 +43,7 @@ A_ToolOption_PencilMode=
A_ToolOption_PickScreen=
A_ToolOption_PreserveThickness=
A_ToolOption_PressureSensitivity=Shift+P
A_ToolOption_RasterEraser=
A_ToolOption_SegmentInk=F8
A_ToolOption_Selective=F7
A_ToolOption_ShowOnlyActiveSkeleton=
@ -150,7 +152,7 @@ MI_FillEmptyCell=
MI_FillLines=
MI_FirstFrame="Alt+,"
MI_FoldColumns=
MI_FrezzePreview=
MI_FreezePreview=
MI_FullScreenWindow=Ctrl+`
MI_FxParamEditor=Ctrl+K
MI_GCheck=
@ -167,7 +169,7 @@ MI_Increment=
MI_Ink1Check=
MI_Insert=Ins
MI_InsertAbove=Shift+Ins
MI_InsertFx=
MI_InsertFx=Ctrl+F
MI_InsertGlobalKeyframe=
MI_InsertSceneFrame=
MI_InvertKeyframeSelection=
@ -195,7 +197,7 @@ MI_MergeColumns=
MI_MergeFrames=
MI_NewLevel=Alt+N
MI_NewNoteLevel=
MI_NewOutputFx=Ctrl+F
MI_NewOutputFx=Alt+O
MI_NewProject=
MI_NewRasterLevel=
MI_NewScene=Ctrl+N
@ -220,6 +222,7 @@ MI_OpenFilmStrip=
MI_OpenFunctionEditor=
MI_OpenHistoryPanel=Ctrl+H
MI_OpenLevelView=
MI_OpenOnlineManual=F1
MI_OpenPalette=
MI_OpenPltGizmo=
MI_OpenRecentLevel=
@ -273,7 +276,6 @@ MI_ReframeWithEmptyInbetweens=
MI_RefreshTree=
MI_RegenerateFramePr=
MI_RegeneratePreview=
MI_ReloadStyle=
MI_RemoveEmptyColumns=
MI_RemoveEndpoints=
MI_RemoveGlobalKeyframe=
@ -325,6 +327,7 @@ MI_SelectPreviousKeysInRow=
MI_SelectRowKeyframes=
MI_SendBack=Ctrl+[
MI_SendBackward=[
MI_SeparateColors=
MI_SetAcceleration=
MI_SetConstantSpeed=
MI_SetDeceleration=
@ -354,6 +357,14 @@ MI_Undo=Ctrl+Z
MI_Ungroup=Ctrl+Shift+G
MI_UnlockAllColumns=Ctrl+Alt+Shift+U
MI_UnlockSelectedColumns=Ctrl+Shift+U
MI_UseConstantInterpolation=
MI_UseEaseInOutInterpolation=
MI_UseEaseInOutPctInterpolation=
MI_UseExponentialInterpolation=
MI_UseExpressionInterpolation=
MI_UseFileInterpolation=
MI_UseLinearInterpolation=
MI_UseSpeedInOutInterpolation=
MI_ViewBBox=
MI_ViewCamera=
MI_ViewColorcard=
@ -381,9 +392,11 @@ T_Magnet=
T_PaintBrush=
T_Pinch=M
T_Plastic=X
T_PositionReset=
T_Pump=
T_RGBPicker=R
T_Rotate=Ctrl+Space
T_RotateReset=
T_Ruler=
T_Selection=S
T_ShowHideFullScreen=Alt+F
@ -392,8 +405,9 @@ T_StylePicker=K
T_Tape=T
T_Tracker=
T_Type=Y
T_ViewReset=Alt+0
T_Zoom=Shift+Space
T_ZoomFit=Alt+9
T_Zoomin=+
T_Zoomout=-
T_ZoomReset=Alt+0
T_ZoomReset=

View file

@ -1,61 +1,4 @@
[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=
@ -63,53 +6,63 @@ 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_AutoGroup=
A_ToolOption_AutopaintLines=
A_ToolOption_AutoSelect:Column=
A_ToolOption_AutoSelect:None=
A_ToolOption_AutoSelect:Pegbar=
A_ToolOption_AutoSelectDrawing=
A_ToolOption_BreakSharpAngles=
A_ToolOption_BrushPreset=
A_ToolOption_DrawOrder=
A_ToolOption_EditToolActiveAxis:All=
A_ToolOption_EditToolActiveAxis:Center=
A_ToolOption_EditToolActiveAxis:Position=
A_ToolOption_EditToolActiveAxis:Rotation=
A_ToolOption_EditToolActiveAxis:Scale=
A_ToolOption_EditToolActiveAxis:Shear=
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=
A_ToolOption_GeometricEdge=
A_ToolOption_GeometricShape=
A_ToolOption_GlobalKey=
A_ToolOption_IK=Alt+8
A_ToolOption_Invert=
A_ToolOption_JoinVectors=
A_ToolOption_LockAlpha=
A_ToolOption_Manual=
A_ToolOption_Meshify=
A_ToolOption_Mode:Areas=
A_ToolOption_Mode:Lines & Areas=
A_ToolOption_Mode:Lines=
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_RasterEraser=
A_ToolOption_SegmentInk=
A_ToolOption_Selective=
A_ToolOption_ShowOnlyActiveSkeleton=
A_ToolOption_SkeletonMode%3AAnimate=
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
A_ToolOption_SkeletonMode:Animate=
A_ToolOption_SkeletonMode:Build Skeleton=
A_ToolOption_SkeletonMode:Inverse Kinematics=
A_ToolOption_Smooth=
A_ToolOption_Snap=
A_ToolOption_SnapSensitivity=
A_ToolOption_Type:Freehand=
A_ToolOption_Type:Normal=
A_ToolOption_Type:Polyline=
A_ToolOption_Type:Rectangular=
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_ACheck=
MI_ActivateAllColumns=
MI_ActivateSelectedColumns=
MI_ActivateThisColumnOnly=
@ -120,8 +73,10 @@ MI_AdjustLevels=
MI_AdjustThickness=
MI_Antialias=
MI_ApplyMatchLines=
MI_AutoFillToggle=
MI_AudioRecording=
MI_Autocenter=
MI_AutoFillToggle=
MI_AutoInputCellNumber=
MI_Autorenumber=
MI_BCheck=
MI_Binarize=
@ -129,6 +84,8 @@ MI_BlendColors=
MI_BlueChannel=
MI_BlueChannelGreyscale=
MI_BrightnessAndContrast=
MI_BringForward=Ctrl+Up
MI_BringToFront=Ctrl+Shift+Up
MI_CameraSettings=
MI_CameraStage=
MI_CameraTest=
@ -136,6 +93,7 @@ MI_CanvasSize=
MI_Cleanup=
MI_CleanupPreview=
MI_CleanupSettings=
MI_Clear=Delete
MI_ClearRecentImage=
MI_ClearRecentLevel=
MI_ClearRecentScene=
@ -146,9 +104,14 @@ MI_CloseChild=
MI_Collapse=
MI_CollectAssets=
MI_CompareToSnapshot=
MI_ConvertFileWithInput=
MI_ConvertFiles=
MI_ConvertFileWithInput=
MI_ConvertToToonzRaster=
MI_ConvertToVectors=
MI_ConvertVectorToVector=
MI_Copy=Ctrl+C
MI_CursorOutline=
MI_Cut=Ctrl+X
MI_DeactivateAllColumns=
MI_DeactivateSelectedColumns=Alt+H
MI_DeactivateUpperColumns=
@ -159,7 +122,12 @@ MI_DeleteMatchLines=
MI_DisableAllColumns=
MI_DisableSelectedColumns=
MI_DockingCheck=
MI_DrawingSubBackward=[
MI_DrawingSubForward=]
MI_DrawingSubGroupBackward=Ctrl+[
MI_DrawingSubGroupForward=Ctrl+]
MI_Dup=
MI_Duplicate=
MI_DuplicateFile=
MI_Each2=
MI_Each3=
@ -176,56 +144,77 @@ MI_ExplodeChild=Ctrl+B
MI_ExportLevel=
MI_ExportScenes=
MI_ExposeResource=
MI_FastRender=
MI_FieldGuide="Ctrl+'"
MI_FileInfo=
MI_FillAreas=
MI_FillEmptyCell=
MI_FillLines=
MI_FirstFrame=Home
MI_FoldColumns=
MI_FrezzePreview=
MI_FreezePreview=
MI_FullScreenWindow=Ctrl+F
MI_FxParamEditor=
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_InsertAbove=
MI_InsertFx=
MI_InsertGlobalKeyframe=
MI_InsertSceneFrame=
MI_InvertKeyframeSelection=
MI_InvertSelection=
MI_IOnly=
MI_LastFrame=End
MI_LevelSettings=
MI_LinesFade=
MI_Link=
MI_LipSyncPopup=
MI_LoadColorModel=
MI_LoadFolder=
MI_LoadLevel=
MI_LoadRecentImage=
MI_LoadScene=Ctrl+O
MI_LoadSubSceneFile=
MI_LockAllColumns=
MI_LockSelectedColumns=
MI_LockThisColumnOnly=
MI_Loop=
MI_MatteChannel=
MI_MaximizePanel=
MI_MergeCmapped=
MI_MergeColumns=
MI_MergeFrames=
MI_NewLevel=
MI_NewNoteLevel=
MI_NewOutputFx=
MI_NewProject=
MI_NewRasterLevel=
MI_NewScene=Ctrl+N
MI_NewToonzRasterLevel=
MI_NewVectorLevel=
MI_NextDrawing=G
MI_NextFrame=.
MI_NextStep=
MI_NoShift=
MI_OnionSkin=Ctrl+Alt+O
MI_OpacityCheck=
MI_OpenBatchServers=
MI_OpenChild=
MI_OpenCleanupSettings=
MI_OpenColorModel=
MI_OpenComboViewer=
MI_OpenCommandToolbar=
MI_OpenFileBrowser=
MI_OpenFileBrowser2=
MI_OpenFileViewer=
@ -233,52 +222,65 @@ MI_OpenFilmStrip=
MI_OpenFunctionEditor=Alt+F
MI_OpenHistoryPanel=
MI_OpenLevelView=
MI_OpenOnlineManual=
MI_OpenPalette=
MI_OpenPltGizmo=
MI_OpenRecentLevel=
MI_OpenRecentScene=
MI_OpenSchematic=
MI_OpenScriptConsole=
MI_OpenStudioPalette=
MI_OpenStyleControl=
MI_OpenTMessage=
MI_OpenTasks=
MI_OpenToolOptionBar=
MI_OpenTimelineView=
MI_OpenTMessage=
MI_OpenToolbar=
MI_OpenToolOptionBar=
MI_OpenXshView=
MI_OutputSettings=
MI_OverwritePalette=
MI_PCheck=
MI_Paste=Ctrl+V
MI_PasteAbove=
MI_PasteColors=
MI_PasteInto=
MI_PasteNames=
MI_PasteNumbers=
MI_PasteValues=
MI_Pause=
MI_PCheck=
MI_PencilTest=
MI_PickStyleAreas=
MI_PickStyleLines=
MI_Play=Return
MI_Preferences=Ctrl+U
MI_PrevStep=
MI_PrevDrawing=F
MI_PrevFrame=","
MI_Preview=Alt+P
MI_PreviewFx=
MI_PreviewSettings=
MI_PrevStep=
MI_Print=
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_ReframeWithEmptyInbetweens=
MI_RefreshTree=
MI_RegenerateFramePr=
MI_RegeneratePreview=
MI_ReloadStyle=
MI_RemoveEmptyColumns=
MI_RemoveEndpoints=
MI_RemoveGlobalKeyframe=
MI_RemoveLevel=
MI_RemoveReferenceToStudioPalette=
MI_RemoveSceneFrame=
MI_RemoveUnused=
MI_Render=Ctrl+Alt+Shift+S
@ -300,16 +302,20 @@ MI_Rollup=
MI_RunScript=
MI_SafeArea=
MI_SaveAll=Ctrl+S
MI_SaveAllLevels=
MI_SaveDefaultSettings=
MI_SaveLevel=
MI_SaveLevelAs=
MI_SavePaletteAs=
MI_SavePreset=
MI_SavePreviewedFrames=
MI_SaveScene=Ctrl+Shift+S
MI_SaveSceneAs=Ctrl+Alt+Shift+S
MI_SaveSubxsheetAs=
MI_Scan=
MI_ScanSettings=
MI_SceneSettings=Ctrl+F3
MI_SelectAll=Shift+A
MI_SelectAllKeyframes=
MI_SelectAllKeyframesNotAfter=
MI_SelectAllKeyframesNotBefore=
@ -319,6 +325,9 @@ MI_SelectFollowingKeysInRow=
MI_SelectPreviousKeysInColumn=
MI_SelectPreviousKeysInRow=
MI_SelectRowKeyframes=
MI_SendBack=Ctrl+Shift+Down
MI_SendBackward=Ctrl+Down
MI_SeparateColors=
MI_SetAcceleration=
MI_SetConstantSpeed=
MI_SetDeceleration=
@ -327,6 +336,8 @@ MI_SetScanCropbox=
MI_ShiftTrace=
MI_ShortcutPopup=
MI_ShowFolderContents=
MI_SoundTrack=
MI_StartupPopup=
MI_Step2=
MI_Step3=
MI_Step4=
@ -336,11 +347,24 @@ MI_TCheck=
MI_TimeStretch=
MI_ToggleColumnLocks=
MI_ToggleColumnsActivation=
MI_ToggleCurrentTimeIndicator=
MI_ToggleEditInPlace=
MI_ToggleLinkToStudioPalette=
MI_ToggleXSheetToolbar=
MI_TouchGestureControl=
MI_Tracking=
MI_Undo=Ctrl+Z
MI_Ungroup=Ctrl+Shift+G
MI_UnlockAllColumns=Ctrl+Alt+Shift+L
MI_UnlockSelectedColumns=Ctrl+Shift+K
MI_UseConstantInterpolation=
MI_UseEaseInOutInterpolation=
MI_UseEaseInOutPctInterpolation=
MI_UseExponentialInterpolation=
MI_UseExpressionInterpolation=
MI_UseFileInterpolation=
MI_UseLinearInterpolation=
MI_UseSpeedInOutInterpolation=
MI_ViewBBox=
MI_ViewCamera=
MI_ViewColorcard=
@ -348,19 +372,42 @@ MI_ViewFile=
MI_ViewGuide=
MI_ViewRuler=Ctrl+Alt+Shift+R
MI_ViewTable=
MI_ZeroThick=D
T_ActualPixelSize=
T_Bender=
T_Brush=Alt+B
T_ControlPointEditor=Alt+A
T_Cutter=Alt+T
T_Edit=Alt+Q
T_Eraser=Alt+E
T_Fill=Alt+K
T_Finger=
T_FlipX=
T_FlipY=
T_Geometric=Atl+R
T_Hand=
T_Hook=
T_Iron=
T_Magnet=
T_PaintBrush=
T_Pinch=
T_Plastic=
T_PositionReset=
T_Pump=
T_RGBPicker=
T_Rotate=
T_RotateReset=
T_Ruler=
T_Selection=Alt+V
T_ShowHideFullScreen=F4
T_Skeleton=
T_StylePicker=Alt+I
T_Tape=Alt+C
T_Tracker=
T_Type=
T_ViewReset=
T_Zoom=Alt+Z
T_ZoomFit=
MI_OpenRecentLevel=
T_Zoomin=Ctrl+=
T_Zoomout=Ctrl+-
T_ZoomReset=Shift+Z

View file

@ -1,61 +1,4 @@
[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=
@ -63,53 +6,63 @@ 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_AutoGroup=
A_ToolOption_AutopaintLines=
A_ToolOption_AutoSelect:Column=
A_ToolOption_AutoSelect:None=
A_ToolOption_AutoSelect:Pegbar=
A_ToolOption_AutoSelectDrawing=
A_ToolOption_BreakSharpAngles=
A_ToolOption_BrushPreset=
A_ToolOption_DrawOrder=
A_ToolOption_EditToolActiveAxis:All=
A_ToolOption_EditToolActiveAxis:Center=
A_ToolOption_EditToolActiveAxis:Position=Alt+2
A_ToolOption_EditToolActiveAxis:Rotation=Alt+3
A_ToolOption_EditToolActiveAxis:Scale=Alt+4
A_ToolOption_EditToolActiveAxis:Shear=Alt+5
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_FrameRange=
A_ToolOption_GeometricEdge=
A_ToolOption_GeometricShape=
A_ToolOption_GlobalKey=
A_ToolOption_IK=
A_ToolOption_Invert=
A_ToolOption_JoinVectors=
A_ToolOption_LockAlpha=
A_ToolOption_Manual=
A_ToolOption_Meshify=
A_ToolOption_Mode:Areas=
A_ToolOption_Mode:Lines & Areas=
A_ToolOption_Mode:Lines=
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_RasterEraser=
A_ToolOption_SegmentInk=
A_ToolOption_Selective=
A_ToolOption_ShowOnlyActiveSkeleton=
A_ToolOption_SkeletonMode%3AAnimate=
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
A_ToolOption_SkeletonMode:Animate=
A_ToolOption_SkeletonMode:Build Skeleton=
A_ToolOption_SkeletonMode:Inverse Kinematics=
A_ToolOption_Smooth=
A_ToolOption_Snap=
A_ToolOption_SnapSensitivity=
A_ToolOption_Type:Freehand=
A_ToolOption_Type:Normal=
A_ToolOption_Type:Polyline=
A_ToolOption_Type:Rectangular=
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_ACheck=
MI_ActivateAllColumns=
MI_ActivateSelectedColumns=
MI_ActivateThisColumnOnly=
@ -120,8 +73,10 @@ MI_AdjustLevels=
MI_AdjustThickness=
MI_Antialias=
MI_ApplyMatchLines=
MI_AutoFillToggle=
MI_AudioRecording=
MI_Autocenter=
MI_AutoFillToggle=
MI_AutoInputCellNumber=
MI_Autorenumber=
MI_BCheck=
MI_Binarize=
@ -129,6 +84,8 @@ MI_BlendColors=
MI_BlueChannel=
MI_BlueChannelGreyscale=
MI_BrightnessAndContrast=
MI_BringForward=Ctrl+PgUp
MI_BringToFront=Ctrl+Shift+PgUp
MI_CameraSettings=
MI_CameraStage=
MI_CameraTest=
@ -136,6 +93,7 @@ MI_CanvasSize=
MI_Cleanup=
MI_CleanupPreview=
MI_CleanupSettings=
MI_Clear=Delete
MI_ClearRecentImage=
MI_ClearRecentLevel=
MI_ClearRecentScene=
@ -146,9 +104,14 @@ MI_CloseChild=
MI_Collapse=Alt+0
MI_CollectAssets=
MI_CompareToSnapshot=
MI_ConvertFileWithInput=
MI_ConvertFiles=
MI_ConvertFileWithInput=
MI_ConvertToToonzRaster=
MI_ConvertToVectors=
MI_ConvertVectorToVector=
MI_Copy=Ctrl+C
MI_CursorOutline=
MI_Cut=Ctrl+X
MI_DeactivateAllColumns=
MI_DeactivateSelectedColumns=
MI_DeactivateUpperColumns=
@ -159,7 +122,12 @@ MI_DeleteMatchLines=
MI_DisableAllColumns=
MI_DisableSelectedColumns=Alt+H
MI_DockingCheck=
MI_DrawingSubBackward=[
MI_DrawingSubForward=]
MI_DrawingSubGroupBackward=Ctrl+[
MI_DrawingSubGroupForward=Ctrl+]
MI_Dup=
MI_Duplicate=
MI_DuplicateFile=
MI_Each2=
MI_Each3=
@ -176,56 +144,77 @@ MI_ExplodeChild=Ctrl+B
MI_ExportLevel=
MI_ExportScenes=
MI_ExposeResource=
MI_FastRender=
MI_FieldGuide="Ctrl+'"
MI_FileInfo=
MI_FillAreas=
MI_FillEmptyCell=
MI_FillLines=
MI_FirstFrame="Shift+<"
MI_FoldColumns=
MI_FrezzePreview=
MI_FreezePreview=
MI_FullScreenWindow=Ctrl+F
MI_FxParamEditor=
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_InsertAbove=
MI_InsertFx=
MI_InsertGlobalKeyframe=
MI_InsertSceneFrame=
MI_InvertKeyframeSelection=
MI_InvertSelection=
MI_IOnly=
MI_LastFrame="Shift+>"
MI_LevelSettings=
MI_LinesFade=
MI_Link=
MI_LipSyncPopup=
MI_LoadColorModel=
MI_LoadFolder=
MI_LoadLevel=
MI_LoadRecentImage=
MI_LoadScene=Ctrl+O
MI_LoadSubSceneFile=
MI_LockAllColumns=Ctrl+Shift+L
MI_LockSelectedColumns=Ctrl+Alt+L
MI_LockThisColumnOnly=
MI_Loop=
MI_MatteChannel=
MI_MaximizePanel=`
MI_MergeCmapped=
MI_MergeColumns=
MI_MergeFrames=
MI_NewLevel=
MI_NewNoteLevel=
MI_NewOutputFx=
MI_NewProject=
MI_NewRasterLevel=
MI_NewScene=Ctrl+N
MI_NewToonzRasterLevel=
MI_NewVectorLevel=
MI_NextDrawing=G
MI_NextFrame=.
MI_NextStep=
MI_NoShift=
MI_OnionSkin=Alt+O
MI_OpacityCheck=
MI_OpenBatchServers=
MI_OpenChild=
MI_OpenCleanupSettings=
MI_OpenColorModel=
MI_OpenComboViewer=
MI_OpenCommandToolbar=
MI_OpenFileBrowser=
MI_OpenFileBrowser2=
MI_OpenFileViewer=
@ -233,52 +222,65 @@ MI_OpenFilmStrip=
MI_OpenFunctionEditor=Alt+F
MI_OpenHistoryPanel=
MI_OpenLevelView=
MI_OpenOnlineManual=
MI_OpenPalette=
MI_OpenPltGizmo=
MI_OpenRecentLevel=
MI_OpenRecentScene=
MI_OpenSchematic=
MI_OpenScriptConsole=
MI_OpenStudioPalette=
MI_OpenStyleControl=
MI_OpenTMessage=
MI_OpenTasks=
MI_OpenToolOptionBar=
MI_OpenTimelineView=
MI_OpenTMessage=
MI_OpenToolbar=
MI_OpenToolOptionBar=
MI_OpenXshView=
MI_OutputSettings=
MI_OverwritePalette=
MI_PCheck=
MI_Paste=Ctrl+V
MI_PasteAbove=
MI_PasteColors=
MI_PasteInto=
MI_PasteNames=
MI_PasteNumbers=
MI_PasteValues=
MI_Pause=
MI_PCheck=
MI_PencilTest=
MI_PickStyleAreas=
MI_PickStyleLines=
MI_Play=Ctrl+Return
MI_Preferences=Ctrl+U
MI_PrevStep=
MI_PrevDrawing=F
MI_PrevFrame=","
MI_Preview=
MI_PreviewFx=
MI_PreviewSettings=
MI_PrevStep=
MI_Print=
MI_PrintXsheet=
MI_ProjectSettings=
MI_Quit=Ctrl+Q
MI_Random=
MI_RasterizePli=
MI_RedChannel=
MI_RedChannelGreyscale=
MI_Redo=Ctrl+Shift+Z
MI_Reframe1=
MI_Reframe2=
MI_Reframe3=
MI_Reframe4=
MI_ReframeWithEmptyInbetweens=
MI_RefreshTree=
MI_RegenerateFramePr=
MI_RegeneratePreview=
MI_ReloadStyle=
MI_RemoveEmptyColumns=
MI_RemoveEndpoints=
MI_RemoveGlobalKeyframe=
MI_RemoveLevel=
MI_RemoveReferenceToStudioPalette=
MI_RemoveSceneFrame=
MI_RemoveUnused=
MI_Render=
@ -300,16 +302,20 @@ MI_Rollup=
MI_RunScript=
MI_SafeArea=
MI_SaveAll=Ctrl+S
MI_SaveAllLevels=
MI_SaveDefaultSettings=
MI_SaveLevel=
MI_SaveLevelAs=
MI_SavePaletteAs=
MI_SavePreset=
MI_SavePreviewedFrames=
MI_SaveScene=Ctrl+Shift+S
MI_SaveSceneAs=Ctrl+Shift+Alt+S
MI_SaveSubxsheetAs=
MI_Scan=Ctrl+Shift+S
MI_ScanSettings=
MI_SceneSettings=
MI_SelectAll=Ctrl+A
MI_SelectAllKeyframes=
MI_SelectAllKeyframesNotAfter=
MI_SelectAllKeyframesNotBefore=
@ -319,6 +325,9 @@ MI_SelectFollowingKeysInRow=
MI_SelectPreviousKeysInColumn=
MI_SelectPreviousKeysInRow=
MI_SelectRowKeyframes=
MI_SendBack=Ctrl+PgDown
MI_SendBackward=Ctrl+Shift+PgDown
MI_SeparateColors=
MI_SetAcceleration=
MI_SetConstantSpeed=
MI_SetDeceleration=
@ -327,6 +336,8 @@ MI_SetScanCropbox=
MI_ShiftTrace=
MI_ShortcutPopup=
MI_ShowFolderContents=
MI_SoundTrack=
MI_StartupPopup=
MI_Step2=
MI_Step3=
MI_Step4=
@ -336,11 +347,24 @@ MI_TCheck=
MI_TimeStretch=
MI_ToggleColumnLocks=
MI_ToggleColumnsActivation=
MI_ToggleCurrentTimeIndicator=
MI_ToggleEditInPlace=
MI_ToggleLinkToStudioPalette=
MI_ToggleXSheetToolbar=
MI_TouchGestureControl=
MI_Tracking=
MI_Undo=Ctrl+Z
MI_Ungroup=Ctrl+Shift+G
MI_UnlockAllColumns=Ctrl+Alt+Shift+K
MI_UnlockSelectedColumns=Ctrl+Shift+K
MI_UseConstantInterpolation=
MI_UseEaseInOutInterpolation=
MI_UseEaseInOutPctInterpolation=
MI_UseExponentialInterpolation=
MI_UseExpressionInterpolation=
MI_UseFileInterpolation=
MI_UseLinearInterpolation=
MI_UseSpeedInOutInterpolation=
MI_ViewBBox=
MI_ViewCamera=
MI_ViewColorcard=
@ -348,19 +372,42 @@ MI_ViewFile=
MI_ViewGuide="Ctrl+'"
MI_ViewRuler=
MI_ViewTable=
MI_ZeroThick=
T_ActualPixelSize=
T_Bender=
T_Brush=Alt+B
T_ControlPointEditor=Alt+Q
T_Cutter=Alt+T
T_Edit=Shift+T
T_Eraser=Alt+E
T_Fill=Alt+I
T_Finger=
T_FlipX=
T_FlipY=
T_Geometric=Alt+7
T_Hand=
T_Hook=
T_Iron=
T_Magnet=
T_PaintBrush=
T_Pinch=
T_Plastic=
T_PositionReset=
T_Pump=
T_RGBPicker=
T_Rotate=
T_RotateReset=
T_Ruler=
T_Selection=Alt+S
T_ShowHideFullScreen=
T_Skeleton=
T_StylePicker=Alt+D
T_Tape=Alt+C
T_Tracker=
T_Type=Alt+9
T_ViewReset=
T_Zoom=Alt+Z
T_ZoomFit=
MI_OpenRecentLevel=
T_Zoomin=Alt+2
T_Zoomout=Alt+1
T_ZoomReset=

View file

@ -1,61 +1,4 @@
[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=
@ -63,53 +6,63 @@ 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_AutoGroup=
A_ToolOption_AutopaintLines=
A_ToolOption_AutoSelect:Column=
A_ToolOption_AutoSelect:None=
A_ToolOption_AutoSelect:Pegbar=
A_ToolOption_AutoSelectDrawing=
A_ToolOption_BreakSharpAngles=
A_ToolOption_BrushPreset=
A_ToolOption_DrawOrder=
A_ToolOption_EditToolActiveAxis:All=
A_ToolOption_EditToolActiveAxis:Center=
A_ToolOption_EditToolActiveAxis:Position=
A_ToolOption_EditToolActiveAxis:Rotation=
A_ToolOption_EditToolActiveAxis:Scale=
A_ToolOption_EditToolActiveAxis:Shear=
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=
A_ToolOption_GeometricEdge=
A_ToolOption_GeometricShape=
A_ToolOption_GlobalKey=
A_ToolOption_IK=Alt+8
A_ToolOption_Invert=
A_ToolOption_JoinVectors=
A_ToolOption_LockAlpha=
A_ToolOption_Manual=
A_ToolOption_Meshify=
A_ToolOption_Mode:Areas=
A_ToolOption_Mode:Lines & Areas=
A_ToolOption_Mode:Lines=
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_RasterEraser=
A_ToolOption_SegmentInk=
A_ToolOption_Selective=
A_ToolOption_ShowOnlyActiveSkeleton=
A_ToolOption_SkeletonMode%3AAnimate=
A_ToolOption_SkeletonMode%3ABuild%20Skeleton=
A_ToolOption_SkeletonMode%3AInverse%20Kinematics=
A_ToolOption_SkeletonMode:Animate=
A_ToolOption_SkeletonMode:Build Skeleton=
A_ToolOption_SkeletonMode:Inverse Kinematics=
A_ToolOption_Smooth=
A_ToolOption_Snap=
A_ToolOption_SnapSensitivity=
A_ToolOption_Type:Freehand=
A_ToolOption_Type:Normal=
A_ToolOption_Type:Polyline=
A_ToolOption_Type:Rectangular=
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_ACheck=
MI_ActivateAllColumns=
MI_ActivateSelectedColumns=
MI_ActivateThisColumnOnly=
@ -120,8 +73,10 @@ MI_AdjustLevels=
MI_AdjustThickness=
MI_Antialias=
MI_ApplyMatchLines=
MI_AutoFillToggle=
MI_AudioRecording=
MI_Autocenter=
MI_AutoFillToggle=
MI_AutoInputCellNumber=
MI_Autorenumber=
MI_BCheck=
MI_Binarize=
@ -129,6 +84,8 @@ MI_BlendColors=
MI_BlueChannel=
MI_BlueChannelGreyscale=
MI_BrightnessAndContrast=
MI_BringForward=Ctrl+Up
MI_BringToFront=Ctrl+Shift+Up
MI_CameraSettings=
MI_CameraStage=
MI_CameraTest=
@ -136,6 +93,7 @@ MI_CanvasSize=
MI_Cleanup=
MI_CleanupPreview=
MI_CleanupSettings=
MI_Clear=Delete
MI_ClearRecentImage=
MI_ClearRecentLevel=
MI_ClearRecentScene=
@ -146,9 +104,14 @@ MI_CloseChild=
MI_Collapse=
MI_CollectAssets=
MI_CompareToSnapshot=
MI_ConvertFileWithInput=
MI_ConvertFiles=
MI_ConvertFileWithInput=
MI_ConvertToToonzRaster=
MI_ConvertToVectors=
MI_ConvertVectorToVector=
MI_Copy=Ctrl+C
MI_CursorOutline=
MI_Cut=Ctrl+X
MI_DeactivateAllColumns=
MI_DeactivateSelectedColumns=Alt+H
MI_DeactivateUpperColumns=
@ -159,7 +122,12 @@ MI_DeleteMatchLines=
MI_DisableAllColumns=
MI_DisableSelectedColumns=
MI_DockingCheck=
MI_DrawingSubBackward=[
MI_DrawingSubForward=]
MI_DrawingSubGroupBackward=Ctrl+[
MI_DrawingSubGroupForward=Ctrl+]
MI_Dup=
MI_Duplicate=
MI_DuplicateFile=
MI_Each2=
MI_Each3=
@ -176,56 +144,77 @@ MI_ExplodeChild=Ctrl+B
MI_ExportLevel=
MI_ExportScenes=
MI_ExposeResource=
MI_FastRender=
MI_FieldGuide="Ctrl+'"
MI_FileInfo=
MI_FillAreas=
MI_FillEmptyCell=
MI_FillLines=
MI_FirstFrame=Home
MI_FoldColumns=
MI_FrezzePreview=
MI_FreezePreview=
MI_FullScreenWindow=Ctrl+F
MI_FxParamEditor=
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_InsertAbove=
MI_InsertFx=
MI_InsertGlobalKeyframe=
MI_InsertSceneFrame=
MI_InvertKeyframeSelection=
MI_InvertSelection=
MI_IOnly=
MI_LastFrame=End
MI_LevelSettings=
MI_LinesFade=
MI_Link=
MI_LipSyncPopup=
MI_LoadColorModel=
MI_LoadFolder=
MI_LoadLevel=
MI_LoadRecentImage=
MI_LoadScene=Ctrl+O
MI_LoadSubSceneFile=
MI_LockAllColumns=
MI_LockSelectedColumns=
MI_LockThisColumnOnly=
MI_Loop=
MI_MatteChannel=
MI_MaximizePanel=
MI_MergeCmapped=
MI_MergeColumns=
MI_MergeFrames=
MI_NewLevel=
MI_NewNoteLevel=
MI_NewOutputFx=
MI_NewProject=
MI_NewRasterLevel=
MI_NewScene=Ctrl+N
MI_NewToonzRasterLevel=
MI_NewVectorLevel=
MI_NextDrawing=G
MI_NextFrame=.
MI_NextStep=
MI_NoShift=
MI_OnionSkin=Ctrl+Alt+O
MI_OpacityCheck=
MI_OpenBatchServers=
MI_OpenChild=
MI_OpenCleanupSettings=
MI_OpenColorModel=
MI_OpenComboViewer=
MI_OpenCommandToolbar=
MI_OpenFileBrowser=
MI_OpenFileBrowser2=
MI_OpenFileViewer=
@ -233,52 +222,65 @@ MI_OpenFilmStrip=
MI_OpenFunctionEditor=Alt+F
MI_OpenHistoryPanel=
MI_OpenLevelView=
MI_OpenOnlineManual=
MI_OpenPalette=
MI_OpenPltGizmo=
MI_OpenRecentLevel=
MI_OpenRecentScene=
MI_OpenSchematic=
MI_OpenScriptConsole=
MI_OpenStudioPalette=
MI_OpenStyleControl=
MI_OpenTMessage=
MI_OpenTasks=
MI_OpenToolOptionBar=
MI_OpenTimelineView=
MI_OpenTMessage=
MI_OpenToolbar=
MI_OpenToolOptionBar=
MI_OpenXshView=
MI_OutputSettings=
MI_OverwritePalette=
MI_PCheck=
MI_Paste=Ctrl+V
MI_PasteAbove=
MI_PasteColors=
MI_PasteInto=
MI_PasteNames=
MI_PasteNumbers=
MI_PasteValues=
MI_Pause=
MI_PCheck=
MI_PencilTest=
MI_PickStyleAreas=
MI_PickStyleLines=
MI_Play=Return
MI_Preferences=Ctrl+U
MI_PrevStep=
MI_PrevDrawing=F
MI_PrevFrame=","
MI_Preview=Alt+P
MI_PreviewFx=
MI_PreviewSettings=
MI_PrevStep=
MI_Print=
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_ReframeWithEmptyInbetweens=
MI_RefreshTree=
MI_RegenerateFramePr=
MI_RegeneratePreview=
MI_ReloadStyle=
MI_RemoveEmptyColumns=
MI_RemoveEndpoints=
MI_RemoveGlobalKeyframe=
MI_RemoveLevel=
MI_RemoveReferenceToStudioPalette=
MI_RemoveSceneFrame=
MI_RemoveUnused=
MI_Render=Ctrl+Alt+Shift+S
@ -300,16 +302,20 @@ MI_Rollup=
MI_RunScript=
MI_SafeArea=
MI_SaveAll=Ctrl+S
MI_SaveAllLevels=
MI_SaveDefaultSettings=
MI_SaveLevel=
MI_SaveLevelAs=
MI_SavePaletteAs=
MI_SavePreset=
MI_SavePreviewedFrames=
MI_SaveScene=Ctrl+Shift+S
MI_SaveSceneAs=Ctrl+Alt+Shift+S
MI_SaveSubxsheetAs=
MI_Scan=
MI_ScanSettings=
MI_SceneSettings=Ctrl+F3
MI_SelectAll=Shift+A
MI_SelectAllKeyframes=
MI_SelectAllKeyframesNotAfter=
MI_SelectAllKeyframesNotBefore=
@ -319,6 +325,9 @@ MI_SelectFollowingKeysInRow=
MI_SelectPreviousKeysInColumn=
MI_SelectPreviousKeysInRow=
MI_SelectRowKeyframes=
MI_SendBack=Ctrl+Shift+Down
MI_SendBackward=Ctrl+Down
MI_SeparateColors=
MI_SetAcceleration=
MI_SetConstantSpeed=
MI_SetDeceleration=
@ -327,6 +336,8 @@ MI_SetScanCropbox=
MI_ShiftTrace=
MI_ShortcutPopup=
MI_ShowFolderContents=
MI_SoundTrack=
MI_StartupPopup=
MI_Step2=
MI_Step3=
MI_Step4=
@ -336,11 +347,24 @@ MI_TCheck=
MI_TimeStretch=
MI_ToggleColumnLocks=
MI_ToggleColumnsActivation=
MI_ToggleCurrentTimeIndicator=
MI_ToggleEditInPlace=
MI_ToggleLinkToStudioPalette=
MI_ToggleXSheetToolbar=
MI_TouchGestureControl=
MI_Tracking=
MI_Undo=Ctrl+Z
MI_Ungroup=Ctrl+Shift+G
MI_UnlockAllColumns=Ctrl+Alt+Shift+L
MI_UnlockSelectedColumns=Ctrl+Shift+K
MI_UseConstantInterpolation=
MI_UseEaseInOutInterpolation=
MI_UseEaseInOutPctInterpolation=
MI_UseExponentialInterpolation=
MI_UseExpressionInterpolation=
MI_UseFileInterpolation=
MI_UseLinearInterpolation=
MI_UseSpeedInOutInterpolation=
MI_ViewBBox=
MI_ViewCamera=
MI_ViewColorcard=
@ -348,19 +372,42 @@ MI_ViewFile=
MI_ViewGuide=
MI_ViewRuler=Ctrl+Alt+Shift+R
MI_ViewTable=
MI_ZeroThick=D
T_ActualPixelSize=
T_Bender=
T_Brush=Alt+B
T_ControlPointEditor=Alt+A
T_Cutter=Alt+T
T_Edit=Alt+Q
T_Eraser=Alt+E
T_Fill=Alt+K
T_Finger=
T_FlipX=
T_FlipY=
T_Geometric=Atl+R
T_Hand=
T_Hook=
T_Iron=
T_Magnet=
T_PaintBrush=
T_Pinch=
T_Plastic=
T_PositionReset=
T_Pump=
T_RGBPicker=
T_Rotate=
T_RotateReset=
T_Ruler=
T_Selection=Alt+V
T_ShowHideFullScreen=F4
T_Skeleton=
T_StylePicker=Alt+I
T_Tape=Alt+C
T_Tracker=
T_Type=
T_ViewReset=
T_Zoom=Alt+Z
T_ZoomFit=
MI_OpenRecentLevel=
T_Zoomin=Ctrl+=
T_Zoomout=Ctrl+-
T_ZoomReset=Shift+Z

View file

@ -1,4 +1,4 @@
Scripts for cross-build libmypaint for Windows (MinGW) under Debian 8 Jessie
Scripts for cross-build libmypaint for Windows (MinGW) under Debian 8 Jessie and Debian 9 Stretch
1. install mingw toolchain (via apt-get for ex)

View file

@ -7,8 +7,13 @@ typedef enum {
MYPAINT_BRUSH_INPUT_RANDOM,
MYPAINT_BRUSH_INPUT_STROKE,
MYPAINT_BRUSH_INPUT_DIRECTION,
MYPAINT_BRUSH_INPUT_DIRECTION_ANGLE,
MYPAINT_BRUSH_INPUT_ATTACK_ANGLE,
MYPAINT_BRUSH_INPUT_TILT_DECLINATION,
MYPAINT_BRUSH_INPUT_TILT_ASCENSION,
MYPAINT_BRUSH_INPUT_GRIDMAP_X,
MYPAINT_BRUSH_INPUT_GRIDMAP_Y,
MYPAINT_BRUSH_INPUT_BRUSH_RADIUS,
MYPAINT_BRUSH_INPUT_CUSTOM,
MYPAINT_BRUSH_INPUTS_COUNT
} MyPaintBrushInput;
@ -23,12 +28,23 @@ typedef enum {
MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS,
MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS,
MYPAINT_BRUSH_SETTING_DABS_PER_SECOND,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE_X,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE_Y,
MYPAINT_BRUSH_SETTING_RADIUS_BY_RANDOM,
MYPAINT_BRUSH_SETTING_SPEED1_SLOWNESS,
MYPAINT_BRUSH_SETTING_SPEED2_SLOWNESS,
MYPAINT_BRUSH_SETTING_SPEED1_GAMMA,
MYPAINT_BRUSH_SETTING_SPEED2_GAMMA,
MYPAINT_BRUSH_SETTING_OFFSET_BY_RANDOM,
MYPAINT_BRUSH_SETTING_OFFSET_Y,
MYPAINT_BRUSH_SETTING_OFFSET_X,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_ASC,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_2,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_2_ASC,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_ADJ,
MYPAINT_BRUSH_SETTING_OFFSET_MULTIPLIER,
MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED,
MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED_SLOWNESS,
MYPAINT_BRUSH_SETTING_SLOW_TRACKING,
@ -93,6 +109,12 @@ typedef enum {
MYPAINT_BRUSH_STATE_DIRECTION_DY,
MYPAINT_BRUSH_STATE_DECLINATION,
MYPAINT_BRUSH_STATE_ASCENSION,
MYPAINT_BRUSH_STATE_DIRECTION_ANGLE_DX,
MYPAINT_BRUSH_STATE_DIRECTION_ANGLE_DY,
MYPAINT_BRUSH_STATE_ATTACK_ANGLE,
MYPAINT_BRUSH_STATE_FLIP,
MYPAINT_BRUSH_STATE_GRIDMAP_X,
MYPAINT_BRUSH_STATE_GRIDMAP_Y,
MYPAINT_BRUSH_STATES_COUNT
} MyPaintBrushState;

View file

@ -5,15 +5,6 @@
#include <mypaint-surface.h>
#include <mypaint-config.h>
typedef enum {
MYPAINT_SYMMETRY_TYPE_VERTICAL,
MYPAINT_SYMMETRY_TYPE_HORIZONTAL,
MYPAINT_SYMMETRY_TYPE_VERTHORZ,
MYPAINT_SYMMETRY_TYPE_ROTATIONAL,
MYPAINT_SYMMETRY_TYPE_SNOWFLAKE,
MYPAINT_SYMMETRY_TYPES_COUNT
} MyPaintSymmetryType;
G_BEGIN_DECLS
typedef struct MyPaintTiledSurface MyPaintTiledSurface;
@ -49,10 +40,7 @@ struct MyPaintTiledSurface {
MyPaintTileRequestStartFunction tile_request_start;
MyPaintTileRequestEndFunction tile_request_end;
gboolean surface_do_symmetry;
MyPaintSymmetryType symmetry_type;
float surface_center_x;
float surface_center_y;
int rot_symmetry_lines;
struct OperationQueue *operation_queue;
MyPaintRectangle dirty_bbox;
gboolean threadsafe_tile_requests;
@ -68,10 +56,7 @@ void
mypaint_tiled_surface_destroy(MyPaintTiledSurface *self);
void
mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active,
float center_x, float center_y,
MyPaintSymmetryType symmetry_type,
int rot_symmetry_lines);
mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active, float center_x);
float
mypaint_tiled_surface_get_alpha (MyPaintTiledSurface *self, float x, float y, float radius);

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3078c54ef5c185ca5fe25d9dddc15a258bf46357b1951132b042ef661b2bc936
size 1101423
oid sha256:78ce0b0eebff5c7f704ae64523409cf86a2469611ca7b0c55ab3310ef6cae73c
size 1309935

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fb73cf22089da6390c1def079b58e7b73cb27ce7902e48883f5becae20df97b2
size 333677
oid sha256:3e1e9a9bac8527f5db77898b2f72c44c3a61f1918e37434cd47c192d726e3219
size 603361

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:03e90abbbc0c72b3832b7cb1fb62df3bc41d9fc170caf1eec777a69857dffd29
size 216247
oid sha256:abd13e4ed73e2fc3939e3517b3f9805c02a1fb9bb54189d8f89a1358aa2fd984
size 428011

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:426748f0de42310541d59537396caf7f6e8c194b1c4481e29f5522407c4e0d32
size 306114
oid sha256:5b3daa24ead0959d6e9131abface32560b27d58031cc472b5183cc45fa5eaea3
size 637598

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7c2ce3325bab78ac76de865e39276ccc35b16b053224d5d651e007a8672c59de
oid sha256:8109a31daae0d3a55d9c64ebaa9170792f29bc7823cea6d8f9d3db130180fd60
size 86606

View file

@ -7,8 +7,13 @@ typedef enum {
MYPAINT_BRUSH_INPUT_RANDOM,
MYPAINT_BRUSH_INPUT_STROKE,
MYPAINT_BRUSH_INPUT_DIRECTION,
MYPAINT_BRUSH_INPUT_DIRECTION_ANGLE,
MYPAINT_BRUSH_INPUT_ATTACK_ANGLE,
MYPAINT_BRUSH_INPUT_TILT_DECLINATION,
MYPAINT_BRUSH_INPUT_TILT_ASCENSION,
MYPAINT_BRUSH_INPUT_GRIDMAP_X,
MYPAINT_BRUSH_INPUT_GRIDMAP_Y,
MYPAINT_BRUSH_INPUT_BRUSH_RADIUS,
MYPAINT_BRUSH_INPUT_CUSTOM,
MYPAINT_BRUSH_INPUTS_COUNT
} MyPaintBrushInput;
@ -23,12 +28,23 @@ typedef enum {
MYPAINT_BRUSH_SETTING_DABS_PER_BASIC_RADIUS,
MYPAINT_BRUSH_SETTING_DABS_PER_ACTUAL_RADIUS,
MYPAINT_BRUSH_SETTING_DABS_PER_SECOND,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE_X,
MYPAINT_BRUSH_SETTING_GRIDMAP_SCALE_Y,
MYPAINT_BRUSH_SETTING_RADIUS_BY_RANDOM,
MYPAINT_BRUSH_SETTING_SPEED1_SLOWNESS,
MYPAINT_BRUSH_SETTING_SPEED2_SLOWNESS,
MYPAINT_BRUSH_SETTING_SPEED1_GAMMA,
MYPAINT_BRUSH_SETTING_SPEED2_GAMMA,
MYPAINT_BRUSH_SETTING_OFFSET_BY_RANDOM,
MYPAINT_BRUSH_SETTING_OFFSET_Y,
MYPAINT_BRUSH_SETTING_OFFSET_X,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_ASC,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_2,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_2_ASC,
MYPAINT_BRUSH_SETTING_OFFSET_ANGLE_ADJ,
MYPAINT_BRUSH_SETTING_OFFSET_MULTIPLIER,
MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED,
MYPAINT_BRUSH_SETTING_OFFSET_BY_SPEED_SLOWNESS,
MYPAINT_BRUSH_SETTING_SLOW_TRACKING,
@ -93,6 +109,12 @@ typedef enum {
MYPAINT_BRUSH_STATE_DIRECTION_DY,
MYPAINT_BRUSH_STATE_DECLINATION,
MYPAINT_BRUSH_STATE_ASCENSION,
MYPAINT_BRUSH_STATE_DIRECTION_ANGLE_DX,
MYPAINT_BRUSH_STATE_DIRECTION_ANGLE_DY,
MYPAINT_BRUSH_STATE_ATTACK_ANGLE,
MYPAINT_BRUSH_STATE_FLIP,
MYPAINT_BRUSH_STATE_GRIDMAP_X,
MYPAINT_BRUSH_STATE_GRIDMAP_Y,
MYPAINT_BRUSH_STATES_COUNT
} MyPaintBrushState;

View file

@ -5,15 +5,6 @@
#include <mypaint-surface.h>
#include <mypaint-config.h>
typedef enum {
MYPAINT_SYMMETRY_TYPE_VERTICAL,
MYPAINT_SYMMETRY_TYPE_HORIZONTAL,
MYPAINT_SYMMETRY_TYPE_VERTHORZ,
MYPAINT_SYMMETRY_TYPE_ROTATIONAL,
MYPAINT_SYMMETRY_TYPE_SNOWFLAKE,
MYPAINT_SYMMETRY_TYPES_COUNT
} MyPaintSymmetryType;
G_BEGIN_DECLS
typedef struct MyPaintTiledSurface MyPaintTiledSurface;
@ -49,10 +40,7 @@ struct MyPaintTiledSurface {
MyPaintTileRequestStartFunction tile_request_start;
MyPaintTileRequestEndFunction tile_request_end;
gboolean surface_do_symmetry;
MyPaintSymmetryType symmetry_type;
float surface_center_x;
float surface_center_y;
int rot_symmetry_lines;
struct OperationQueue *operation_queue;
MyPaintRectangle dirty_bbox;
gboolean threadsafe_tile_requests;
@ -68,10 +56,7 @@ void
mypaint_tiled_surface_destroy(MyPaintTiledSurface *self);
void
mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active,
float center_x, float center_y,
MyPaintSymmetryType symmetry_type,
int rot_symmetry_lines);
mypaint_tiled_surface_set_symmetry_state(MyPaintTiledSurface *self, gboolean active, float center_x);
float
mypaint_tiled_surface_get_alpha (MyPaintTiledSurface *self, float x, float y, float radius);

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4093b53b91565729564d539403aca91737ee094f902be60b6e261d78a67f0fae
size 1157325
oid sha256:3b94187cac17bd48b4f144d9bba611755998d9bdfcd1078a823c0010e3c8560a
size 1362892

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8eb37af030cff310ff94a43b68a16e0336af0828b62d1bd35e9e26bb2d2aad69
size 404063
oid sha256:2a45496ef731b54d588ec162359e5e15d408e3b1a6cd1615178c83b0baf126d2
size 671955

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d8e9efd3f204804c88f362d20b182e3c222a025b28a811b8dc3abf627f6fd36
size 276980
oid sha256:01d84e22de39f5422aa41aa4e3d68b4474cfd47954209cb4bd004a55b180c57c
size 505255

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2747ff3cd4d107bcc7ddbd73099aac91b2b5bbcd69f1839f4d79418356d667b1
size 392455
oid sha256:b5573a9acc5735e33ee458d575bc8d37a1e441eaeeae0d73553d6d39d854a2ae
size 728685

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:704fc5310b5a3f0b7b77ce530f39a04b0d1c07d0cdfe26dad79159cf01f4a2a6
oid sha256:e037b8df494cdac7850aef76632d0fe91ec2583233ca25a2394433c99ec9db98
size 84848

View file

@ -31,11 +31,11 @@ echo ""
echo "checkout libmypaint"
echo ""
BRANCH="testing"
BRANCH="libmypaint-v1"
if [ -d "libmypaint/.git" ]; then
cd libmypaint && git fetch && git reset --hard "origin/$BRANCH" && cd ..
else
git clone https://github.com/blackwarthog/libmypaint.git --branch $BRANCH
git clone https://github.com/mypaint/libmypaint.git --branch $BRANCH
fi
cd ..

View file

@ -64,7 +64,8 @@ export LDFLAGS="-L$PREFIX/lib $LDFLAGS"
export CFLAGS="-I$PREFIX/include $CFLAGS"
export CPPFLAGS="-I$PREFIX/include $CPPFLAGS"
export CXXFLAGS="-I$PREFIX/include $CXXFLAGS"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG="/usr/bin/pkg-config"
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig"
export PKG_CONFIG_LIBDIR="$PREFIX/lib:$PKG_CONFIG_LIBDIR"
export PKG_CONFIG_SYSROOT_DIR="/"
export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"

View file

@ -203,7 +203,10 @@ elseif(BUILD_ENV_UNIXLIKE)
find_package(Qt5Widgets)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++ -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
if (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++")
endif()
endif()
add_definitions(
@ -277,7 +280,7 @@ macro(_find_toonz_library OUT_LIB_LIST IN_LIB_LIST)
unset(COREPATH CACHE)
# find cmake
if(BUILD_ENV_APPLE)
set(LIBPATH ${CMAKE_CURRENT_BINARY_DIR}/../${arg}/lib${arg}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(LIBPATH "\$<TARGET_FILE:${arg}>")
else()
set(LIBPATH ${arg})
endif()

View file

@ -33,10 +33,9 @@ using namespace TVER;
namespace {
const std::map<std::string, std::string> systemPathMap{
{"LIBRARY", "library"}, {"STUDIOPALETTE", "studiopalette"},
{"FXPRESETS", "fxs"}, {"CACHEROOT", "cache"},
{"PROFILES", "profiles"}, {"CONFIG", "config"},
{"PROJECTS", "projects"}};
{"LIBRARY", "library"}, {"STUDIOPALETTE", "studiopalette"},
{"FXPRESETS", "fxs"}, {"PROFILES", "profiles"},
{"CONFIG", "config"}, {"PROJECTS", "projects"}};
class EnvGlobals { // singleton
@ -171,6 +170,9 @@ public:
}
m_applicationFullName = m_version.getAppName() + " " + m_applicationVersion;
if (m_version.hasAppNote())
m_applicationFullName += " " + m_version.getAppNote();
m_moduleName = m_version.getAppName();
m_rootVarName = toUpper(m_version.getAppName()) + "ROOT";
#ifdef _WIN32
@ -467,7 +469,7 @@ Variable::Variable(std::string name)
Variable::Variable(std::string name, std::string defaultValue)
: m_imp(VariableSet::instance()->getImp(name)) {
// assert(!m_imp->m_defaultDefined);
m_imp->m_defaultDefined = true;
m_imp->m_defaultDefined = true;
if (!m_imp->m_loaded) m_imp->m_value = defaultValue;
}
@ -564,11 +566,11 @@ TFilePathSet TEnv::getSystemVarPathSetValue(std::string varName) {
TFilePathSet lst;
EnvGlobals *eg = EnvGlobals::instance();
// if the path is registered by command line argument, then use it
std::string value = eg->getArgPathValue(varName);
std::string value = eg->getArgPathValue(varName);
if (value == "") value = eg->getSystemVarValue(varName);
int len = (int)value.size();
int i = 0;
int j = value.find(';');
int len = (int)value.size();
int i = 0;
int j = value.find(';');
while (j != std::string::npos) {
std::string s = value.substr(i, j - i);
lst.push_back(TFilePath(s));

View file

@ -34,8 +34,8 @@ public:
return CellPosition(_frame * mult._frame, _layer * mult._layer);
}
void ensureValid() {
if (_frame < 0) _frame = 0;
if (_layer < 0) _layer = 0;
if (_frame < 0) _frame = 0;
if (_layer < -1) _layer = -1;
}
};

View file

@ -42,10 +42,10 @@ class DVAPI ColumnFan {
std::map<int, int> m_table;
int m_firstFreePos;
int m_unfolded, m_folded;
bool m_cameraActive;
/*!
Called by activate() and deactivate() to update columns coordinates.
*/
Called by activate() and deactivate() to update columns coordinates.
*/
void update();
public:

View file

@ -474,6 +474,15 @@ public:
currentColumnColor = m_currentColumnColor;
}
void enableXsheetCameraColumn(bool on);
bool isXsheetCameraColumnEnabled() const {
return m_showXsheetCameraColumn;
}
bool isXsheetCameraColumnVisible() const {
return m_showXsheetCameraColumn && m_showKeyframesOnXsheetCellArea;
}
// Animation tab
void setKeyframeType(int s);
@ -731,6 +740,8 @@ private:
int m_backupKeepCount;
bool m_showXsheetCameraColumn = true;
int m_levelBasedToolsDisplay;
private:

View file

@ -39,6 +39,7 @@ public:
int getColumnIndex() const { return m_columnIndex; }
void setColumnIndex(int index);
void notifyColumnIndexSwitched() { emit columnIndexSwitched(); }
signals:
void columnIndexSwitched();

View file

@ -6,6 +6,7 @@
#include <memory>
#include "toonz/tstageobject.h"
#include "toonz/txsheet.h"
#undef DVAPI
#undef DVVAR
@ -141,14 +142,15 @@ TStageObjectId \b \e id.
Retrieves object's data from a tagged data stream \b \e is.
\sa saveData()
*/
void loadData(TIStream &is) override;
/*!
Saves object's data (name, center coords, etc ) to a tagged data
stream \b \e os saved on a file.
This method call iteratively all stage objects in the tree and save
their data.
*/
void saveData(TOStream &os, int occupiedColumnCount);
void loadData(TIStream &is, TXsheet *xsh);
void loadData(TIStream &is) override{}; // not used
/*!
Saves object's data (name, center coords, etc ) to a tagged data
stream \b \e os saved on a file.
This method call iteratively all stage objects in the tree and save
their data.
*/
void saveData(TOStream &os, int occupiedColumnCount, TXsheet *xsh);
void saveData(TOStream &os) override{}; // not used
/*!
Returns the numbers of the objects in the tree.

View file

@ -156,6 +156,9 @@ private:
TXshNoteSet *m_notes;
SoundProperties *m_soundProperties;
int m_cameraColumnIndex;
TXshColumn *m_cameraColumn;
DECLARE_CLASS_CODE
public:
@ -557,6 +560,12 @@ in TXsheetImp.
std::vector<int> columnIndices,
std::vector<TXshLevelP> levels, int rowsCount);
void setCameraColumnIndex(int index) { m_cameraColumnIndex = index; }
int getCameraColumnIndex() { return m_cameraColumnIndex; }
void setCameraColumnLocked(bool locked) { m_cameraColumn->lock(locked); }
bool isCameraColumnLocked() { return m_cameraColumn->isLocked(); }
protected:
bool checkCircularReferences(TXsheet *childCandidate);

View file

@ -38,11 +38,13 @@ public:
void notifyXsheetChanged() { emit xsheetChanged(); }
void notifyXsheetSwitched() { emit xsheetSwitched(); }
void notifyXsheetSoundChanged() { emit xsheetSoundChanged(); }
void changeXsheetCamera(int index) { emit xsheetCameraChange(index); }
signals:
void xsheetSwitched();
void xsheetChanged();
void xsheetSoundChanged();
void xsheetCameraChange(int);
};
#endif // TXSHEETHANDLE_H

View file

@ -110,6 +110,7 @@ protected slots:
void onSliderChanged(int value);
void onSliderReleased();
void onEditChanged(const QString &str);
void onEditFinished();
};
//=============================================================================

View file

@ -53,7 +53,7 @@ class ColorField;
class SpectrumField;
class ToneCurveField;
class CheckBox;
}
} // namespace DVGui
//=============================================================================
/*! \brief ParamField.
@ -385,16 +385,17 @@ protected slots:
// RGB Link Button
//-----------------------------------------------------------------------------
class DVAPI RgbLinkButton final : public QPushButton {
class DVAPI RgbLinkButtons final : public QWidget {
Q_OBJECT
PixelParamField *m_field1, *m_field2;
public:
RgbLinkButton(QString str, QWidget *parent, PixelParamField *field1,
PixelParamField *field2);
RgbLinkButtons(QString str1, QString str2, QWidget *parent,
PixelParamField *field1, PixelParamField *field2);
protected slots:
void onButtonClicked();
void onCopyButtonClicked();
void onSwapButtonClicked();
};
//=============================================================================
@ -517,7 +518,7 @@ protected:
signals:
void edited();
};
};
}; // namespace component
class DVAPI StringParamField final : public ParamField {
Q_OBJECT
@ -659,7 +660,7 @@ public:
protected slots:
void update_value(double);
};
}
} // namespace component
namespace component {
class DVAPI LineEdit_int final : public ParamField {

View file

@ -10,6 +10,8 @@ public:
std::string getAppName(void);
float getAppVersion(void);
float getAppRevision(void);
std::string getAppNote(void);
bool hasAppNote(void);
std::string getAppVersionString(void);
std::string getAppRevisionString(void);
std::string getAppVersionInfo(std::string msg);
@ -18,6 +20,7 @@ private:
const char *applicationName = "OpenToonz";
const float applicationVersion = 1.3;
const float applicationRevision = 0;
const char *applicationNote = "";
};
std::string ToonzVersion::getAppName(void) {
@ -32,6 +35,13 @@ float ToonzVersion::getAppRevision(void) {
float apprev = applicationRevision;
return apprev;
}
std::string ToonzVersion::getAppNote(void) {
std::string appnote = applicationNote;
return appnote;
}
bool ToonzVersion::hasAppNote(void) {
return *applicationNote != 0;
}
std::string ToonzVersion::getAppVersionString(void) {
char buffer[50];
sprintf(buffer, "%.1f", applicationVersion);
@ -49,6 +59,8 @@ std::string ToonzVersion::getAppVersionInfo(std::string msg) {
appinfo += " " + msg + " v";
appinfo += getAppVersionString();
appinfo += "." + getAppRevisionString();
if (hasAppNote())
appinfo += " " + std::string(applicationNote);
return appinfo;
}

View file

@ -224,7 +224,7 @@ int FarmControllerPort;
TFarmController *FarmController = 0;
string TaskId;
}
} // namespace
//========================================================================
//
// searchLevelsToCleanup
@ -491,6 +491,12 @@ int main(int argc, char *argv[]) {
// questo definisce la registry root e inizializza TEnv
TEnv::setRootVarName(rootVarName);
TEnv::setSystemVarPrefix(systemVarPrefix);
QCoreApplication::setOrganizationName("OpenToonz");
QCoreApplication::setOrganizationDomain("");
QCoreApplication::setApplicationName(
QString::fromStdString(TEnv::getApplicationName()));
TSystem::hasMainLoop(false);
int i;
for (i = 0; i < argc; i++) // tmsg must be set as soon as it's possible
@ -527,7 +533,7 @@ int main(int argc, char *argv[]) {
TVectorImagePatternStrokeStyle::setRootDir(libraryFolder);
TPalette::setRootDir(libraryFolder);
TImageStyle::setLibraryDir(libraryFolder);
TFilePath cacheRoot = ToonzFolder::getCacheRootFolder();
TFilePath cacheRoot = ToonzFolder::getCacheRootFolder();
if (cacheRoot.isEmpty()) cacheRoot = TEnv::getStuffDir() + "cache";
TImageCache::instance()->setRootDir(cacheRoot);

View file

@ -658,6 +658,11 @@ int main(int argc, char *argv[]) {
TEnv::setRootVarName(rootVarName);
TEnv::setSystemVarPrefix(systemVarPrefix);
QCoreApplication::setOrganizationName("OpenToonz");
QCoreApplication::setOrganizationDomain("");
QCoreApplication::setApplicationName(
QString::fromStdString(TEnv::getApplicationName()));
QHash<QString, QString>::const_iterator argItr =
argumentPathValues.constBegin();
while (argItr != argumentPathValues.constEnd()) {

View file

@ -200,7 +200,7 @@ elseif(BUILD_ENV_APPLE)
find_library(COCOA_LIB Cocoa)
set(EXTRA_LIBS
${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
"$<TARGET_FILE:tnzcore>"
${USB_LIB}
${TWAIN_LIB}
${IOKIT_LIB}

View file

@ -117,8 +117,8 @@ if(BUILD_ENV_MSVC)
)
elseif(BUILD_ENV_APPLE)
set(EXTRA_LIBS
${CMAKE_CURRENT_BINARY_DIR}/../tnzcore/libtnzcore.dylib
${CMAKE_CURRENT_BINARY_DIR}/../tnzbase/libtnzbase.dylib
"$<TARGET_FILE:tnzcore>"
"$<TARGET_FILE:tnzbase>"
)
target_link_libraries(tnzext

View file

@ -429,7 +429,8 @@ void ControlPointEditorTool::mouseMove(const TPointD &pos,
void ControlPointEditorTool::leftButtonDown(const TPointD &pos,
const TMouseEvent &e) {
m_pos = pos;
double maxDist = 5 * getPixelSize();
double pix = getPixelSize() * 2.0f;
double maxDist = 5 * pix;
double maxDist2 = maxDist * maxDist;
double dist2 = 0;
int pointIndex;

View file

@ -1417,7 +1417,7 @@ void EditTool::draw() {
tglColor(normalColor);
glPushMatrix();
TStageObjectId currentCamId =
xsh->getStageObjectTree()->getCurrentCameraId();
TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TAffine camParentAff = xsh->getParentPlacement(currentCamId, frame);
TAffine camAff = xsh->getPlacement(currentCamId, frame);
tglMultMatrix(camParentAff.inv() *
@ -1553,9 +1553,12 @@ m_foo.setFxHandle(getApplication()->getCurrentFx());
TStageObjectId objId = getObjectId();
if (objId == TStageObjectId::NoneId) {
int index = getColumnIndex();
if (index == -1) objId = TStageObjectId::CameraId(0);
objId = TStageObjectId::ColumnId(index);
int index = getColumnIndex();
TXsheet *xsh = TTool::getApplication()->getCurrentXsheet()->getXsheet();
if (index == -1)
objId = TStageObjectId::CameraId(xsh->getCameraColumnIndex());
else
objId = TStageObjectId::ColumnId(index);
}
TTool::getApplication()->getCurrentObject()->setObjectId(objId);
}

View file

@ -1128,7 +1128,8 @@ void FxGadgetController::onFxSwitched() {
if (referenceColumnIndex == -1) {
TObjectHandle *oh = m_tool->getApplication()->getCurrentObject();
if (!oh->getObjectId().isCamera()) {
oh->setObjectId(TStageObjectId::CameraId(0));
TXsheet *xsh = m_tool->getXsheet();
oh->setObjectId(TStageObjectId::CameraId(xsh->getCameraColumnIndex()));
}
enabled = true;
} else if (referenceColumnIndex == m_tool->getColumnIndex())

View file

@ -54,6 +54,7 @@ TEnv::DoubleVar FullcolorModifierSize("FullcolorModifierSize", 0);
TEnv::DoubleVar FullcolorModifierOpacity("FullcolorModifierOpacity", 100);
TEnv::IntVar FullcolorModifierEraser("FullcolorModifierEraser", 0);
TEnv::IntVar FullcolorModifierLockAlpha("FullcolorModifierLockAlpha", 0);
TEnv::StringVar FullcolorBrushPreset("FullcolorBrushPreset", "<custom>");
//----------------------------------------------------------------------------------
@ -195,16 +196,15 @@ void FullColorBrushTool::onActivate() {
if (m_firstTime) {
m_firstTime = false;
m_thickness.setValue(
TIntPairProperty::Value(FullcolorBrushMinSize, FullcolorBrushMaxSize));
m_pressure.setValue(FullcolorPressureSensitivity ? 1 : 0);
m_opacity.setValue(
TDoublePairProperty::Value(FullcolorMinOpacity, FullcolorMaxOpacity));
m_hardness.setValue(FullcolorBrushHardness);
m_modifierSize.setValue(FullcolorModifierSize);
m_modifierOpacity.setValue(FullcolorModifierOpacity);
m_modifierEraser.setValue(FullcolorModifierEraser ? true : false);
m_modifierLockAlpha.setValue(FullcolorModifierLockAlpha ? true : false);
std::wstring wpreset =
QString::fromStdString(FullcolorBrushPreset.getValue()).toStdWString();
if (wpreset != CUSTOM_WSTR) {
initPresets();
m_preset.setValue(wpreset);
loadPreset();
} else
loadLastBrush();
}
setWorkAndBackupImages();
@ -578,6 +578,23 @@ void FullColorBrushTool::setWorkAndBackupImages() {
//------------------------------------------------------------------
bool FullColorBrushTool::onPropertyChanged(std::string propertyName) {
if (m_propertyUpdating) return true;
updateCurrentStyle();
if (propertyName == "Preset:") {
if (m_preset.getValue() != CUSTOM_WSTR)
loadPreset();
else // Chose <custom>, go back to last saved brush settings
loadLastBrush();
FullcolorBrushPreset = m_preset.getValueAsString();
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
return true;
}
FullcolorBrushMinSize = m_thickness.getValue().first;
FullcolorBrushMaxSize = m_thickness.getValue().second;
FullcolorPressureSensitivity = m_pressure.getValue();
@ -589,17 +606,12 @@ bool FullColorBrushTool::onPropertyChanged(std::string propertyName) {
FullcolorModifierEraser = m_modifierEraser.getValue() ? 1 : 0;
FullcolorModifierLockAlpha = m_modifierLockAlpha.getValue() ? 1 : 0;
updateCurrentStyle();
if (propertyName == "Preset:") {
loadPreset();
getApplication()->getCurrentTool()->notifyToolChanged();
return true;
}
if (m_preset.getValue() != CUSTOM_WSTR) {
m_preset.setValue(CUSTOM_WSTR);
FullcolorBrushPreset = m_preset.getValueAsString();
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
}
return true;
@ -694,6 +706,21 @@ void FullColorBrushTool::removePreset() {
//------------------------------------------------------------------
void FullColorBrushTool::loadLastBrush() {
m_thickness.setValue(
TIntPairProperty::Value(FullcolorBrushMinSize, FullcolorBrushMaxSize));
m_pressure.setValue(FullcolorPressureSensitivity ? 1 : 0);
m_opacity.setValue(
TDoublePairProperty::Value(FullcolorMinOpacity, FullcolorMaxOpacity));
m_hardness.setValue(FullcolorBrushHardness);
m_modifierSize.setValue(FullcolorModifierSize);
m_modifierOpacity.setValue(FullcolorModifierOpacity);
m_modifierEraser.setValue(FullcolorModifierEraser ? true : false);
m_modifierLockAlpha.setValue(FullcolorModifierLockAlpha ? true : false);
}
//------------------------------------------------------------------
void FullColorBrushTool::updateCurrentStyle() {
m_currentColor = TPixel32::Black;
if (TTool::Application *app = getApplication()) {

View file

@ -76,6 +76,8 @@ public:
void addPreset(QString name);
void removePreset();
void loadLastBrush();
void onCanvasSizeChanged();
void onColorStyleChanged();
@ -120,6 +122,8 @@ protected:
bool m_firstTime;
bool m_mousePressed = false;
TMouseEvent m_mouseEvent;
bool m_propertyUpdating = false;
};
//------------------------------------------------------------

View file

@ -857,6 +857,11 @@ QString TTool::updateEnabled(int rowIndex, int columnIndex) {
Preferences::instance()->isMultiLayerStylePickerEnabled())
return (enable(true), QString());
// Check against camera column
if (!filmstrip && columnIndex < 0 && (targetType & TTool::EmptyTarget) &&
(m_name == T_Type || m_name == T_Geometric || m_name == T_Brush))
return (enable(false), QString());
// Check against unplaced columns (not in filmstrip mode)
if (column && !filmstrip) {
if (column->isLocked())

View file

@ -1130,6 +1130,11 @@ void ArrowToolOptionsBox::onCurrentStageObjectComboActivated(int index) {
}
// switch the current object
m_objHandle->setObjectId(id);
if (id.isCamera()) {
TXsheet *xsh = m_xshHandle->getXsheet();
if (xsh->getCameraColumnIndex() != id.getIndex())
m_xshHandle->changeXsheetCamera(id.getIndex());
}
}
//------------------------------------------------------------------------------

View file

@ -55,6 +55,7 @@ TEnv::IntVar RasterBrushPencilMode("InknpaintRasterBrushPencilMode", 0);
TEnv::IntVar BrushPressureSensitivity("InknpaintBrushPressureSensitivity", 1);
TEnv::DoubleVar RasterBrushHardness("RasterBrushHardness", 100);
TEnv::DoubleVar RasterBrushModifierSize("RasterBrushModifierSize", 0);
TEnv::StringVar RasterBrushPreset("RasterBrushPreset", "<custom>");
//-------------------------------------------------------------------
#define CUSTOM_WSTR L"<custom>"
@ -1125,17 +1126,16 @@ void ToonzRasterBrushTool::onActivate() {
if (!m_notifier) m_notifier = new ToonzRasterBrushToolNotifier(this);
if (m_firstTime) {
m_rasThickness.setValue(
TDoublePairProperty::Value(RasterBrushMinSize, RasterBrushMaxSize));
m_drawOrder.setIndex(BrushDrawOrder);
m_pencil.setValue(RasterBrushPencilMode ? 1 : 0);
m_hardness.setValue(RasterBrushHardness);
m_pressure.setValue(BrushPressureSensitivity ? 1 : 0);
m_firstTime = false;
m_smooth.setValue(BrushSmooth);
m_modifierSize.setValue(RasterBrushModifierSize);
std::wstring wpreset =
QString::fromStdString(RasterBrushPreset.getValue()).toStdWString();
if (wpreset != CUSTOM_WSTR) {
initPresets();
m_preset.setValue(wpreset);
loadPreset();
} else
loadLastBrush();
}
m_brushPad = ToolUtils::getBrushPad(m_rasThickness.getValue().second,
m_hardness.getValue() * 0.01);
@ -1201,7 +1201,7 @@ void ToonzRasterBrushTool::leftButtonDown(const TPointD &pos,
if (!app) return;
int col = app->getCurrentColumn()->getColumnIndex();
m_enabled = col >= 0;
m_enabled = col >= 0 || app->getCurrentFrame()->isEditingLevel();
// todo: gestire autoenable
if (!m_enabled) return;
@ -1936,11 +1936,22 @@ void ToonzRasterBrushTool::setWorkAndBackupImages() {
//------------------------------------------------------------------
bool ToonzRasterBrushTool::onPropertyChanged(std::string propertyName) {
// Set the following to true whenever a different piece of interface must
// be refreshed - done once at the end.
bool notifyTool = false;
if (m_propertyUpdating) return true;
/*--- 変更されたPropertyに合わせて処理を分ける ---*/
if (propertyName == m_preset.getName()) {
if (m_preset.getValue() != CUSTOM_WSTR)
loadPreset();
else // Chose <custom>, go back to last saved brush settings
loadLastBrush();
RasterBrushPreset = m_preset.getValueAsString();
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
return true;
}
/*--- Divide the process according to the changed Property ---*/
/*--- determine which type of brush to be modified ---*/
if (propertyName == m_rasThickness.getName()) {
@ -1951,9 +1962,6 @@ bool ToonzRasterBrushTool::onPropertyChanged(std::string propertyName) {
m_maxThick = m_rasThickness.getValue().second;
} else if (propertyName == m_smooth.getName()) {
BrushSmooth = m_smooth.getValue();
} else if (propertyName == m_preset.getName()) {
loadPreset();
notifyTool = true;
} else if (propertyName == m_drawOrder.getName()) {
BrushDrawOrder = m_drawOrder.getIndex();
} else if (propertyName == m_pencil.getName()) {
@ -1974,14 +1982,14 @@ bool ToonzRasterBrushTool::onPropertyChanged(std::string propertyName) {
invalidate(rect);
}
if (propertyName != m_preset.getName() &&
m_preset.getValue() != CUSTOM_WSTR) {
if (m_preset.getValue() != CUSTOM_WSTR) {
m_preset.setValue(CUSTOM_WSTR);
notifyTool = true;
RasterBrushPreset = m_preset.getValueAsString();
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
}
if (notifyTool) getApplication()->getCurrentTool()->notifyToolChanged();
return true;
}
@ -2071,6 +2079,21 @@ void ToonzRasterBrushTool::removePreset() {
m_preset.setValue(CUSTOM_WSTR);
}
//------------------------------------------------------------------
void ToonzRasterBrushTool::loadLastBrush() {
m_rasThickness.setValue(
TDoublePairProperty::Value(RasterBrushMinSize, RasterBrushMaxSize));
m_drawOrder.setIndex(BrushDrawOrder);
m_pencil.setValue(RasterBrushPencilMode ? 1 : 0);
m_hardness.setValue(RasterBrushHardness);
m_pressure.setValue(BrushPressureSensitivity ? 1 : 0);
m_smooth.setValue(BrushSmooth);
m_modifierSize.setValue(RasterBrushModifierSize);
}
//------------------------------------------------------------------
/*! Brush、PaintBrush、EraserToolがPencilModeのときにTrueを返す
*/

View file

@ -156,6 +156,8 @@ public:
void addPreset(QString name);
void removePreset();
void loadLastBrush();
void finishRasterBrush(const TPointD &pos, double pressureVal);
// return true if the pencil mode is active in the Brush / PaintBrush / Eraser
// Tools.
@ -221,6 +223,8 @@ protected:
QElapsedTimer m_brushTimer;
int m_minCursorThick, m_maxCursorThick;
bool m_propertyUpdating = false;
protected:
static void drawLine(const TPointD &point, const TPointD &centre,
bool horizontal, bool isDecimal);

View file

@ -57,6 +57,7 @@ TEnv::IntVar V_BrushPressureSensitivity("InknpaintBrushPressureSensitivity", 1);
TEnv::IntVar V_VectorBrushFrameRange("VectorBrushFrameRange", 0);
TEnv::IntVar V_VectorBrushSnap("VectorBrushSnap", 0);
TEnv::IntVar V_VectorBrushSnapSensitivity("VectorBrushSnapSensitivity", 0);
TEnv::StringVar V_VectorBrushPreset("VectorBrushPreset", "<custom>");
//-------------------------------------------------------------------
@ -587,33 +588,16 @@ void ToonzVectorBrushTool::updateTranslation() {
void ToonzVectorBrushTool::onActivate() {
if (m_firstTime) {
m_thickness.setValue(
TDoublePairProperty::Value(V_VectorBrushMinSize, V_VectorBrushMaxSize));
m_capStyle.setIndex(V_VectorCapStyle);
m_joinStyle.setIndex(V_VectorJoinStyle);
m_miterJoinLimit.setValue(V_VectorMiterValue);
m_breakAngles.setValue(V_BrushBreakSharpAngles ? 1 : 0);
m_accuracy.setValue(V_BrushAccuracy);
m_pressure.setValue(V_BrushPressureSensitivity ? 1 : 0);
m_firstTime = false;
m_smooth.setValue(V_BrushSmooth);
m_frameRange.setIndex(V_VectorBrushFrameRange);
m_snap.setValue(V_VectorBrushSnap);
m_snapSensitivity.setIndex(V_VectorBrushSnapSensitivity);
switch (V_VectorBrushSnapSensitivity) {
case 0:
m_minDistance2 = SNAPPING_LOW;
break;
case 1:
m_minDistance2 = SNAPPING_MEDIUM;
break;
case 2:
m_minDistance2 = SNAPPING_HIGH;
break;
}
std::wstring wpreset =
QString::fromStdString(V_VectorBrushPreset.getValue()).toStdWString();
if (wpreset != CUSTOM_WSTR) {
initPresets();
m_preset.setValue(wpreset);
loadPreset();
} else
loadLastBrush();
}
resetFrameRange();
// TODO:app->editImageOrSpline();
@ -628,7 +612,7 @@ void ToonzVectorBrushTool::onDeactivate() {
// End current stroke.
if (m_active && m_enabled) {
leftButtonUp(m_lastDragPos, m_lastDragEvent);
leftButtonUp(m_lastDragPos, m_lastDragEvent);
}
if (m_tileSaver && !m_isPath) {
@ -661,7 +645,7 @@ void ToonzVectorBrushTool::leftButtonDown(const TPointD &pos,
int col = app->getCurrentColumn()->getColumnIndex();
m_isPath = app->getCurrentObject()->isSpline();
m_enabled = col >= 0 || m_isPath;
m_enabled = col >= 0 || m_isPath || app->getCurrentFrame()->isEditingLevel();
// todo: gestire autoenable
if (!m_enabled) return;
if (!m_isPath) {
@ -725,7 +709,7 @@ void ToonzVectorBrushTool::leftButtonDrag(const TPointD &pos,
return;
}
m_lastDragPos = pos;
m_lastDragPos = pos;
m_lastDragEvent = e;
double thickness = (m_pressure.getValue() || m_isPath)
@ -1330,8 +1314,8 @@ void ToonzVectorBrushTool::checkGuideSnapping(bool beforeMousePress,
snapPoint.x = hGuide;
}
beforeMousePress ? m_foundFirstSnap = true : m_foundLastSnap = true;
beforeMousePress ? m_firstSnapPoint = snapPoint
: m_lastSnapPoint = snapPoint;
beforeMousePress ? m_firstSnapPoint = snapPoint : m_lastSnapPoint =
snapPoint;
}
}
}
@ -1454,11 +1438,26 @@ void ToonzVectorBrushTool::resetFrameRange() {
//------------------------------------------------------------------
bool ToonzVectorBrushTool::onPropertyChanged(std::string propertyName) {
if (m_propertyUpdating) return true;
// Set the following to true whenever a different piece of interface must
// be refreshed - done once at the end.
bool notifyTool = false;
/*--- 変更されたPropertyに合わせて処理を分ける ---*/
if (propertyName == m_preset.getName()) {
if (m_preset.getValue() != CUSTOM_WSTR)
loadPreset();
else // Chose <custom>, go back to last saved brush settings
loadLastBrush();
V_VectorBrushPreset = m_preset.getValueAsString();
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
return true;
}
/*--- Divide the process according to the changed Property ---*/
/*--- determine which type of brush to be modified ---*/
if (propertyName == m_thickness.getName()) {
@ -1470,9 +1469,6 @@ bool ToonzVectorBrushTool::onPropertyChanged(std::string propertyName) {
V_BrushAccuracy = m_accuracy.getValue();
} else if (propertyName == m_smooth.getName()) {
V_BrushSmooth = m_smooth.getValue();
} else if (propertyName == m_preset.getName()) {
loadPreset();
notifyTool = true;
} else if (propertyName == m_breakAngles.getName()) {
V_BrushBreakSharpAngles = m_breakAngles.getValue();
} else if (propertyName == m_pressure.getName()) {
@ -1507,13 +1503,17 @@ bool ToonzVectorBrushTool::onPropertyChanged(std::string propertyName) {
if (propertyName == m_joinStyle.getName()) notifyTool = true;
if (propertyName != m_preset.getName() &&
m_preset.getValue() != CUSTOM_WSTR) {
if (m_preset.getValue() != CUSTOM_WSTR) {
m_preset.setValue(CUSTOM_WSTR);
notifyTool = true;
V_VectorBrushPreset = m_preset.getValueAsString();
notifyTool = true;
}
if (notifyTool) getApplication()->getCurrentTool()->notifyToolChanged();
if (notifyTool) {
m_propertyUpdating = true;
getApplication()->getCurrentTool()->notifyToolChanged();
m_propertyUpdating = false;
}
return true;
}
@ -1605,6 +1605,37 @@ void ToonzVectorBrushTool::removePreset() {
m_preset.setValue(CUSTOM_WSTR);
}
//------------------------------------------------------------------
void ToonzVectorBrushTool::loadLastBrush() {
m_thickness.setValue(
TDoublePairProperty::Value(V_VectorBrushMinSize, V_VectorBrushMaxSize));
m_capStyle.setIndex(V_VectorCapStyle);
m_joinStyle.setIndex(V_VectorJoinStyle);
m_miterJoinLimit.setValue(V_VectorMiterValue);
m_breakAngles.setValue(V_BrushBreakSharpAngles ? 1 : 0);
m_accuracy.setValue(V_BrushAccuracy);
m_pressure.setValue(V_BrushPressureSensitivity ? 1 : 0);
m_smooth.setValue(V_BrushSmooth);
m_frameRange.setIndex(V_VectorBrushFrameRange);
m_snap.setValue(V_VectorBrushSnap);
m_snapSensitivity.setIndex(V_VectorBrushSnapSensitivity);
switch (V_VectorBrushSnapSensitivity) {
case 0:
m_minDistance2 = SNAPPING_LOW;
break;
case 1:
m_minDistance2 = SNAPPING_MEDIUM;
break;
case 2:
m_minDistance2 = SNAPPING_HIGH;
break;
}
}
//------------------------------------------------------------------
/*! Brush<73>APaintBrush<73>AEraserToolªPencilModeÌÆ«ÉTrueð•Ô·
*/

View file

@ -118,6 +118,8 @@ public:
void addPreset(QString name);
void removePreset();
void loadLastBrush();
// return true if the pencil mode is active in the Brush / PaintBrush / Eraser
// Tools.
bool isPencilModeActive() override;
@ -193,8 +195,10 @@ protected:
---*/
TFrameId m_workingFrameId;
TPointD m_lastDragPos; //!< Position where mouse was last dragged.
TMouseEvent m_lastDragEvent; //!< Previous mouse-drag event.
TPointD m_lastDragPos; //!< Position where mouse was last dragged.
TMouseEvent m_lastDragEvent; //!< Previous mouse-drag event.
bool m_propertyUpdating = false;
};
#endif // TOONZVECTORBRUSHTOOL_H

View file

@ -35,6 +35,9 @@
// For Qt translation support
#include <QCoreApplication>
#include <QClipboard>
#include <QApplication>
#include <QMimeData>
//#include "tw/message.h"
@ -1511,6 +1514,20 @@ void TypeTool::deleteKey() {
bool TypeTool::keyDown(QKeyEvent *event) {
QString text = event->text();
if ((event->modifiers() & Qt::ShiftModifier)) text.toUpper();
std::string keyStr =
QKeySequence(event->key() + event->modifiers()).toString().toStdString();
QAction *action = CommandManager::instance()->getActionFromShortcut(keyStr);
if (action) {
std::string actionId = CommandManager::instance()->getIdFromAction(action);
if (actionId == "MI_Paste") {
QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();
if (!mimeData->hasText()) return true;
text = mimeData->text().replace('\n', '\r');
}
}
std::wstring unicodeChar = text.toStdWString();
// per sicurezza
@ -1618,9 +1635,10 @@ bool TypeTool::keyDown(QKeyEvent *event) {
default:
if (unicodeChar.empty()) return false;
replaceText(unicodeChar, m_cursorIndex, m_cursorIndex);
m_cursorIndex++;
m_preeditRange = std::make_pair(m_cursorIndex, m_cursorIndex);
updateCharPositions(m_cursorIndex - 1);
int startIndex = m_cursorIndex + 1;
m_cursorIndex += unicodeChar.size();
m_preeditRange = std::make_pair(startIndex, m_cursorIndex);
updateCharPositions(startIndex - 1);
}
invalidate();

View file

@ -1,4 +1,4 @@
set(VERSION 1.3)
set(VERSION 1.3)
set(MOC_HEADERS
addfilmstripframespopup.h
@ -479,30 +479,30 @@ if(BUILD_ENV_APPLE)
message(" ==> App Bundle: " ${loc})
message(" ==> Mach-o: " ${bin})
foreach(lib ${EXTRA_LIBS})
message(" copy:" ${lib} "==>" ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz.app/Contents/MacOS/)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND cp ${lib} ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz.app/Contents/MacOS/)
message(" copy:" ${lib} "==>" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND cp ${lib} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endforeach()
add_custom_command(TARGET OpenToonz
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath @executable_path/. ${bin}
)
add_custom_command(TARGET OpenToonz
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath ${CMAKE_INSTALL_RPATH} ${bin}
)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz.app/Contents/Resources)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz.app/Contents/Resources)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/qss)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../install/SystemVar.ini ${CMAKE_CURRENT_BINARY_DIR}/OpenToonz.app/Contents/Resources)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tcomposer> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS tcomposer)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tcleanup> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS tcleanup)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tconverter> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS tconverter)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tfarmcontroller> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS tfarmcontroller)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tfarmserver> ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS tfarmserver)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../Resources)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../install/SystemVar.ini ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../Resources)
add_custom_command(TARGET OpenToonz POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../../../qss)
add_custom_command(TARGET OpenToonz
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath @executable_path/. ${bin} || true
)
add_custom_command(TARGET OpenToonz
POST_BUILD COMMAND
${CMAKE_INSTALL_NAME_TOOL} -add_rpath ${CMAKE_INSTALL_RPATH} ${bin} || true
)
elseif(BUILD_ENV_UNIXLIKE AND BUILD_TARGET_WIN)
# Setup files on Windows platform while cross compilation.
install(

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 74 44" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.25424,0,0,1.41935,0,-18.4516)">
<rect x="0" y="13" width="59" height="31" style="fill:rgb(36,100,162);fill-opacity:0;"/>
</g>
<path d="M27,26L27,25L21,25L21,24.985C16.541,24.726 13,21.023 13,16.5C13,11.809 16.809,8 21.5,8C25.68,8 29.159,11.023 29.868,15L31.012,15C31.004,14.834 31,14.668 31,14.5C31,8.705 35.705,4 41.5,4C47.295,4 52,8.705 52,14.5C52,19.434 48.59,23.577 44,24.7L44,25L36,25L36,26L40.385,26C41.276,26 42,26.631 42,27.409L42,37.591C42,38.369 41.277,39 40.385,39L22.615,39C21.724,39 21,38.369 21,37.591L21,27.409C21,26.631 21.724,26 22.615,26L27,26ZM59,38L56,38L49,35L43,35L43,30L49,30L56,27L59,27L59,38ZM15,29L20,29L20,32L15,32L15,33L14,33L14,28L15,28L15,29ZM21.5,14C22.88,14 24,15.12 24,16.5C24,17.88 22.88,19 21.5,19C20.12,19 19,17.88 19,16.5C19,15.12 20.12,14 21.5,14ZM41.5,11.5C43.432,11.5 45,13.068 45,15C45,16.932 43.432,18.5 41.5,18.5C39.568,18.5 38,16.932 38,15C38,13.068 39.568,11.5 41.5,11.5Z" style="fill:rgb(158,186,214);"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,24 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 20 20"
version="1.1"
xml:space="preserve"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996"
id="svg4"><metadata
id="metadata10"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs8" /><path
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1;stroke:#2c2c2c;stroke-opacity:0.7647059;stroke-width:2;stroke-dasharray:none"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
id="path824" /><path
id="path2"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1" /></svg>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<rect id="rect826" x="0" y="0" width="20" height="20" style="fill:rgb(230,230,230);fill-opacity:0;"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:none;stroke:rgb(44,44,44);stroke-opacity:0.76;stroke-width:2px;"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:rgb(230,230,230);"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1,30 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 20 20"
version="1.1"
xml:space="preserve"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996"
id="svg4"><metadata
id="metadata10"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs8" /><rect
y="0"
x="0"
height="20"
width="20"
id="rect826"
style="fill:#5385a6;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:1.41420996;stroke-dasharray:none;stroke-opacity:0.76470588" /><path
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1;stroke:#2c2c2c;stroke-opacity:0.7647059;stroke-width:2;stroke-dasharray:none"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
id="path824" /><path
id="path2"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1" /></svg>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<rect id="rect826" x="0" y="0" width="20" height="20" style="fill:rgb(83,133,166);"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:none;stroke:rgb(44,44,44);stroke-opacity:0.76;stroke-width:2px;"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:rgb(230,230,230);"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1,30 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 20 20"
version="1.1"
xml:space="preserve"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996"
id="svg4"><metadata
id="metadata10"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs8" /><rect
y="0"
x="0"
height="20"
width="20"
id="rect826"
style="fill:#e6e6e6;fill-opacity:0.29019609;stroke:none;stroke-width:2;stroke-miterlimit:1.41420996;stroke-dasharray:none;stroke-opacity:0.76470588" /><path
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1;stroke:#2c2c2c;stroke-opacity:0.7647059;stroke-width:2;stroke-dasharray:none"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
id="path824" /><path
id="path2"
d="m 3,6 h 11 v 3 l 2,-2 h 1 v 6 h -1 l -2,-2 v 3 H 3 Z"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996;fill:#e6e6e6;fill-opacity:1" /></svg>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<rect id="rect826" x="0" y="0" width="20" height="20" style="fill:rgb(230,230,230);fill-opacity:0.29;"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:none;stroke:rgb(44,44,44);stroke-opacity:0.76;stroke-width:2px;"/>
<path d="M12.487,16L5.513,16C5.23,16 5,15.715 5,15.364L5,14L3,14L3,12L5,12L5,11.636C5,11.285 5.23,11 5.513,11L8,11L8,10L6,10L5.99,10C4.339,9.995 3,8.653 3,7C3,5.344 4.344,4 6,4C7.656,4 9,5.344 9,7L10.036,7C10.012,6.837 10,6.67 10,6.5C10,4.568 11.568,3 13.5,3C15.432,3 17,4.568 17,6.5C17,8.432 15.432,10 13.5,10L11,10L11,11L12.487,11C12.77,11 13,11.285 13,11.636L13,13L16,11L17,11L17,16L16,16L13,14L13,15.364C13,15.715 12.77,16 12.487,16ZM13.5,5C14.328,5 15,5.672 15,6.5C15,7.328 14.328,8 13.5,8C12.672,8 12,7.328 12,6.5C12,5.672 12.672,5 13.5,5ZM6,6C6.552,6 7,6.448 7,7C7,7.552 6.552,8 6,8C5.448,8 5,7.552 5,7C5,6.448 5.448,6 6,6Z" style="fill:rgb(230,230,230);"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -122,7 +122,8 @@ void TCellKeyframeSelection::selectCellsKeyframes(int r0, int c0, int r1,
for (c = c0; c <= c1; c++)
for (r = r0; r <= r1; r++) {
TStageObjectId id =
c < 0 ? TStageObjectId::CameraId(0) : TStageObjectId::ColumnId(c);
c < 0 ? TStageObjectId::CameraId(xsh->getCameraColumnIndex())
: TStageObjectId::ColumnId(c);
TStageObject *stObj = xsh->getStageObject(id);
if (stObj->isKeyframe(r)) m_keyframeSelection->select(r, c);
}
@ -134,7 +135,8 @@ void TCellKeyframeSelection::selectCellKeyframe(int row, int col) {
m_cellSelection->selectCell(row, col);
TXsheet *xsh = m_xsheetHandle->getXsheet();
TStageObjectId id =
col < 0 ? TStageObjectId::CameraId(0) : TStageObjectId::ColumnId(col);
col < 0 ? TStageObjectId::CameraId(xsh->getCameraColumnIndex())
: TStageObjectId::ColumnId(col);
TStageObject *stObj = xsh->getStageObject(id);
m_keyframeSelection->clear();
if (stObj->isKeyframe(row)) m_keyframeSelection->select(row, col);

View file

@ -244,7 +244,8 @@ public:
DeleteCellsUndo(TCellSelection *selection, QMimeData *data) : m_data(data) {
int r0, c0, r1, c1;
selection->getSelectedCells(r0, c0, r1, c1);
m_selection = new TCellSelection();
if (c0 < 0) c0 = 0; // Ignore camera column
m_selection = new TCellSelection();
m_selection->selectCells(r0, c0, r1, c1);
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
@ -331,7 +332,8 @@ public:
CutCellsUndo(TCellSelection *selection) : m_data() {
int r0, c0, r1, c1;
selection->getSelectedCells(r0, c0, r1, c1);
m_selection = new TCellSelection();
if (c0 < 0) c0 = 0; // Ignore camera column
m_selection = new TCellSelection();
m_selection->selectCells(r0, c0, r1, c1);
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
@ -1675,7 +1677,7 @@ void TCellSelection::pasteCells() {
TKeyframeSelection selection;
if (isEmpty() &&
TApp::instance()->getCurrentObject()->getObjectId() ==
TStageObjectId::CameraId(0))
TStageObjectId::CameraId(xsh->getCameraColumnIndex()))
// Se la selezione e' vuota e l'objectId e' quello della camera sono nella
// colonna di camera quindi devo selezionare la row corrente e -1.
{
@ -1814,7 +1816,8 @@ void TCellSelection::deleteCells() {
if (isEmpty()) return;
int r0, c0, r1, c1;
getSelectedCells(r0, c0, r1, c1);
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
if (c0 < 0) c0 = 0; // Ignore camera column
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
// if all the selected cells are already empty, then do nothing
if (xsh->isRectEmpty(CellPosition(r0, c0), CellPosition(r1, c1))) return;
TCellData *data = new TCellData();
@ -1847,6 +1850,7 @@ void TCellSelection::cutCells(bool withoutCopy) {
int r0, c0, r1, c1;
getSelectedCells(r0, c0, r1, c1);
if (c0 < 0) c0 = 0; // Ignore camera column
undo->setCurrentData(r0, c0, r1, c1);
if (!withoutCopy) copyCellsWithoutUndo(r0, c0, r1, c1);
@ -1876,6 +1880,7 @@ void TCellSelection::insertCells() {
//-----------------------------------------------------------------------------
void TCellSelection::pasteKeyframesInto() {
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
const TKeyframeData *keyframeData = dynamic_cast<const TKeyframeData *>(
QApplication::clipboard()->mimeData());
if (keyframeData) {
@ -1885,7 +1890,7 @@ void TCellSelection::pasteKeyframesInto() {
TKeyframeSelection selection;
if (isEmpty() &&
TApp::instance()->getCurrentObject()->getObjectId() ==
TStageObjectId::CameraId(0))
TStageObjectId::CameraId(xsh->getCameraColumnIndex()))
// Se la selezione e' vuota e l'objectId e' quello della camera sono nella
// colonna di camera quindi devo selezionare la row corrente e -1.
{
@ -2408,6 +2413,7 @@ void TCellSelection::overWritePasteCells() {
void TCellSelection::overwritePasteNumbers() {
int r0, c0, r1, c1;
getSelectedCells(r0, c0, r1, c1);
if (c0 < 0) c0 = 0; // Ignore camera column
QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();

View file

@ -1237,7 +1237,9 @@ void TCellSelection::setKeyframes() {
const TXshCell &cell = xsh->getCell(row, col);
if (cell.getSoundLevel() || cell.getSoundTextLevel()) return;
const TStageObjectId &id = TStageObjectId::ColumnId(col);
const TStageObjectId &id =
col >= 0 ? TStageObjectId::ColumnId(col)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *obj = xsh->getStageObject(id);
if (!obj) return;

View file

@ -36,6 +36,7 @@
#include "toonz/tcamera.h"
#include "toonz/tstageobjectspline.h"
#include "toonz/fxcommand.h"
#include "toonz/preferences.h"
// TnzBase includes
#include "tfx.h"
@ -743,7 +744,14 @@ void ColumnCmd::insertEmptyColumns(const std::set<int> &indices,
bool insertAfter) {
// Filter out all less than 0 indices (in particular, the 'camera' column
// in the Toonz derivative product "Tab")
std::vector<int> positiveIndices(indices.lower_bound(0), indices.end());
std::vector<int> positiveIndices(indices.begin(), indices.end());
if (positiveIndices[0] < 0) {
if (!insertAfter) return;
// If inserting after on camera column, change it to insert before on column
// 1
positiveIndices[0] = 0;
insertAfter = false;
}
if (positiveIndices.empty()) return;
std::unique_ptr<ColumnCommandUndo> undo(
@ -809,6 +817,7 @@ void ColumnCmd::pasteColumns(std::set<int> &indices,
void ColumnCmd::deleteColumns(std::set<int> &indices, bool onlyColumns,
bool withoutUndo) {
indices.erase(-1); // Ignore camera column
if (indices.empty()) return;
if (!withoutUndo && !onlyColumns)
@ -1241,18 +1250,21 @@ public:
TTool::Viewer *viewer = tool ? tool->getViewer() : nullptr;
bool viewer_changed = false;
for (int i = 0; i < xsh->getColumnCount(); i++) {
/*- 空のカラムの場合は飛ばす -*/
if (xsh->isColumnEmpty(i)) continue;
/*- カラムが取得できなかったら飛ばす -*/
int startCol =
Preferences::instance()->isXsheetCameraColumnVisible() ? -1 : 0;
for (int i = startCol; i < xsh->getColumnCount(); i++) {
/*- Skip if empty column -*/
if (i >= 0 && xsh->isColumnEmpty(i)) continue;
/*- Skip if column cannot be obtained -*/
TXshColumn *column = xsh->getColumn(i);
if (!column) continue;
/*- ターゲットが選択カラムのモードで、選択されていなかった場合は飛ばす -*/
/*- Skip if target is in selected column mode and not selected -*/
bool isSelected = selection && selection->isColumnSelected(i);
if (m_target == TARGET_SELECTED && !isSelected) continue;
/*-
* iがカレントカラムより左の場合は飛ばす
* Skip if target is "right side of current column" mode and i is left of current column
* -*/
if (m_target == TARGET_UPPER && i < cc) continue;

View file

@ -18,6 +18,7 @@
#include "toonz/txshcell.h"
#include "toonz/levelproperties.h"
#include "orientation.h"
#include "toonz/preferences.h"
// TnzCore includes
#include "tvectorimage.h"
@ -49,6 +50,10 @@ void TColumnSelection::enableCommands() {
enableCommand(this, MI_CloneChild, &TColumnSelection::cloneChild);
enableCommand(this, MI_FoldColumns, &TColumnSelection::hideColumns);
if (Preferences::instance()->isShowKeyframesOnXsheetCellAreaEnabled())
enableCommand(this, MI_ToggleXsheetCameraColumn,
&TColumnSelection::toggleCameraColumn);
enableCommand(this, MI_Reframe1, &TColumnSelection::reframe1Cells);
enableCommand(this, MI_Reframe2, &TColumnSelection::reframe2Cells);
enableCommand(this, MI_Reframe3, &TColumnSelection::reframe3Cells);
@ -63,7 +68,10 @@ bool TColumnSelection::isEmpty() const { return m_indices.empty(); }
//-----------------------------------------------------------------------------
void TColumnSelection::copyColumns() { ColumnCmd::copyColumns(m_indices); }
void TColumnSelection::copyColumns() {
m_indices.erase(-1); // Ignore camera column
ColumnCmd::copyColumns(m_indices);
}
//-----------------------------------------------------------------------------
// pasteColumns will insert columns before the first column in the selection
@ -71,6 +79,8 @@ void TColumnSelection::pasteColumns() {
std::set<int> indices;
if (isEmpty()) // in case that no columns are selected
indices.insert(0);
else if (*m_indices.begin() < 0) // Do nothing
return;
else
indices.insert(*m_indices.begin());
ColumnCmd::pasteColumns(indices);
@ -114,6 +124,7 @@ void TColumnSelection::insertColumnsAbove() {
//-----------------------------------------------------------------------------
void TColumnSelection::collapse() {
m_indices.erase(-1); // Ignore camera column
if (m_indices.empty()) return;
SubsceneCmd::collapse(m_indices);
}
@ -130,6 +141,8 @@ void TColumnSelection::explodeChild() {
static bool canMergeColumns(int column, int mColumn, bool forMatchlines) {
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
if (column < 0 || mColumn < 0) return false;
if (!xsh || !xsh->getColumn(column) || xsh->getColumn(column)->isLocked())
return false;
@ -198,6 +211,8 @@ void TColumnSelection::selectColumn(int col, bool on) {
std::set<int>::iterator it = m_indices.begin();
int firstCol = *it;
if (firstCol < 0) return;
for (++it; it != m_indices.end(); ++it)
if (!canMergeColumns(firstCol, *it, false)) break;
@ -255,3 +270,11 @@ void TColumnSelection::hideColumns() {
// TApp::instance()->->notify(TColumnHeadChange());
app->getCurrentScene()->setDirtyFlag(true);
}
//-----------------------------------------------------------------------------
void TColumnSelection::toggleCameraColumn() {
Preferences *pref = Preferences::instance();
pref->enableXsheetCameraColumn(!pref->isXsheetCameraColumnVisible());
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
}

View file

@ -45,6 +45,7 @@ public:
void cloneChild();
void hideColumns();
void toggleCameraColumn();
void reframeCells(int count);
void reframe1Cells() { reframeCells(1); }

View file

@ -672,6 +672,14 @@ void FilmstripFrames::drawFrameIcon(QPainter &p, const QRect &r, int index,
QPixmap inbetweenPixmap(
svgToPixmap(":Resources/filmstrip_inbetween.svg"));
if (r.height() - 6 < inbetweenPixmap.height()) {
QSize rectSize(inbetweenPixmap.size());
rectSize.setHeight(r.height() - 6);
inbetweenPixmap = inbetweenPixmap.scaled(
rectSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
p.drawPixmap(
x0 + 2,
y1 - inbetweenPixmap.height() / inbetweenPixmap.devicePixelRatio() -
@ -914,6 +922,15 @@ void FilmstripFrames::mouseMoveEvent(QMouseEvent *e) {
pos = e->globalPos();
scroll((m_pos.y() - pos.y()) * 10);
m_pos = pos;
} else {
TFrameId fid = index2fid(index);
TXshSimpleLevel *sl = getLevel();
if (sl && m_selection && sl->getType() == PLI_XSHLEVEL &&
m_selection->isInInbetweenRange(fid) &&
e->pos().x() > width() - 20 - fs_rightMargin) {
setToolTip(tr("Auto Inbetween"));
}
}
}

View file

@ -324,7 +324,7 @@ bool beforeCellsInsert(TXsheet *xsh, int row, int &col, int rowCount,
}
int type = column ? column->getColumnType() : newLevelColumnType;
// If some used cells in range or column type mismatch must insert a column.
if (i < rowCount || newLevelColumnType != type) {
if (col < 0 || i < rowCount || newLevelColumnType != type) {
col += 1;
TApp::instance()->getCurrentColumn()->setColumnIndex(col);
shiftColumn = true;

View file

@ -42,7 +42,8 @@ void TKeyframeData::setKeyframes(std::set<Position> positions, TXsheet *xsh,
Position startPos) {
if (positions.empty()) return;
TStageObjectId cameraId = xsh->getStageObjectTree()->getCurrentCameraId();
TStageObjectId cameraId =
TStageObjectId::CameraId(xsh->getCameraColumnIndex());
std::set<Position>::iterator it = positions.begin();
int r0 = it->first;
@ -104,7 +105,8 @@ bool TKeyframeData::getKeyframes(std::set<Position> &positions,
XsheetViewer *viewer = TApp::instance()->getCurrentXsheetViewer();
positions.clear();
TStageObjectId cameraId = xsh->getStageObjectTree()->getCurrentCameraId();
TStageObjectId cameraId =
TStageObjectId::CameraId(xsh->getCameraColumnIndex());
Iterator it;
bool keyFrameChanged = false;
for (it = m_keyData.begin(); it != m_keyData.end(); ++it) {
@ -116,9 +118,7 @@ bool TKeyframeData::getKeyframes(std::set<Position> &positions,
if (column && column->getSoundColumn()) continue;
TStageObject *pegbar = xsh->getStageObject(
col >= 0 ? TStageObjectId::ColumnId(col) : cameraId);
if (pegbar->getId().isColumn() && xsh->getColumn(col) &&
xsh->getColumn(col)->isLocked())
continue;
if (xsh->getColumn(col) && xsh->getColumn(col)->isLocked()) continue;
keyFrameChanged = true;
assert(pegbar);

View file

@ -13,6 +13,7 @@
#include "toonz/txsheethandle.h"
#include "toonz/tscenehandle.h"
#include "toonz/txsheet.h"
#include "toonz/preferences.h"
// TnzCore includes
#include "tundo.h"
@ -48,7 +49,8 @@ void KeyframeMover::setKeyframes() {
for (auto const &key : m_lastKeyframes) {
int c = key.second;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
TStageObject::KeyframeMap keyframes;
stObj->getKeyframes(keyframes);
@ -66,7 +68,8 @@ void KeyframeMover::getKeyframes() {
for (auto const &pos : m_startSelectedKeyframes) {
int c = pos.second;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
assert(stObj->isKeyframe(pos.first));
TStageObject::KeyframeMap keyframes;
@ -115,7 +118,8 @@ bool KeyframeMover::moveKeyframes(
int c = posIt->second;
int r = posIt->first;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
if (r + dr < 0) {
dr = -r;
@ -140,7 +144,8 @@ bool KeyframeMover::moveKeyframes(
int c = revIt->second;
int r = revIt->first;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
if (m_qualifiers & eCopyKeyframes) {
firstTime = true;
@ -154,7 +159,8 @@ bool KeyframeMover::moveKeyframes(
int c = posIt->second;
int r = posIt->first;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
if (m_qualifiers & eCopyKeyframes) {
firstTime = true;
@ -178,7 +184,8 @@ bool KeyframeMover::moveKeyframes(
int c = posIt->second;
int r = posIt->first;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
if (r + dr < 0) dr = -r;
if (dr == 0) notChange = true;
@ -192,7 +199,8 @@ bool KeyframeMover::moveKeyframes(
int c = posIt->second;
int r = posIt->first;
TStageObjectId objId =
c >= 0 ? TStageObjectId::ColumnId(c) : TStageObjectId::CameraId(0);
c >= 0 ? TStageObjectId::ColumnId(c)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TStageObject *stObj = xsh->getStageObject(objId);
if (m_qualifiers & eOverwriteKeyframes) {
@ -266,13 +274,13 @@ KeyframeMoverTool::KeyframeMoverTool(XsheetViewer *viewer, bool justMovement)
, m_startSelection()
, m_offset(0)
, m_firstRow(0)
, m_firstCol(0)
, m_selecting(false)
, m_startPos()
, m_curPos()
, m_firstKeyframeMovement(false)
, m_justMovement(justMovement) {
m_mover = new KeyframeMover();
m_mover = new KeyframeMover();
m_firstCol = Preferences::instance()->isXsheetCameraColumnVisible() ? -1 : 0;
}
//-----------------------------------------------------------------------------
@ -297,7 +305,13 @@ void KeyframeMoverTool::ctrlSelect(int row, int col) {
void KeyframeMoverTool::shiftSelect(int row, int col) {
TXsheet *xsh = getViewer()->getXsheet();
int r0 = 0, c0 = 0, r1 = -1, c1 = -1;
for (int c = 0; c < xsh->getColumnCount(); c++) {
int c = 0;
if (Preferences::instance()->isXsheetCameraColumnVisible()) {
c0--;
c1--;
c--;
}
for (; c < xsh->getColumnCount(); c++) {
TStageObject *obj = xsh->getStageObject(getViewer()->getObjectId(c));
int ra, rb;
obj->getKeyframeRange(ra, rb);

View file

@ -48,7 +48,8 @@ bool shiftKeyframesWithoutUndo(int r0, int r1, int c0, int c1, bool cut) {
int x;
for (x = c0; x <= c1; x++) {
TStageObject *stObj = xsh->getStageObject(
x >= 0 ? TStageObjectId::ColumnId(x) : TStageObjectId::CameraId(0));
x >= 0 ? TStageObjectId::ColumnId(x)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex()));
std::set<int> keyToShift;
int kr0, kr1;
stObj->getKeyframeRange(kr0, kr1);
@ -90,8 +91,9 @@ bool deleteKeyframesWithoutUndo(
std::set<TKeyframeSelection::Position> *positions) {
TApp *app = TApp::instance();
assert(app);
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
TStageObjectId cameraId = xsh->getStageObjectTree()->getCurrentCameraId();
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
TStageObjectId cameraId =
TStageObjectId::CameraId(xsh->getCameraColumnIndex());
if (positions->empty()) return false;
@ -102,9 +104,7 @@ bool deleteKeyframesWithoutUndo(
int col = it->second;
TStageObject *pegbar = xsh->getStageObject(
col >= 0 ? TStageObjectId::ColumnId(col) : cameraId);
if (pegbar->getId().isColumn() && xsh->getColumn(col) &&
xsh->getColumn(col)->isLocked())
continue;
if (xsh->getColumn(col) && xsh->getColumn(col)->isLocked()) continue;
areAllColumnLocked = false;
assert(pegbar);
pegbar->removeKeyframeWithoutUndo(row);
@ -208,7 +208,9 @@ public:
}
void redo() const override {
deleteKeyframesWithoutUndo(&m_selection->getSelection());
TKeyframeSelection *tempSelection =
new TKeyframeSelection(m_selection->getSelection());
deleteKeyframesWithoutUndo(&tempSelection->getSelection());
if (m_r1 - m_r0 + 1 != 0)
shiftKeyframesWithoutUndo(m_r0, m_r1, m_c0, m_c1, true);
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
@ -251,10 +253,10 @@ void TKeyframeSelection::unselectLockedColumn() {
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
std::set<Position> positions;
std::set<Position>::iterator it;
for (it = m_positions.begin(); it != m_positions.end(); ++it) {
int col = it->second;
if (col >= 0 && xsh->getColumn(col) && xsh->getColumn(col)->isLocked())
continue;
if (xsh->getColumn(col) && xsh->getColumn(col)->isLocked()) continue;
positions.insert(*it);
}
m_positions.swap(positions);
@ -279,7 +281,8 @@ void TKeyframeSelection::setKeyframes() {
TApp *app = TApp::instance();
TXsheetHandle *xsheetHandle = app->getCurrentXsheet();
TXsheet *xsh = xsheetHandle->getXsheet();
TStageObjectId cameraId = xsh->getStageObjectTree()->getCurrentCameraId();
TStageObjectId cameraId =
TStageObjectId::CameraId(xsh->getCameraColumnIndex());
if (isEmpty()) return;
Position pos = *m_positions.begin();
int row = pos.first;
@ -314,7 +317,7 @@ void TKeyframeSelection::copyKeyframes() {
//-----------------------------------------------------------------------------
void TKeyframeSelection::pasteKeyframes() {
pasteKeyframesWithShift(0, 0, -1, -1);
pasteKeyframesWithShift(0, 0, 0, -1);
}
//-----------------------------------------------------------------------------

View file

@ -221,8 +221,10 @@ void LayerHeaderPanel::mouseReleaseEvent(QMouseEvent *event) {
bool sound_changed = false;
if (m_doOnRelease != 0 && totcols > 0) {
for (col = 0; col < totcols; col++) {
if (!xsh->isColumnEmpty(col)) {
int startCol =
Preferences::instance()->isXsheetCameraColumnVisible() ? -1 : 0;
for (col = startCol; col < totcols; col++) {
if (startCol < 0 || !xsh->isColumnEmpty(col)) {
TXshColumn *column = xsh->getColumn(col);
if (m_doOnRelease == ToggleAllPreviewVisible) {

View file

@ -523,12 +523,16 @@ bool LevelCreatePopup::apply() {
bool areColumnsShifted = false;
TXshCell cell = xsh->getCell(row, col);
bool isInRange = true;
for (i = row; i < row + numFrames; i++) {
if (!cell.isEmpty()) {
isInRange = false;
break;
if (col < 0)
isInRange = false;
else {
for (i = row; i < row + numFrames; i++) {
if (!cell.isEmpty()) {
isInRange = false;
break;
}
cell = xsh->getCell(i, col);
}
cell = xsh->getCell(i, col);
}
if (!validColumn) {
isInRange = false;

View file

@ -166,7 +166,7 @@ static void initToonzEnv(QHash<QString, QString> &argPathValues) {
QCoreApplication::setOrganizationName("OpenToonz");
QCoreApplication::setOrganizationDomain("");
QCoreApplication::setApplicationName(
QString::fromStdString(TEnv::getApplicationFullName()));
QString::fromStdString(TEnv::getApplicationName()));
/*-- TOONZROOTのPathの確認 --*/
// controllo se la xxxroot e' definita e corrisponde ad un folder esistente
@ -229,7 +229,7 @@ project->setUseScenePath(TProject::Extras, false);
// Imposto la rootDir per ImageCache
/*-- TOONZCACHEROOTの設定 --*/
TFilePath cacheDir = ToonzFolder::getCacheRootFolder();
TFilePath cacheDir = ToonzFolder::getCacheRootFolder();
if (cacheDir.isEmpty()) cacheDir = TEnv::getStuffDir() + "cache";
TImageCache::instance()->setRootDir(cacheDir);
}
@ -315,11 +315,10 @@ int main(int argc, char *argv[]) {
QApplication a(argc, argv);
#ifdef MACOSX
// This workaround is to avoid missing left button problem on Qt5.6.0.
// To invalidate m_rightButtonClicked in Qt/qnsview.mm, sending NSLeftButtonDown
// event
// before NSLeftMouseDragged event propagated to QApplication.
// See more details in ../mousedragfilter/mousedragfilter.mm.
// This workaround is to avoid missing left button problem on Qt5.6.0.
// To invalidate m_rightButtonClicked in Qt/qnsview.mm, sending
// NSLeftButtonDown event before NSLeftMouseDragged event propagated to
// QApplication. See more details in ../mousedragfilter/mousedragfilter.mm.
#include "mousedragfilter.h"

View file

@ -57,6 +57,7 @@
#include <QButtonGroup>
#include <QPushButton>
#include <QLabel>
#include <QMessageBox>
TEnv::IntVar ViewCameraToggleAction("ViewCameraToggleAction", 1);
TEnv::IntVar ViewTableToggleAction("ViewTableToggleAction", 1);
@ -459,6 +460,7 @@ centralWidget->setLayout(centralWidgetLayout);*/
&MainWindow::onNewToonzRasterLevelButtonPressed);
setCommandHandler("MI_NewRasterLevel", this,
&MainWindow::onNewRasterLevelButtonPressed);
setCommandHandler(MI_ClearCacheFolder, this, &MainWindow::clearCacheFolder);
// remove ffmpegCache if still exists from crashed exit
QString ffmpegCachePath =
ToonzFolder::getCacheRootFolder().getQString() + "//ffmpeg";
@ -1160,7 +1162,7 @@ void MainWindow::onMenuCheckboxChanged() {
#endif
else if (cm->getAction(MI_RasterizePli) == action) {
if (!QGLPixelBuffer::hasOpenGLPbuffers()) isChecked = 0;
RasterizePliToggleAction = isChecked;
RasterizePliToggleAction = isChecked;
} else if (cm->getAction(MI_SafeArea) == action)
SafeAreaToggleAction = isChecked;
else if (cm->getAction(MI_ViewColorcard) == action)
@ -1596,6 +1598,7 @@ void MainWindow::defineActions() {
createMenuAction(MI_LoadRecentImage, tr("&Load Recent Image Files"), files);
createMenuFileAction(MI_ClearRecentImage,
tr("&Clear Recent Flipbook Image List"), "");
createMenuFileAction(MI_ClearCacheFolder, tr("&Clear Cache Folder"), "");
createRightClickMenuAction(MI_PreviewFx, tr("Preview Fx"), "");
@ -1689,7 +1692,7 @@ void MainWindow::defineActions() {
tr("&Brightness and Contrast..."), "");
createMenuLevelAction(MI_LinesFade, tr("&Color Fade..."), "");
#ifdef LINETEST
createMenuLevelAction(MI_Capture, tr("&Capture"), "Space");
createMenuLevelAction(MI_Capture, tr("&Capture"), "");
#endif
QAction *action =
createMenuLevelAction(MI_CanvasSize, tr("&Canvas Size..."), "");
@ -1741,7 +1744,7 @@ void MainWindow::defineActions() {
mergeLevelsAction->setIcon(QIcon(":Resources/merge.svg"));
createMenuXsheetAction(MI_InsertFx, tr("&New FX..."), "Ctrl+F");
QAction *newOutputAction =
createMenuXsheetAction(MI_NewOutputFx, tr("&New Output"), "Ctrl+F");
createMenuXsheetAction(MI_NewOutputFx, tr("&New Output"), "Alt+O");
newOutputAction->setIcon(createQIconOnOff("output", false));
createRightClickMenuAction(MI_FxParamEditor, tr("&Edit FX..."), "Ctrl+K");
@ -1758,6 +1761,8 @@ void MainWindow::defineActions() {
"Alt+L");
createRightClickMenuAction(MI_ToggleXSheetToolbar,
tr("Toggle XSheet Toolbar"), "");
createRightClickMenuAction(MI_ToggleXsheetCameraColumn,
tr("Show/Hide Xsheet Camera Column"), "");
createMenuCellsAction(MI_Reverse, tr("&Reverse"), "");
createMenuCellsAction(MI_Swing, tr("&Swing"), "");
createMenuCellsAction(MI_Random, tr("&Random"), "");
@ -2334,6 +2339,96 @@ void MainWindow::onNewRasterLevelButtonPressed() {
Preferences::instance()->setDefLevelType(defaultLevelType);
}
//-----------------------------------------------------------------------------
// delete unused files / folders in the cache
void MainWindow::clearCacheFolder() {
// currently cache folder is used for following purposes
// 1. $CACHE/[ProcessID] : for disk swap of image cache.
// To be deleted on exit. Remains on crash.
// 2. $CACHE/ffmpeg : ffmpeg cache.
// To be cleared on the end of rendering, on exist and on launch.
// 3. $CACHE/temp : untitled scene data.
// To be deleted on switching or exiting scenes. Remains on crash.
// So, this function will delete all files / folders in $CACHE
// except the following items:
// 1. $CACHE/[Current ProcessID]
// 2. $CACHE/temp/[Current scene folder] if the current scene is untitled
TFilePath cacheRoot = ToonzFolder::getCacheRootFolder();
if (cacheRoot.isEmpty()) cacheRoot = TEnv::getStuffDir() + "cache";
TFilePathSet filesToBeRemoved;
TSystem::readDirectory(filesToBeRemoved, cacheRoot, false);
// keep the imagecache folder
filesToBeRemoved.remove(cacheRoot + std::to_string(TSystem::getProcessId()));
// keep the untitled scene data folder
if (TApp::instance()->getCurrentScene()->getScene()->isUntitled()) {
filesToBeRemoved.remove(cacheRoot + "temp");
TFilePathSet untitledData =
TSystem::readDirectory(cacheRoot + "temp", false);
untitledData.remove(TApp::instance()
->getCurrentScene()
->getScene()
->getScenePath()
.getParentDir());
filesToBeRemoved.insert(filesToBeRemoved.end(), untitledData.begin(),
untitledData.end());
}
// return if there is no files/folders to be deleted
if (filesToBeRemoved.size() == 0) {
QMessageBox::information(
this, tr("Clear Cache Folder"),
tr("There are no unused items in the cache folder."));
return;
}
QString message(tr("Deleting the following items:\n"));
int count = 0;
for (const auto &fileToBeRemoved : filesToBeRemoved) {
QString dirPrefix =
(TFileStatus(fileToBeRemoved).isDirectory()) ? tr("<DIR> ") : "";
message +=
" " + dirPrefix + (fileToBeRemoved - cacheRoot).getQString() + "\n";
count++;
if (count == 5) break;
}
if (filesToBeRemoved.size() > 5)
message +=
tr(" ... and %1 more items\n").arg(filesToBeRemoved.size() - 5);
message +=
tr("\nAre you sure?\n\nN.B. Make sure you are not running another "
"process of OpenToonz,\nor you may delete necessary files for it.");
QMessageBox::StandardButton ret = QMessageBox::question(
this, tr("Clear Cache Folder"), message,
QMessageBox::StandardButtons(QMessageBox::Ok | QMessageBox::Cancel));
if (ret != QMessageBox::Ok) return;
for (const auto &fileToBeRemoved : filesToBeRemoved) {
try {
if (TFileStatus(fileToBeRemoved).isDirectory())
TSystem::rmDirTree(fileToBeRemoved);
else
TSystem::deleteFile(fileToBeRemoved);
} catch (TException &e) {
QMessageBox::warning(
this, tr("Clear Cache Folder"),
tr("Can't delete %1 : ").arg(fileToBeRemoved.getQString()) +
QString::fromStdWString(e.getMessage()));
} catch (...) {
QMessageBox::warning(
this, tr("Clear Cache Folder"),
tr("Can't delete %1 : ").arg(fileToBeRemoved.getQString()));
}
}
}
//-----------------------------------------------------------------------------
class ReloadStyle final : public MenuItemHandler {
@ -2374,9 +2469,9 @@ RecentFiles::~RecentFiles() {}
void RecentFiles::addFilePath(QString path, FileType fileType,
QString projectName) {
QList<QString> files =
(fileType == Scene)
? m_recentScenes
: (fileType == Level) ? m_recentLevels : m_recentFlipbookImages;
(fileType == Scene) ? m_recentScenes : (fileType == Level)
? m_recentLevels
: m_recentFlipbookImages;
int i;
for (i = 0; i < files.size(); i++)
if (files.at(i) == path) {
@ -2543,9 +2638,9 @@ void RecentFiles::saveRecentFiles() {
QList<QString> RecentFiles::getFilesNameList(FileType fileType) {
QList<QString> files =
(fileType == Scene)
? m_recentScenes
: (fileType == Level) ? m_recentLevels : m_recentFlipbookImages;
(fileType == Scene) ? m_recentScenes : (fileType == Level)
? m_recentLevels
: m_recentFlipbookImages;
QList<QString> names;
int i;
for (i = 0; i < files.size(); i++) {
@ -2572,9 +2667,9 @@ void RecentFiles::refreshRecentFilesMenu(FileType fileType) {
menu->setEnabled(false);
else {
CommandId clearActionId =
(fileType == Scene)
? MI_ClearRecentScene
: (fileType == Level) ? MI_ClearRecentLevel : MI_ClearRecentImage;
(fileType == Scene) ? MI_ClearRecentScene : (fileType == Level)
? MI_ClearRecentLevel
: MI_ClearRecentImage;
menu->setActions(names);
menu->addSeparator();
QAction *clearAction = CommandManager::instance()->getAction(clearActionId);

View file

@ -112,6 +112,7 @@ public:
void onNewVectorLevelButtonPressed();
void onNewToonzRasterLevelButtonPressed();
void onNewRasterLevelButtonPressed();
void clearCacheFolder();
QString getLayoutName() { return m_layoutName; }

View file

@ -117,7 +117,7 @@ void RoomTabWidget::mouseReleaseEvent(QMouseEvent *event) {
//-----------------------------------------------------------------------------
/*! Set a text field with focus in event position to edit tab name.
*/
*/
void RoomTabWidget::mouseDoubleClickEvent(QMouseEvent *event) {
if (m_isLocked) return;
int index = tabAt(event->pos());
@ -1117,6 +1117,8 @@ QMenuBar *StackedMenuBar::createFullMenuBar() {
addMenuItem(fileMenu, MI_Preferences);
addMenuItem(fileMenu, MI_ShortcutPopup);
fileMenu->addSeparator();
addMenuItem(fileMenu, MI_ClearCacheFolder);
fileMenu->addSeparator();
addMenuItem(fileMenu, MI_Quit);
// Menu' EDIT

View file

@ -306,6 +306,7 @@
#define MI_ToggleColumnLocks "MI_ToggleColumnLocks"
#define MI_ToggleXSheetToolbar "MI_ToggleXSheetToolbar"
#define MI_FoldColumns "MI_FoldColumns"
#define MI_ToggleXsheetCameraColumn "MI_ToggleXsheetCameraColumn"
#define MI_ToggleCurrentTimeIndicator "MI_ToggleCurrentTimeIndicator"
#define MI_LoadIntoCurrentPalette "MI_LoadIntoCurrentPalette"
@ -345,5 +346,5 @@
#define MI_SeparateColors "MI_SeparateColors"
#define MI_OpenOnlineManual "MI_OpenOnlineManual"
#define MI_ClearCacheFolder "MI_ClearCacheFolder"
#endif

View file

@ -2631,7 +2631,7 @@ bool PencilTestPopup::importImage(QImage image) {
// if the level is newly created or imported, then insert a new column
if (state == NEWLEVEL) {
if (!xsh->isColumnEmpty(col)) {
if (col < 0 || !xsh->isColumnEmpty(col)) {
col += 1;
xsh->insertColumn(col);
}

View file

@ -381,7 +381,7 @@ void PreferencesPopup::onInterfaceFontChanged(int index) {
QString oldTypeface = m_interfaceFontStyle->currentText();
rebuilldFontStyleList();
if (!oldTypeface.isEmpty()) {
int newIndex = m_interfaceFontStyle->findText(oldTypeface);
int newIndex = m_interfaceFontStyle->findText(oldTypeface);
if (newIndex < 0) newIndex = 0;
m_interfaceFontStyle->setCurrentIndex(newIndex);
}
@ -504,7 +504,7 @@ void PreferencesPopup::onTranspCheckDataChanged(const TPixel32 &,
void PreferencesPopup::onOnionDataChanged(const TPixel32 &, bool isDragging) {
if (isDragging) return;
bool inksOnly = false;
bool inksOnly = false;
if (m_inksOnly) inksOnly = m_inksOnly->isChecked();
m_pref->setOnionData(m_frontOnionColor->getColor(),
m_backOnionColor->getColor(), inksOnly);
@ -517,7 +517,7 @@ void PreferencesPopup::onOnionDataChanged(const TPixel32 &, bool isDragging) {
//-----------------------------------------------------------------------------
void PreferencesPopup::onOnionDataChanged(int) {
bool inksOnly = false;
bool inksOnly = false;
if (m_inksOnly) inksOnly = m_inksOnly->isChecked();
m_pref->setOnionData(m_frontOnionColor->getColor(),
m_backOnionColor->getColor(), inksOnly);
@ -874,8 +874,9 @@ void PreferencesPopup::onShowFrameNumberWithLettersChanged(int index) {
//-----------------------------------------------------------------------------
void PreferencesPopup::onShowKeyframesOnCellAreaChanged(int index) {
m_pref->enableShowKeyframesOnXsheetCellArea(index == Qt::Checked);
void PreferencesPopup::onShowKeyframesOnCellAreaChanged(bool checked) {
m_pref->enableShowKeyframesOnXsheetCellArea(checked);
TApp::instance()->getCurrentScene()->notifyPreferenceChanged("XsheetCamera");
}
//-----------------------------------------------------------------------------
@ -1272,6 +1273,13 @@ void PreferencesPopup::onRasterBackgroundColorChanged(const TPixel32 &color,
m_pref->setRasterBackgroundColor(color);
}
//---------------------------------------------------------------------------------------
void PreferencesPopup::onShowXsheetCameraColumnChanged(int index) {
m_pref->enableXsheetCameraColumn(index == Qt::Checked);
TApp::instance()->getCurrentScene()->notifyPreferenceChanged("XsheetCamera");
}
//-----------------------------------------------------------------------------
void PreferencesPopup::onLevelBasedToolsDisplayChanged(int index) {
@ -1529,8 +1537,9 @@ PreferencesPopup::PreferencesPopup()
m_cellsDragBehaviour = new QComboBox();
CheckBox *ignoreAlphaonColumn1CB =
new CheckBox(tr("Ignore Alpha Channel on Levels in Column 1"), this);
CheckBox *showKeyframesOnCellAreaCB =
new CheckBox(tr("Show Keyframes on Cell Area"), this);
m_showKeyframesOnCellAreaCB =
new QGroupBox(tr("Show Keyframes on Cell Area"), this);
m_showKeyframesOnCellAreaCB->setCheckable(true);
CheckBox *useArrowKeyToShiftCellSelectionCB =
new CheckBox(tr("Use Arrow Key to Shift Cell Selection"), this);
CheckBox *inputCellsWithoutDoubleClickingCB =
@ -1569,6 +1578,8 @@ PreferencesPopup::PreferencesPopup()
m_pref->getCurrentColumnData(currectColumnColor);
m_currentColumnColor = new ColorField(this, false, currectColumnColor);
CheckBox *showXsheetCameraCB = new CheckBox(tr("Show Camera Column"), this);
//--- Animation ------------------------------
categoryList->addItem(tr("Animation"));
@ -1929,7 +1940,7 @@ PreferencesPopup::PreferencesPopup()
m_cellsDragBehaviour->addItem(tr("Cells and Column Data"));
m_cellsDragBehaviour->setCurrentIndex(m_pref->getDragCellsBehaviour());
ignoreAlphaonColumn1CB->setChecked(m_pref->isIgnoreAlphaonColumn1Enabled());
showKeyframesOnCellAreaCB->setChecked(
m_showKeyframesOnCellAreaCB->setChecked(
m_pref->isShowKeyframesOnXsheetCellAreaEnabled());
useArrowKeyToShiftCellSelectionCB->setChecked(
m_pref->isUseArrowKeyToShiftCellSelectionEnabled());
@ -1944,6 +1955,7 @@ PreferencesPopup::PreferencesPopup()
m_pref->isSyncLevelRenumberWithXsheetEnabled());
showCurrentTimelineCB->setChecked(
m_pref->isCurrentTimelineIndicatorEnabled());
showXsheetCameraCB->setChecked(m_pref->isXsheetCameraColumnEnabled());
//--- Animation ------------------------------
QStringList list;
@ -2566,7 +2578,16 @@ PreferencesPopup::PreferencesPopup()
Qt::AlignLeft | Qt::AlignVCenter);
xsheetFrameLay->addWidget(ignoreAlphaonColumn1CB, 4, 0, 1, 2);
xsheetFrameLay->addWidget(showKeyframesOnCellAreaCB, 5, 0, 1, 2);
QVBoxLayout *showKeyframesOnCellAreaCBLay = new QVBoxLayout();
showKeyframesOnCellAreaCBLay->setMargin(11);
{
showKeyframesOnCellAreaCBLay->addWidget(
showXsheetCameraCB, 0, Qt::AlignLeft | Qt::AlignVCenter);
}
m_showKeyframesOnCellAreaCB->setLayout(showKeyframesOnCellAreaCBLay);
xsheetFrameLay->addWidget(m_showKeyframesOnCellAreaCB, 5, 0, 1, 2);
xsheetFrameLay->addWidget(useArrowKeyToShiftCellSelectionCB, 6, 0, 1,
2);
xsheetFrameLay->addWidget(inputCellsWithoutDoubleClickingCB, 7, 0, 1,
@ -3035,8 +3056,8 @@ PreferencesPopup::PreferencesPopup()
SLOT(onXsheetStepChanged()));
ret = ret && connect(m_cellsDragBehaviour, SIGNAL(currentIndexChanged(int)),
SLOT(onDragCellsBehaviourChanged(int)));
ret = ret && connect(showKeyframesOnCellAreaCB, SIGNAL(stateChanged(int)),
this, SLOT(onShowKeyframesOnCellAreaChanged(int)));
ret = ret && connect(m_showKeyframesOnCellAreaCB, SIGNAL(clicked(bool)), this,
SLOT(onShowKeyframesOnCellAreaChanged(bool)));
ret = ret &&
connect(useArrowKeyToShiftCellSelectionCB, SIGNAL(stateChanged(int)),
SLOT(onUseArrowKeyToShiftCellSelectionClicked(int)));
@ -3065,6 +3086,9 @@ PreferencesPopup::PreferencesPopup()
SIGNAL(colorChanged(const TPixel32 &, bool)),
SLOT(onCurrentColumnDataChanged(const TPixel32 &, bool)));
ret = ret && connect(showXsheetCameraCB, SIGNAL(stateChanged(int)), this,
SLOT(onShowXsheetCameraColumnChanged(int)));
//--- Animation ----------------------
ret = ret && connect(m_keyframeType, SIGNAL(currentIndexChanged(int)),
SLOT(onKeyframeTypeChanged(int)));

View file

@ -84,7 +84,7 @@ private:
*m_newLevelToCameraSizeCB, *m_ignoreImageDpiCB,
*m_syncLevelRenumberWithXsheet, *m_downArrowInLevelStripCreatesNewFrame,
*m_enableAutoStretch, *m_enableWinInk, *m_enableTouchGestures,
*m_useOnionColorsForShiftAndTraceCB;
*m_useOnionColorsForShiftAndTraceCB, *m_showXsheetCameraColCB;
DVGui::FileField *m_customProjectRootFileField;
@ -92,7 +92,7 @@ private:
*m_lutPathFileField;
QGroupBox *m_autoSaveGroup, *m_showXSheetToolbar, *m_colorCalibration,
*m_backup;
*m_backup, *m_showKeyframesOnCellAreaCB;
DVGui::ColorField *m_currentColumnColor;
@ -195,7 +195,7 @@ private slots:
void onRemoveSceneNumberFromLoadedLevelNameChanged(int index);
void onShowRasterImageDarkenBlendedInViewerChanged(int index);
void onShowFrameNumberWithLettersChanged(int index);
void onShowKeyframesOnCellAreaChanged(int);
void onShowKeyframesOnCellAreaChanged(bool);
void onFfmpegPathChanged();
void onFfmpegTimeoutChanged();
void onFastRenderPathChanged();
@ -226,6 +226,7 @@ private slots:
void onEnableWinInkChanged(int index);
void onRasterBackgroundColorChanged(const TPixel32 &, bool isDragging);
void onBackupKeepCountChanged();
void onShowXsheetCameraColumnChanged(int index);
void onLevelBasedToolsDisplayChanged(int);
};

View file

@ -509,6 +509,11 @@ void TApp::onColumnIndexSwitched() {
int columnIndex = m_currentColumn->getColumnIndex();
if (columnIndex >= 0)
m_currentObject->setObjectId(TStageObjectId::ColumnId(columnIndex));
else {
TXsheet *xsh = getCurrentXsheet()->getXsheet();
m_currentObject->setObjectId(
TStageObjectId::CameraId(xsh->getCameraColumnIndex()));
}
}
//-----------------------------------------------------------------------------

View file

@ -26,6 +26,7 @@
<file>Resources/brush.svg</file>
<file>Resources/brush_rollover.svg</file>
<file>Resources/camera.png</file>
<file>Resources/camera.svg</file>
<file>Resources/camera_selected.png</file>
<file>Resources/camerastand_toggle.png</file>
<file>Resources/canvas.svg</file>

View file

@ -903,6 +903,7 @@ bool VectorizerPopup::apply() {
int r1 = 0;
int c1 = 0;
bool isCellSelection = getSelectedLevels(levels, r0, c0, r1, c1);
if (c0 < 0) c0 = 0;
if (levels.empty()) {
error(tr("The current selection is invalid."));
return false;

Some files were not shown because too many files have changed in this diff Show more