Fix conflicts with opentoonz master
23
appveyor.yml
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
// -----------------------------------------------------------------------------
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
room1.ini
|
||||
room2.ini
|
||||
room3.ini
|
||||
room9.ini
|
||||
room4.ini
|
||||
room5.ini
|
||||
room6.ini
|
||||
room7.ini
|
||||
room8.ini
|
||||
room9.ini
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
|
2
thirdparty/libmypaint/README
vendored
|
@ -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)
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
4
thirdparty/libmypaint/dist/32/libiconv-2.dll
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3078c54ef5c185ca5fe25d9dddc15a258bf46357b1951132b042ef661b2bc936
|
||||
size 1101423
|
||||
oid sha256:78ce0b0eebff5c7f704ae64523409cf86a2469611ca7b0c55ab3310ef6cae73c
|
||||
size 1309935
|
||||
|
|
4
thirdparty/libmypaint/dist/32/libintl-8.dll
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb73cf22089da6390c1def079b58e7b73cb27ce7902e48883f5becae20df97b2
|
||||
size 333677
|
||||
oid sha256:3e1e9a9bac8527f5db77898b2f72c44c3a61f1918e37434cd47c192d726e3219
|
||||
size 603361
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:03e90abbbc0c72b3832b7cb1fb62df3bc41d9fc170caf1eec777a69857dffd29
|
||||
size 216247
|
||||
oid sha256:abd13e4ed73e2fc3939e3517b3f9805c02a1fb9bb54189d8f89a1358aa2fd984
|
||||
size 428011
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:426748f0de42310541d59537396caf7f6e8c194b1c4481e29f5522407c4e0d32
|
||||
size 306114
|
||||
oid sha256:5b3daa24ead0959d6e9131abface32560b27d58031cc472b5183cc45fa5eaea3
|
||||
size 637598
|
||||
|
|
2
thirdparty/libmypaint/dist/32/libmypaint.lib
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7c2ce3325bab78ac76de865e39276ccc35b16b053224d5d651e007a8672c59de
|
||||
oid sha256:8109a31daae0d3a55d9c64ebaa9170792f29bc7823cea6d8f9d3db130180fd60
|
||||
size 86606
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
4
thirdparty/libmypaint/dist/64/libiconv-2.dll
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4093b53b91565729564d539403aca91737ee094f902be60b6e261d78a67f0fae
|
||||
size 1157325
|
||||
oid sha256:3b94187cac17bd48b4f144d9bba611755998d9bdfcd1078a823c0010e3c8560a
|
||||
size 1362892
|
||||
|
|
4
thirdparty/libmypaint/dist/64/libintl-8.dll
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8eb37af030cff310ff94a43b68a16e0336af0828b62d1bd35e9e26bb2d2aad69
|
||||
size 404063
|
||||
oid sha256:2a45496ef731b54d588ec162359e5e15d408e3b1a6cd1615178c83b0baf126d2
|
||||
size 671955
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d8e9efd3f204804c88f362d20b182e3c222a025b28a811b8dc3abf627f6fd36
|
||||
size 276980
|
||||
oid sha256:01d84e22de39f5422aa41aa4e3d68b4474cfd47954209cb4bd004a55b180c57c
|
||||
size 505255
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2747ff3cd4d107bcc7ddbd73099aac91b2b5bbcd69f1839f4d79418356d667b1
|
||||
size 392455
|
||||
oid sha256:b5573a9acc5735e33ee458d575bc8d37a1e441eaeeae0d73553d6d39d854a2ae
|
||||
size 728685
|
||||
|
|
2
thirdparty/libmypaint/dist/64/libmypaint.lib
vendored
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:704fc5310b5a3f0b7b77ce530f39a04b0d1c07d0cdfe26dad79159cf01f4a2a6
|
||||
oid sha256:e037b8df494cdac7850aef76632d0fe91ec2583233ca25a2394433c99ec9db98
|
||||
size 84848
|
||||
|
|
4
thirdparty/libmypaint/download-all.sh
vendored
|
@ -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 ..
|
||||
|
|
3
thirdparty/libmypaint/mingw-vars.sh
vendored
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -39,6 +39,7 @@ public:
|
|||
int getColumnIndex() const { return m_columnIndex; }
|
||||
void setColumnIndex(int index);
|
||||
|
||||
void notifyColumnIndexSwitched() { emit columnIndexSwitched(); }
|
||||
signals:
|
||||
|
||||
void columnIndexSwitched();
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -110,6 +110,7 @@ protected slots:
|
|||
void onSliderChanged(int value);
|
||||
void onSliderReleased();
|
||||
void onEditChanged(const QString &str);
|
||||
void onEditFinished();
|
||||
};
|
||||
|
||||
//=============================================================================
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
|
|
@ -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を返す
|
||||
*/
|
||||
|
|
|
@ -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 ¢re,
|
||||
bool horizontal, bool isDecimal);
|
||||
|
|
|
@ -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‚ð•Ô‚·
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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(
|
||||
|
|
8
toonz/sources/toonz/Resources/camera.svg
Normal 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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
void cloneChild();
|
||||
|
||||
void hideColumns();
|
||||
void toggleCameraColumn();
|
||||
|
||||
void reframeCells(int count);
|
||||
void reframe1Cells() { reframeCells(1); }
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -112,6 +112,7 @@ public:
|
|||
void onNewVectorLevelButtonPressed();
|
||||
void onNewToonzRasterLevelButtonPressed();
|
||||
void onNewRasterLevelButtonPressed();
|
||||
void clearCacheFolder();
|
||||
|
||||
QString getLayoutName() { return m_layoutName; }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|