Compare commits
244 commits
Author | SHA1 | Date | |
---|---|---|---|
|
2ca703e652 | ||
|
7a36fcc2ba | ||
|
3ca1ee1650 | ||
|
9efbe53238 | ||
|
298306ce08 | ||
|
ad0b8d6794 | ||
|
486d1b7335 | ||
|
d768075a26 | ||
|
01e586be62 | ||
|
c2b27fd2a1 | ||
|
12dba1a8b3 | ||
|
64a9e2cacb | ||
|
883087d161 | ||
|
4f6291a3f6 | ||
|
bce32121f0 | ||
|
d4ec14584d | ||
|
8f1e112858 | ||
|
81b6cfa537 | ||
|
8e6aa78884 | ||
|
6b70abaaf0 | ||
|
11dd7306d3 | ||
|
c2cf3cc9c7 | ||
|
59c525e9fe | ||
|
7eafae8cf7 | ||
|
d3a34cf5fc | ||
|
0a87f7b945 | ||
|
c9695521c7 | ||
|
43c45f7d98 | ||
|
e278d48380 | ||
|
06ece16b93 | ||
|
d448765d63 | ||
|
727cce5d8b | ||
|
7d89031273 | ||
|
f90dae0da0 | ||
|
ab8eb7c7e4 | ||
|
23e094d850 | ||
|
b89c1ddc80 | ||
|
785ac958a5 | ||
|
2ce5c3fcc5 | ||
|
3bd5ddbf2f | ||
|
a18b2c960b | ||
|
7da2375998 | ||
|
d674856b18 | ||
|
40d34b2d5b | ||
|
178dd16cf1 | ||
|
971a8b7b49 | ||
|
958b71afbb | ||
|
b05f1d9ca1 | ||
|
10aa6f6c3f | ||
|
728355d202 | ||
|
5e9ab4c7c7 | ||
|
b5c50e7660 | ||
|
09eaef4dbf | ||
|
70807fba3a | ||
|
3b6d3bef04 | ||
|
e431c161e7 | ||
|
caeaeac1f6 | ||
|
e38e05e95a | ||
|
426faddad7 | ||
|
f192b745dd | ||
|
1ed9b1ee10 | ||
|
931b471cf1 | ||
|
a31a014b5d | ||
|
4dc598455f | ||
|
bdcfc0467b | ||
|
6e79c6c4c3 | ||
|
eed641f5ff | ||
|
7bfb064e80 | ||
|
354680d125 | ||
|
ae6312c131 | ||
|
eefa46a2a2 | ||
|
932c299935 | ||
|
44642c347f | ||
|
a277e19334 | ||
|
274d95eef5 | ||
|
2cd4cb9334 | ||
|
16536eb940 | ||
|
d369806c94 | ||
|
b622bec2be | ||
|
6d39d3afd4 | ||
|
815a16e8ca | ||
|
5adf14590a | ||
|
9feafd64b1 | ||
|
036c159476 | ||
|
f9f7d64692 | ||
|
d6da284ddd | ||
|
2f5f401a37 | ||
|
a0ebae00c6 | ||
|
bb33d48ea1 | ||
|
3178f20804 | ||
|
1e4ba6a668 | ||
|
7c8d5d0d63 | ||
|
11bd41d000 | ||
|
57f74d4b20 | ||
|
f7fc899627 | ||
|
d7e41e7190 | ||
|
9ae336080e | ||
|
0b4f02779b | ||
|
1a456bc47b | ||
|
d41d4d53e7 | ||
|
7c207a1558 | ||
|
c9022a9089 | ||
|
5c9a1d4140 | ||
|
b1ad6d83f4 | ||
|
869d0c7dec | ||
|
4b0d30fbc4 | ||
|
8240cf55ef | ||
|
c347fb174c | ||
|
febb82e0e9 | ||
|
325757d4ee | ||
|
8880aca829 | ||
|
0e9dacd159 | ||
|
a7272191f4 | ||
|
d8d196b79d | ||
|
dc79d5d258 | ||
|
97d9c5c03e | ||
|
2ae87738fd | ||
|
dba3e524b3 | ||
|
91be6c1fa3 | ||
|
6b5d191746 | ||
|
76e5fd4834 | ||
|
2ec9012c07 | ||
|
6f74909a3c | ||
|
7c9fcb6616 | ||
|
8f6871dae0 | ||
|
c33e72f404 | ||
|
9b09637b47 | ||
|
2c65c22b30 | ||
|
b1814e0e3f | ||
|
4f4e8105cd | ||
|
baaf9c8c9d | ||
|
2f24d45ca4 | ||
|
d154f47d98 | ||
|
9927d66389 | ||
|
f70e77ab66 | ||
|
7a0ae53143 | ||
|
186e20171b | ||
|
cbd75dc20b | ||
|
403bade407 | ||
|
0b800c1201 | ||
|
63b77a1fdc | ||
|
7c73161ad0 | ||
|
256f6eed54 | ||
|
2c1d363925 | ||
|
724b35be95 | ||
|
1686167714 | ||
|
bb0071e8ca | ||
|
6fbc6d8d86 | ||
|
edb4a67994 | ||
|
4af1c4d463 | ||
|
b5c7f9f86b | ||
|
4e04e57c05 | ||
|
7eb3c17f4a | ||
|
2bb01a9988 | ||
|
a07517be83 | ||
|
13252f98f3 | ||
|
c8434c85b3 | ||
|
3bf237ff45 | ||
|
019a23b870 | ||
|
80497805a1 | ||
|
9ca5f6bc15 | ||
|
96b5fb1617 | ||
|
0012ea83e6 | ||
|
4c25813bd3 | ||
|
9efe67a72f | ||
|
29ed696d9e | ||
|
db598a43db | ||
|
3fa06229aa | ||
|
b60e54c07c | ||
|
1e09d08c9c | ||
|
f1cfc3c78e | ||
|
7c6b33da1b | ||
|
0aa7ddf27d | ||
|
6b0034e523 | ||
|
367198f98f | ||
|
1f78fb9c4f | ||
|
2fa3a9b398 | ||
|
391285aee8 | ||
|
db35ec2c79 | ||
|
18bdbc8a09 | ||
|
b28d4085ec | ||
|
cab710bb42 | ||
|
3af14307d3 | ||
|
06b6651e46 | ||
|
79955715dd | ||
|
1c2be70ff0 | ||
|
4a79114b98 | ||
|
0954fe26ff | ||
|
236ad9b73c | ||
|
bc454d6b13 | ||
|
34478e69d9 | ||
|
f46ac36a94 | ||
|
5bb0983c33 | ||
|
89fb4019a5 | ||
|
dc72643e09 | ||
|
70c6e414f1 | ||
|
6520189352 | ||
|
05beed21ca | ||
|
879bb44bc0 | ||
|
74e4e2647c | ||
|
22b4108a7f | ||
|
963b09c866 | ||
|
ad1b651f96 | ||
|
23b55a1074 | ||
|
858c807856 | ||
|
0296c22845 | ||
|
b620e3d816 | ||
|
abc433bc78 | ||
|
99eb92c3b2 | ||
|
cd5b1f98d2 | ||
|
c0f32c6a17 | ||
|
0f9c5873a2 | ||
|
a00558a0d1 | ||
|
263e45fe20 | ||
|
6041c46abf | ||
|
46ada32733 | ||
|
95c21a4572 | ||
|
3f7913b694 | ||
|
c0a46ae054 | ||
|
f4cd57c988 | ||
|
2d2b7f723b | ||
|
f485ebdd3e | ||
|
e79b6e2fca | ||
|
ac83e0fbe3 | ||
|
ff086a6fe6 | ||
|
2ea0590f6e | ||
|
5d98f8e2f8 | ||
|
d6f3bb1008 | ||
|
0ec8f4fee5 | ||
|
a14e70ef53 | ||
|
a4fdb0de64 | ||
|
f8c7ada585 | ||
|
72eb8f873f | ||
|
f7f06dab29 | ||
|
e2ff93e5e7 | ||
|
9918159caa | ||
|
de8b005d77 | ||
|
1497f42ab0 | ||
|
e2253939fc | ||
|
18eb3ceb1e | ||
|
90f8218c32 | ||
|
2bc51f1c29 | ||
|
917e61b98a | ||
|
61256d39ca |
54
.github/workflows/main.yml
vendored
|
@ -20,21 +20,14 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Cache Qt
|
|
||||||
id: cache-qt
|
|
||||||
uses: actions/cache@v1
|
|
||||||
with:
|
|
||||||
path: ../Qt
|
|
||||||
key: ${{ runner.os }}-QtCache
|
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v2
|
uses: jurplel/install-qt-action@v4
|
||||||
with:
|
with:
|
||||||
version: '5.14.2'
|
version: '5.14.2'
|
||||||
modules: 'qtwidgets qtqml'
|
modules: 'qtcharts'
|
||||||
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
cache: 'true'
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: qmake porymap.pro
|
run: qmake porymap.pro
|
||||||
|
@ -43,23 +36,22 @@ jobs:
|
||||||
run: make
|
run: make
|
||||||
|
|
||||||
build-macos:
|
build-macos:
|
||||||
runs-on: macos-latest
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-latest, macos-13]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
BUILD_NAME: porymap-${{ matrix.os }}-${{ github.ref_name }}
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Cache Qt
|
|
||||||
id: cache-qt
|
|
||||||
uses: actions/cache@v1
|
|
||||||
with:
|
|
||||||
path: ../Qt
|
|
||||||
key: ${{ runner.os }}-QtCache
|
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v4
|
||||||
with:
|
with:
|
||||||
version: '6.2.*'
|
version: '6.7.*'
|
||||||
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
modules: 'qtcharts'
|
||||||
|
cache: 'true'
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: qmake -config release porymap.pro
|
run: qmake -config release porymap.pro
|
||||||
|
@ -74,19 +66,19 @@ jobs:
|
||||||
- name: Prep Release Directory
|
- name: Prep Release Directory
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
run: |
|
run: |
|
||||||
mkdir porymap-macOS-${{ github.ref_name }}
|
mkdir $BUILD_NAME
|
||||||
cp porymap.dmg porymap-macOS-${{ github.ref_name }}/porymap.dmg
|
cp porymap.dmg $BUILD_NAME/porymap.dmg
|
||||||
cp RELEASE-README.txt porymap-macOS-${{ github.ref_name }}/README.txt
|
cp RELEASE-README.txt $BUILD_NAME/README.txt
|
||||||
|
|
||||||
- name: Bundle Release Directory
|
- name: Bundle Release Directory
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
run: zip -r porymap-macOS-${{ github.ref_name }}.zip porymap-macOS-${{ github.ref_name }}
|
run: zip -r $BUILD_NAME.zip $BUILD_NAME
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
with:
|
with:
|
||||||
files: porymap-macOS-${{ github.ref_name }}.zip
|
files: $BUILD_NAME.zip
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
@ -94,7 +86,7 @@ jobs:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: dsaltares/fetch-gh-release-asset@master
|
- uses: dsaltares/fetch-gh-release-asset@master
|
||||||
if: steps.cache-static-qt.outputs.cache-hit != 'true'
|
if: steps.cache-static-qt.outputs.cache-hit != 'true'
|
||||||
|
@ -152,7 +144,7 @@ jobs:
|
||||||
run: powershell.exe -Command "Compress-Archive -Path porymap-windows-${{ github.ref_name }} -DestinationPath porymap-windows-${{ github.ref_name }}.zip"
|
run: powershell.exe -Command "Compress-Archive -Path porymap-windows-${{ github.ref_name }} -DestinationPath porymap-windows-${{ github.ref_name }}.zip"
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
with:
|
with:
|
||||||
files: porymap-windows-${{ github.ref_name }}.zip
|
files: porymap-windows-${{ github.ref_name }}.zip
|
||||||
|
|
2
.gitignore
vendored
|
@ -8,9 +8,11 @@ porymap.app*
|
||||||
porymap
|
porymap
|
||||||
porymap.cfg
|
porymap.cfg
|
||||||
porymap.log
|
porymap.log
|
||||||
|
build/
|
||||||
|
|
||||||
# Qt generated files
|
# Qt generated files
|
||||||
ui_*.h
|
ui_*.h
|
||||||
moc_*.h
|
moc_*.h
|
||||||
moc_*.cpp
|
moc_*.cpp
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
|
.qtc_clangd
|
||||||
|
|
60
CHANGELOG.md
|
@ -7,7 +7,65 @@ and this project somewhat adheres to [Semantic Versioning](https://semver.org/sp
|
||||||
The **"Breaking Changes"** listed below are changes that have been made in the decompilation projects (e.g. pokeemerald), which porymap requires in order to work properly. It also includes changes to the scripting API that may change the behavior of existing porymap scripts. If porymap is used with a project or API script that is not up-to-date with the breaking changes, then porymap will likely break or behave improperly.
|
The **"Breaking Changes"** listed below are changes that have been made in the decompilation projects (e.g. pokeemerald), which porymap requires in order to work properly. It also includes changes to the scripting API that may change the behavior of existing porymap scripts. If porymap is used with a project or API script that is not up-to-date with the breaking changes, then porymap will likely break or behave improperly.
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
Nothing, yet.
|
### Added
|
||||||
|
- Redesigned the Connections tab, adding a number of new features including the option to open or display diving maps and a list UI for easier edit access.
|
||||||
|
- Add the ability to edit layouts with no corresponding map.
|
||||||
|
- Add a `Close Project` option
|
||||||
|
- Add charts to the `Wild Pokémon` tab that show species and level distributions.
|
||||||
|
- Add options for customizing the map grid under `View -> Grid Settings`.
|
||||||
|
- Add an option to display a dividing line between tilesets in the Tileset Editor.
|
||||||
|
- An alert will be displayed when attempting to open a seemingly invalid project.
|
||||||
|
- Add support for defining project values with `enum` where `#define` was expected.
|
||||||
|
- Add button to enable editing map groups including renaming groups and rearranging the maps within them.
|
||||||
|
- Add buttons to hide and show empty folders in each map tree view.
|
||||||
|
- Add a setting to specify the tile values to use for the unused metatile layer.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Edits to map connections now have Undo/Redo and can be viewed in exported timelapses.
|
||||||
|
- Changes to the "Mirror to Connecting Maps" setting will now be saved between sessions.
|
||||||
|
- A notice will be displayed when attempting to open the "Dynamic" map, rather than nothing happening.
|
||||||
|
- The base game version is now auto-detected if the project name contains only one of "emerald", "firered/leafgreen", or "ruby/sapphire".
|
||||||
|
- The max encounter rate is now read from the project, rather than assuming the default value from RSE.
|
||||||
|
- It's now possible to cancel quitting if there are unsaved changes in sub-windows.
|
||||||
|
- The triple-layer metatiles setting can now be set automatically using a project constant.
|
||||||
|
- `Export Map Stitch Image` now shows a preview of the full image, not just the current map.
|
||||||
|
- Maps and layouts were internally separated.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fix `Add Region Map...` not updating the region map settings file.
|
||||||
|
- Fix some crashes on invalid region map tilesets.
|
||||||
|
- Improve error reporting for invalid region map editor settings.
|
||||||
|
- Fix config files being written before the project is opened successfully.
|
||||||
|
- Fix the map and other project info still displaying if a new project fails to open.
|
||||||
|
- Fix unsaved changes being ignored when quitting (such as with Cmd+Q on macOS).
|
||||||
|
- Fix selections with multiple Events not always clearing when making a new selection.
|
||||||
|
- Fix `About porymap` opening a new window each time it's activated.
|
||||||
|
- Fix the `Edit History` window not raising to the front when reactivated.
|
||||||
|
- New maps are now always inserted in map dropdowns at the correct position, rather than at the bottom of the list until the project is reloaded.
|
||||||
|
- Fix invalid species names clearing from wild pokémon data when revisited.
|
||||||
|
- Fix editing wild pokémon data not marking the map as edited.
|
||||||
|
- Fix changes to map connections not marking connected maps as unsaved.
|
||||||
|
- Fix numerous issues related to connecting a map to itself.
|
||||||
|
- Fix incorrect map connections getting selected when opening a map by double-clicking a map connection.
|
||||||
|
- Fix a visual issue when quickly dragging map connections around.
|
||||||
|
- Fix map connections rendering incorrectly if their direction name was unknown.
|
||||||
|
- Fix map connections rendering incorrectly if their dimensions were smaller than the border draw distance.
|
||||||
|
- Fix metatile/collision selection images skewing off-center after opening a map from the Connections tab.
|
||||||
|
- Fix the map list filter retaining text between project open/close.
|
||||||
|
- Fix the map list mishandling value gaps when sorting by Area.
|
||||||
|
- Fix a freeze on startup if project values are defined with mismatched parentheses.
|
||||||
|
- Fix stitched map images sometimes rendering garbage
|
||||||
|
- Fix the `Reset` button on `Export Map Timelapse Image` not resetting the Timelapse settings.
|
||||||
|
- Stop sliders in the Palette Editor from creating a bunch of edit history when used.
|
||||||
|
- Fix scrolling on some containers locking up when the mouse stops over a spin box or combo box.
|
||||||
|
- Fix some file dialogs returning to an incorrect window when closed.
|
||||||
|
- Fix bug where reloading a layout would overwrite all unsaved changes.
|
||||||
|
- Fix bug where layout json and blockdata could be saved separately leading to inconsistent data.
|
||||||
|
- Fix crash when saving tilesets with fewer palettes than the maximum.
|
||||||
|
- Fix projects not opening on Windows if the project filepath contains certain characters.
|
||||||
|
- Fix exported tile images containing garbage pixels after the end of the tiles.
|
||||||
|
- Fix fully transparent pixels rendering with the incorrect color.
|
||||||
|
- Fix the values for some config fields shuffling their order every save.
|
||||||
|
|
||||||
## [5.4.1] - 2024-03-21
|
## [5.4.1] - 2024-03-21
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
11
INSTALL.md
|
@ -39,3 +39,14 @@ qmake
|
||||||
make
|
make
|
||||||
./porymap
|
./porymap
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Arch Linux
|
||||||
|
|
||||||
|
You need to install Qt. You can check the version of your Qt packages with `qtdiag` or `qmake --version`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pacman -S qt6-declarative qt6-charts
|
||||||
|
qmake
|
||||||
|
make
|
||||||
|
./porymap
|
||||||
|
```
|
||||||
|
|
|
@ -2,35 +2,40 @@
|
||||||
Editing Map Connections
|
Editing Map Connections
|
||||||
***********************
|
***********************
|
||||||
|
|
||||||
Maps can be connected together so that the player can seamlessly walk between them. These connections can be edited in the Connections tab.
|
Maps can be connected together so that the player can seamlessly walk between them. These connections can be edited in the Connections tab.
|
||||||
|
|
||||||
.. figure:: images/editing-map-connections/map-connections.png
|
.. figure:: images/editing-map-connections/map-connections.png
|
||||||
:alt: Map Connections View
|
:alt: Map Connections View
|
||||||
|
|
||||||
Map Connections View
|
Map Connections View
|
||||||
|
|
||||||
A connection has a direction, offset, and destination map. To add new connection, press the plus button |add-connection-button|. To delete a connection, select it and press the delete button |remove-connection-button|.
|
A connection has a direction, offset, and destination map. To add a new connection, press the |add-connection-button| button. To delete a connection you can either press the |remove-connection-button| button on its entry in the list, or select the connection and press the delete key.
|
||||||
|
|
||||||
|
The |open-connection-button| button will open the destination map. You may also open the destination map by double-clicking the connection itself (this can be done from the ``Map`` and ``Events`` tabs as well).
|
||||||
|
|
||||||
.. |add-connection-button|
|
.. |add-connection-button|
|
||||||
image:: images/editing-map-connections/add-connection-button.png
|
image:: images/editing-map-connections/add-connection-button.png
|
||||||
|
:height: 24
|
||||||
|
|
||||||
.. |remove-connection-button|
|
.. |remove-connection-button|
|
||||||
image:: images/editing-map-connections/remove-connection-button.png
|
image:: images/editing-map-connections/remove-connection-button.png
|
||||||
|
:height: 24
|
||||||
|
|
||||||
|
.. |open-connection-button|
|
||||||
|
image:: images/editing-map-connections/open-connection-button.png
|
||||||
|
:height: 24
|
||||||
|
|
||||||
To change the connection's vertical or horizontal offset, it's easiest to click and drag the connection to the desired offset.
|
To change the connection's vertical or horizontal offset, it's easiest to click and drag the connection to the desired offset.
|
||||||
|
|
||||||
Dive & Emerge Warps
|
Dive & Emerge Warps
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Dive & emerge warps are used for the HM move Dive. They don't have offsets or directions--only a destination map. To add a dive or emerge warp, simply add a value in the Dive Map and/or Emerge Map dropdown menus.
|
Dive & emerge warps are used for the HM move Dive. They don't have offsets or directions--only a destination map. To add a dive or emerge warp, simply add a value in the Dive Map and/or Emerge Map dropdown menus.
|
||||||
|
|
||||||
|
You can select the ``Show Emerge/Dive Maps`` checkbox to view your connected dive/emerge maps overlaid on the current map. The slider will change the opacity of this overlay. If you have both an emerge and a dive map connected you will see two sliders; the top slider is for the emerge map's opacity, and the bottom slider is for the dive map's opacity.
|
||||||
|
|
||||||
|
|
||||||
Mirror Connections
|
Mirror Connections
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
An extremely useful feature is the *Mirror to Connecting Maps* checkbox in the top-right corner. Connections are one-way, which means that you must keep the two connections in sync between the two maps. For example, Petalburg City has a west connection to Route 104, and Route 104 has an east connection to Petalburg City. If *Mirror to Connecting Maps* is enabled, then Porymap will automatically update both sides of the connection. Be sure to *File -> Save All* (``Ctrl+Shift+S``) when saving, since you will need to save both maps' connections.
|
An extremely useful feature is the *Mirror to Connecting Maps* checkbox in the top-right corner. Connections are one-way, which means that you must keep the two connections in sync between the two maps. For example, Petalburg City has a west connection to Route 104, and Route 104 has an east connection to Petalburg City. If *Mirror to Connecting Maps* is enabled, then Porymap will automatically update both sides of the connection. Be sure to *File -> Save All* (``Ctrl+Shift+S``) when saving, since you will need to save both maps' connections.
|
||||||
|
|
||||||
Follow Connections
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Double-clicking on a connection will open the destination map. This is very useful for navigating through your maps, similar to double-clicking on :ref:`Warp Events <event-warps>`.
|
|
||||||
|
|
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 431 KiB |
After Width: | Height: | Size: 5.5 KiB |
|
@ -59,7 +59,6 @@ The filepath that Porymap expects for each file can be overridden on the ``Files
|
||||||
include/constants/event_object_movement.h, yes, no, ``constants_obj_event_movement``,
|
include/constants/event_object_movement.h, yes, no, ``constants_obj_event_movement``,
|
||||||
include/constants/event_objects.h, yes, no, ``constants_obj_events``,
|
include/constants/event_objects.h, yes, no, ``constants_obj_events``,
|
||||||
include/constants/event_bg.h, yes, no, ``constants_event_bg``,
|
include/constants/event_bg.h, yes, no, ``constants_event_bg``,
|
||||||
include/constants/region_map_sections.h, yes, no, ``constants_region_map_sections``,
|
|
||||||
include/constants/metatile_labels.h, yes, yes, ``constants_metatile_labels``,
|
include/constants/metatile_labels.h, yes, yes, ``constants_metatile_labels``,
|
||||||
include/constants/metatile_behaviors.h, yes, no, ``constants_metatile_behaviors``,
|
include/constants/metatile_behaviors.h, yes, no, ``constants_metatile_behaviors``,
|
||||||
include/constants/species.h, yes, no, ``constants_metatile_behaviors``, for the Wild Pokémon tab
|
include/constants/species.h, yes, no, ``constants_metatile_behaviors``, for the Wild Pokémon tab
|
||||||
|
@ -67,6 +66,7 @@ The filepath that Porymap expects for each file can be overridden on the ``Files
|
||||||
include/fieldmap.h, yes, no, ``constants_fieldmap``, reads tileset related constants
|
include/fieldmap.h, yes, no, ``constants_fieldmap``, reads tileset related constants
|
||||||
src/fieldmap.c, yes, no, ``fieldmap``, reads ``symbol_attribute_table``
|
src/fieldmap.c, yes, no, ``fieldmap``, reads ``symbol_attribute_table``
|
||||||
src/event_object_movement.c, yes, no, ``initial_facing_table``, reads ``symbol_facing_directions``
|
src/event_object_movement.c, yes, no, ``initial_facing_table``, reads ``symbol_facing_directions``
|
||||||
|
src/wild_encounter.c, yes, no, ``wild_encounter``, reads ``define_max_encounter_rate``
|
||||||
src/pokemon_icon.c, yes, no, ``pokemon_icon_table``, reads files in ``symbol_pokemon_icon_table``
|
src/pokemon_icon.c, yes, no, ``pokemon_icon_table``, reads files in ``symbol_pokemon_icon_table``
|
||||||
graphics/pokemon/\*/icon.png, yes, no, ``pokemon_gfx``, to search for Pokémon icons if they aren't found in ``symbol_pokemon_icon_table``
|
graphics/pokemon/\*/icon.png, yes, no, ``pokemon_gfx``, to search for Pokémon icons if they aren't found in ``symbol_pokemon_icon_table``
|
||||||
|
|
||||||
|
@ -96,11 +96,13 @@ In addition to these files, there are some specific symbol and macro names that
|
||||||
``define_obj_event_count``, ``OBJECT_EVENT_TEMPLATES_COUNT``, to limit total Object Events
|
``define_obj_event_count``, ``OBJECT_EVENT_TEMPLATES_COUNT``, to limit total Object Events
|
||||||
``define_min_level``, ``MIN_LEVEL``, minimum wild encounters level
|
``define_min_level``, ``MIN_LEVEL``, minimum wild encounters level
|
||||||
``define_max_level``, ``MAX_LEVEL``, maximum wild encounters level
|
``define_max_level``, ``MAX_LEVEL``, maximum wild encounters level
|
||||||
|
``define_max_encounter_rate``, ``MAX_ENCOUNTER_RATE``, this value / 16 will be the maximum encounter rate on the ``Wild Pokémon`` tab
|
||||||
``define_tiles_primary``, ``NUM_TILES_IN_PRIMARY``,
|
``define_tiles_primary``, ``NUM_TILES_IN_PRIMARY``,
|
||||||
``define_tiles_total``, ``NUM_TILES_TOTAL``,
|
``define_tiles_total``, ``NUM_TILES_TOTAL``,
|
||||||
``define_metatiles_primary``, ``NUM_METATILES_IN_PRIMARY``, total metatiles are calculated using metatile ID mask
|
``define_metatiles_primary``, ``NUM_METATILES_IN_PRIMARY``, total metatiles are calculated using metatile ID mask
|
||||||
``define_pals_primary``, ``NUM_PALS_IN_PRIMARY``,
|
``define_pals_primary``, ``NUM_PALS_IN_PRIMARY``,
|
||||||
``define_pals_total``, ``NUM_PALS_TOTAL``,
|
``define_pals_total``, ``NUM_PALS_TOTAL``,
|
||||||
|
``define_tiles_per_metatile``, ``NUM_TILES_PER_METATILE``, to determine if triple-layer metatiles are in use. Values other than 8 or 12 are ignored
|
||||||
``define_map_size``, ``MAX_MAP_DATA_SIZE``, to limit map dimensions
|
``define_map_size``, ``MAX_MAP_DATA_SIZE``, to limit map dimensions
|
||||||
``define_mask_metatile``, ``MAPGRID_METATILE_ID_MASK``, optionally read to get settings on ``Maps`` tab
|
``define_mask_metatile``, ``MAPGRID_METATILE_ID_MASK``, optionally read to get settings on ``Maps`` tab
|
||||||
``define_mask_collision``, ``MAPGRID_COLLISION_MASK``, optionally read to get settings on ``Maps`` tab
|
``define_mask_collision``, ``MAPGRID_COLLISION_MASK``, optionally read to get settings on ``Maps`` tab
|
||||||
|
@ -119,7 +121,7 @@ In addition to these files, there are some specific symbol and macro names that
|
||||||
``define_map_empty``, ``UNDEFINED``, macro name after prefix for empty maps
|
``define_map_empty``, ``UNDEFINED``, macro name after prefix for empty maps
|
||||||
``define_map_section_prefix``, ``MAPSEC_``, expected prefix for location macro names
|
``define_map_section_prefix``, ``MAPSEC_``, expected prefix for location macro names
|
||||||
``define_map_section_empty``, ``NONE``, macro name after prefix for empty region map sections
|
``define_map_section_empty``, ``NONE``, macro name after prefix for empty region map sections
|
||||||
``define_map_section_count``, ``COUNT``, macro name after prefix for total number of region map sections
|
``define_species_prefix``, ``SPECIES_``, expected prefix for species macro names
|
||||||
``regex_behaviors``, ``\bMB_``, regex to find metatile behavior macro names
|
``regex_behaviors``, ``\bMB_``, regex to find metatile behavior macro names
|
||||||
``regex_obj_event_gfx``, ``\bOBJ_EVENT_GFX_``, regex to find Object Event graphics ID macro names
|
``regex_obj_event_gfx``, ``\bOBJ_EVENT_GFX_``, regex to find Object Event graphics ID macro names
|
||||||
``regex_items``, ``\bITEM_(?!(B_)?USE_)``, regex to find item macro names
|
``regex_items``, ``\bITEM_(?!(B_)?USE_)``, regex to find item macro names
|
||||||
|
@ -134,4 +136,3 @@ In addition to these files, there are some specific symbol and macro names that
|
||||||
``regex_sign_facing_directions``, ``\bBG_EVENT_PLAYER_FACING_``, regex to find sign facing direction macro names
|
``regex_sign_facing_directions``, ``\bBG_EVENT_PLAYER_FACING_``, regex to find sign facing direction macro names
|
||||||
``regex_trainer_types``, ``\bTRAINER_TYPE_``, regex to find trainer type macro names
|
``regex_trainer_types``, ``\bTRAINER_TYPE_``, regex to find trainer type macro names
|
||||||
``regex_music``, ``\b(SE|MUS)_``, regex to find music macro names
|
``regex_music``, ``\b(SE|MUS)_``, regex to find music macro names
|
||||||
``regex_species``, ``\bSPECIES_``, regex to find species macro names
|
|
||||||
|
|
|
@ -1,117 +1,89 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>AboutPorymap</class>
|
<class>AboutPorymap</class>
|
||||||
<widget class="QMainWindow" name="AboutPorymap">
|
<widget class="QDialog" name="AboutPorymap">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>582</width>
|
<width>383</width>
|
||||||
<height>438</height>
|
<height>121</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>About Porymap</string>
|
<string>About Porymap</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<item>
|
||||||
<item>
|
<widget class="QLabel" name="label_Title">
|
||||||
<widget class="QLabel" name="label_Title">
|
<property name="font">
|
||||||
<property name="font">
|
<font>
|
||||||
<font>
|
<family>Arial</family>
|
||||||
<family>Arial</family>
|
<pointsize>22</pointsize>
|
||||||
<pointsize>22</pointsize>
|
<bold>true</bold>
|
||||||
<weight>75</weight>
|
<underline>false</underline>
|
||||||
<bold>true</bold>
|
<kerning>true</kerning>
|
||||||
<underline>false</underline>
|
</font>
|
||||||
<kerning>true</kerning>
|
</property>
|
||||||
</font>
|
<property name="text">
|
||||||
</property>
|
<string>Porymap</string>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Porymap</string>
|
<property name="textFormat">
|
||||||
</property>
|
<enum>Qt::TextFormat::RichText</enum>
|
||||||
<property name="textFormat">
|
</property>
|
||||||
<enum>Qt::RichText</enum>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
<property name="alignment">
|
</property>
|
||||||
<set>Qt::AlignCenter</set>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item>
|
||||||
</item>
|
<widget class="QLabel" name="label_Version">
|
||||||
<item>
|
<property name="sizePolicy">
|
||||||
<widget class="QLabel" name="label_Version">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
<property name="sizePolicy">
|
<horstretch>0</horstretch>
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<verstretch>0</verstretch>
|
||||||
<horstretch>0</horstretch>
|
</sizepolicy>
|
||||||
<verstretch>0</verstretch>
|
</property>
|
||||||
</sizepolicy>
|
<property name="font">
|
||||||
</property>
|
<font>
|
||||||
<property name="font">
|
<family>Arial</family>
|
||||||
<font>
|
<pointsize>12</pointsize>
|
||||||
<family>Arial</family>
|
</font>
|
||||||
<pointsize>12</pointsize>
|
</property>
|
||||||
</font>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
<property name="alignment">
|
</property>
|
||||||
<set>Qt::AlignCenter</set>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item>
|
||||||
</item>
|
<widget class="QLabel" name="label_Description">
|
||||||
<item>
|
<property name="font">
|
||||||
<widget class="QLabel" name="label_Description">
|
<font>
|
||||||
<property name="font">
|
<family>Arial</family>
|
||||||
<font>
|
</font>
|
||||||
<family>Arial</family>
|
</property>
|
||||||
</font>
|
<property name="text">
|
||||||
</property>
|
<string>Map editor for pokeemerald, pokefirered and pokeruby.</string>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Map editor for pokeemerald, pokefirered and pokeruby.</string>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
<property name="alignment">
|
</property>
|
||||||
<set>Qt::AlignCenter</set>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
<item>
|
||||||
</item>
|
<widget class="QLabel" name="label_Manual">
|
||||||
<item>
|
<property name="text">
|
||||||
<widget class="QLabel" name="label_Manual">
|
<string><html><head/><body><p>Official Documentation: <a href="https://huderlem.github.io/porymap/"><span style=" text-decoration: underline; color:#0069d9;">https://huderlem.github.io/porymap/</span></a></p></body></html></string>
|
||||||
<property name="text">
|
</property>
|
||||||
<string><html><head/><body><p>Official Documentation: <a href="https://huderlem.github.io/porymap/"><span style=" text-decoration: underline; color:#0069d9;">https://huderlem.github.io/porymap/</span></a></p></body></html></string>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
<property name="alignment">
|
</property>
|
||||||
<set>Qt::AlignCenter</set>
|
<property name="openExternalLinks">
|
||||||
</property>
|
<bool>true</bool>
|
||||||
<property name="openExternalLinks">
|
</property>
|
||||||
<bool>true</bool>
|
</widget>
|
||||||
</property>
|
</item>
|
||||||
</widget>
|
</layout>
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="Line" name="line">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QTextBrowser" name="textBrowser">
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QMenuBar" name="menubar">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>582</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
310
forms/colorinputwidget.ui
Normal file
|
@ -0,0 +1,310 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ColorInputWidget</class>
|
||||||
|
<widget class="QGroupBox" name="ColorInputWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>212</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QFrame" name="frame_InputMain">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_Labels">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_Red">
|
||||||
|
<property name="text">
|
||||||
|
<string>Red</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_Green">
|
||||||
|
<property name="text">
|
||||||
|
<string>Green</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_Blue">
|
||||||
|
<property name="text">
|
||||||
|
<string>Blue</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_Sliders">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="slider_Red">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>31</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="slider_Green">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>31</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSlider" name="slider_Blue">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>31</number>
|
||||||
|
</property>
|
||||||
|
<property name="pageStep">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_SpinBoxes">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_Red">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_Green">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_Blue">
|
||||||
|
<property name="maximum">
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QFrame" name="frame_ColorDisplay">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QFrame" name="frame_InputTop">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QFrame" name="frame_Hex">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_Hex">
|
||||||
|
<property name="text">
|
||||||
|
<string>#</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit_Hex"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QToolButton" name="button_Eyedrop">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/pipette.ico</normaloff>:/icons/pipette.ico</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
132
forms/connectionslistitem.ui
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ConnectionsListItem</class>
|
||||||
|
<widget class="QFrame" name="ConnectionsListItem">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>178</width>
|
||||||
|
<height>157</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">.ConnectionsListItem { border-width: 1px; }</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_Map">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Map</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_Offset">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Offset</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_Direction">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="2">
|
||||||
|
<widget class="QToolButton" name="button_Delete">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Remove this connection.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/delete.ico</normaloff>:/icons/delete.ico</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" colspan="2">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Direction">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Where the connected map should be positioned relative to the current map.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" colspan="2">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Map">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>The name of the map to connect to the current map.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1" colspan="2">
|
||||||
|
<widget class="NoScrollSpinBox" name="spinBox_Offset">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>The number of spaces to move the connected map perpendicular to its connected direction.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QToolButton" name="button_OpenMap">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Open the connected map.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/map_go.ico</normaloff>:/icons/map_go.ico</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>NoScrollComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>noscrollcombobox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>NoScrollSpinBox</class>
|
||||||
|
<extends>QSpinBox</extends>
|
||||||
|
<header>noscrollspinbox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -6,7 +6,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>540</width>
|
<width>582</width>
|
||||||
<height>355</height>
|
<height>355</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -33,21 +33,30 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="window">
|
<widget class="QFrame" name="window">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="header">
|
<widget class="QFrame" name="header">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Raised</enum>
|
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="button_CreateNewScript">
|
<widget class="QPushButton" name="button_CreateNewScript">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
|
@ -91,9 +100,9 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_header">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -103,35 +112,33 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_header">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_Help">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/help.ico</normaloff>:/icons/help.ico</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_Manual">
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><a href="https://huderlem.github.io/porymap/manual/scripting-capabilities.html"><span style=" text-decoration: underline; color:#0069d9;">Help</span></a></p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Minimum</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>5</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_ListHeader">
|
<widget class="QLabel" name="label_ListHeader">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -142,32 +149,32 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QListWidget" name="list">
|
<widget class="QListWidget" name="list">
|
||||||
<property name="editTriggers">
|
<property name="editTriggers">
|
||||||
<set>QAbstractItemView::NoEditTriggers</set>
|
<set>QAbstractItemView::EditTrigger::NoEditTriggers</set>
|
||||||
</property>
|
</property>
|
||||||
<property name="showDropIndicator" stdset="0">
|
<property name="showDropIndicator" stdset="0">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="dragDropMode">
|
<property name="dragDropMode">
|
||||||
<enum>QAbstractItemView::DragOnly</enum>
|
<enum>QAbstractItemView::DragDropMode::DragOnly</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="defaultDropAction">
|
<property name="defaultDropAction">
|
||||||
<enum>Qt::IgnoreAction</enum>
|
<enum>Qt::DropAction::IgnoreAction</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="selectionMode">
|
<property name="selectionMode">
|
||||||
<enum>QAbstractItemView::ExtendedSelection</enum>
|
<enum>QAbstractItemView::SelectionMode::ExtendedSelection</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="textElideMode">
|
<property name="textElideMode">
|
||||||
<enum>Qt::ElideLeft</enum>
|
<enum>Qt::TextElideMode::ElideLeft</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="movement">
|
<property name="movement">
|
||||||
<enum>QListView::Free</enum>
|
<enum>QListView::Movement::Free</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
275
forms/gridsettingsdialog.ui
Normal file
|
@ -0,0 +1,275 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>GridSettingsDialog</class>
|
||||||
|
<widget class="QDialog" name="GridSettingsDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>331</width>
|
||||||
|
<height>467</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Grid Settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>305</width>
|
||||||
|
<height>401</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="4" column="0" colspan="2">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_Color">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Color</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Style">
|
||||||
|
<property name="editable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QComboBox::SizeAdjustPolicy::AdjustToContentsOnFirstShow</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimumContentsLength">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_Style">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Style</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_Dimensions">
|
||||||
|
<property name="title">
|
||||||
|
<string>Dimensions (in pixels)</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2" columnstretch="1,1,5">
|
||||||
|
<item row="0" column="0" rowspan="2">
|
||||||
|
<widget class="QToolButton" name="button_LinkDimensions">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/link_broken.ico</normaloff>
|
||||||
|
<normalon>:/icons/link.ico</normalon>:/icons/link_broken.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="NoScrollSpinBox" name="spinBox_Height">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_Height">
|
||||||
|
<property name="text">
|
||||||
|
<string>Height</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="label_Width">
|
||||||
|
<property name="text">
|
||||||
|
<string>Width</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="NoScrollSpinBox" name="spinBox_Width">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_Offset">
|
||||||
|
<property name="title">
|
||||||
|
<string>Offset (in pixels)</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3" columnstretch="1,1,5">
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="label_Y">
|
||||||
|
<property name="text">
|
||||||
|
<string>Y</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="label_X">
|
||||||
|
<property name="text">
|
||||||
|
<string>X</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="NoScrollSpinBox" name="spinBox_Y">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="NoScrollSpinBox" name="spinBox_X">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="2">
|
||||||
|
<widget class="QToolButton" name="button_LinkOffsets">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/link_broken.ico</normaloff>
|
||||||
|
<normalon>:/icons/link.ico</normalon>:/icons/link_broken.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="ColorInputWidget" name="colorInput">
|
||||||
|
<property name="title">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok|QDialogButtonBox::StandardButton::RestoreDefaults</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>NoScrollSpinBox</class>
|
||||||
|
<extends>QSpinBox</extends>
|
||||||
|
<header>noscrollspinbox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>NoScrollComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>noscrollcombobox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>ColorInputWidget</class>
|
||||||
|
<extends>QGroupBox</extends>
|
||||||
|
<header>colorinputwidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
1264
forms/mainwindow.ui
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>696</width>
|
<width>817</width>
|
||||||
<height>396</height>
|
<height>535</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -16,15 +16,313 @@
|
||||||
<property name="sizeGripEnabled">
|
<property name="sizeGripEnabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QGridLayout" name="gridLayout_4" columnstretch="2,1">
|
||||||
<item>
|
<item row="1" column="1">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QFrame" name="frame_Options">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_Options">
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Map</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_MapSelection">
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QComboBox::SizeAdjustPolicy::AdjustToContents</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_Events">
|
||||||
|
<property name="title">
|
||||||
|
<string>Events</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_Event_Options">
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Triggers">
|
||||||
|
<property name="text">
|
||||||
|
<string>Triggers</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Objects">
|
||||||
|
<property name="text">
|
||||||
|
<string>Objects</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QCheckBox" name="checkBox_HealLocations">
|
||||||
|
<property name="text">
|
||||||
|
<string>Heal Locations</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Warps">
|
||||||
|
<property name="text">
|
||||||
|
<string>Warps</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_AllEvents">
|
||||||
|
<property name="text">
|
||||||
|
<string>All</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_BGs">
|
||||||
|
<property name="text">
|
||||||
|
<string>BGs</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_Connections">
|
||||||
|
<property name="title">
|
||||||
|
<string>Connections</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_Connection_Options">
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QCheckBox" name="checkBox_ConnectionLeft">
|
||||||
|
<property name="text">
|
||||||
|
<string>Left</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_ConnectionUp">
|
||||||
|
<property name="text">
|
||||||
|
<string>Up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QCheckBox" name="checkBox_ConnectionRight">
|
||||||
|
<property name="text">
|
||||||
|
<string>Right</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="checkBox_ConnectionDown">
|
||||||
|
<property name="text">
|
||||||
|
<string>Down</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_AllConnections">
|
||||||
|
<property name="text">
|
||||||
|
<string>All</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_Misc">
|
||||||
|
<property name="title">
|
||||||
|
<string>Miscellaneous</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_5">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_Misc_Options">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Grid">
|
||||||
|
<property name="text">
|
||||||
|
<string>Grid</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Elevation">
|
||||||
|
<property name="text">
|
||||||
|
<string>Collision</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="checkBox_Border">
|
||||||
|
<property name="text">
|
||||||
|
<string>Border</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_Timelapse">
|
||||||
|
<property name="title">
|
||||||
|
<string>Timelapse</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_7">
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QSpinBox" name="spinBox_TimelapseDelay">
|
||||||
|
<property name="specialValueText">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string>ms</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>2000</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>200</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Frame Delay</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QSpinBox" name="spinBox_FrameSkip">
|
||||||
|
<property name="suffix">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>999</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit Frame Skip</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox_ActualSize">
|
||||||
|
<property name="text">
|
||||||
|
<string>Preview actual size</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_Reset">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reset</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_Cancel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_Save">
|
||||||
|
<property name="text">
|
||||||
|
<string>Save</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QGroupBox" name="groupBox_Preview">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Preview</string>
|
<string>Preview</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_6">
|
<layout class="QGridLayout" name="gridLayout_6">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<widget class="QScrollArea" name="scrollArea_Preview">
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
@ -33,12 +331,24 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>403</width>
|
<width>469</width>
|
||||||
<height>343</height>
|
<height>464</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="3" column="4">
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="2" column="3">
|
||||||
<widget class="QGraphicsView" name="graphicsView_Preview">
|
<widget class="QGraphicsView" name="graphicsView_Preview">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
@ -53,65 +363,13 @@
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
<property name="sizeAdjustPolicy">
|
||||||
<enum>QAbstractScrollArea::AdjustIgnored</enum>
|
<enum>QAbstractScrollArea::SizeAdjustPolicy::AdjustIgnored</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="dragMode">
|
<property name="dragMode">
|
||||||
<enum>QGraphicsView::NoDrag</enum>
|
<enum>QGraphicsView::DragMode::NoDrag</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="4">
|
|
||||||
<spacer name="verticalSpacer_South">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>10</width>
|
|
||||||
<height>100</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="4">
|
|
||||||
<spacer name="verticalSpacer_North">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>10</width>
|
|
||||||
<height>100</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="5">
|
|
||||||
<spacer name="horizontalSpacer_West">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>100</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<spacer name="horizontalSpacer_East">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>100</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -119,256 +377,18 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="0" column="0" colspan="2">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_Options">
|
<widget class="QLabel" name="label_Description">
|
||||||
<item>
|
<property name="text">
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<string/>
|
||||||
<item row="0" column="0">
|
</property>
|
||||||
<widget class="QLabel" name="label_2">
|
<property name="alignment">
|
||||||
<property name="text">
|
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||||
<string>Map</string>
|
</property>
|
||||||
</property>
|
<property name="wordWrap">
|
||||||
</widget>
|
<bool>true</bool>
|
||||||
</item>
|
</property>
|
||||||
<item row="0" column="1">
|
</widget>
|
||||||
<widget class="NoScrollComboBox" name="comboBox_MapSelection">
|
|
||||||
<property name="sizeAdjustPolicy">
|
|
||||||
<enum>QComboBox::AdjustToContents</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="groupBox_Events">
|
|
||||||
<property name="title">
|
|
||||||
<string>Events</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_Event_Options">
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Warps">
|
|
||||||
<property name="text">
|
|
||||||
<string>Warps</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Objects">
|
|
||||||
<property name="text">
|
|
||||||
<string>Objects</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<widget class="QCheckBox" name="checkBox_BGs">
|
|
||||||
<property name="text">
|
|
||||||
<string>BGs</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Triggers">
|
|
||||||
<property name="text">
|
|
||||||
<string>Triggers</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBox_HealSpots">
|
|
||||||
<property name="text">
|
|
||||||
<string>Heal Spots</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="groupBox_Connections">
|
|
||||||
<property name="title">
|
|
||||||
<string>Connections</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_Connection_Options">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_ConnectionUp">
|
|
||||||
<property name="text">
|
|
||||||
<string>Up</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBox_ConnectionDown">
|
|
||||||
<property name="text">
|
|
||||||
<string>Down</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<widget class="QCheckBox" name="checkBox_ConnectionLeft">
|
|
||||||
<property name="text">
|
|
||||||
<string>Left</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="3">
|
|
||||||
<widget class="QCheckBox" name="checkBox_ConnectionRight">
|
|
||||||
<property name="text">
|
|
||||||
<string>Right</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="groupBox_Misc">
|
|
||||||
<property name="title">
|
|
||||||
<string>Miscellaneous</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_5">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_Misc_Options">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Grid">
|
|
||||||
<property name="text">
|
|
||||||
<string>Grid</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Elevation">
|
|
||||||
<property name="text">
|
|
||||||
<string>Collision</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QCheckBox" name="checkBox_Border">
|
|
||||||
<property name="text">
|
|
||||||
<string>Border</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="groupBox_Timelapse">
|
|
||||||
<property name="title">
|
|
||||||
<string>Timelapse</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_7">
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QSpinBox" name="spinBox_TimelapseDelay">
|
|
||||||
<property name="specialValueText">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="suffix">
|
|
||||||
<string>ms</string>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>2000</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>200</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Frame Delay</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QSpinBox" name="spinBox_FrameSkip">
|
|
||||||
<property name="suffix">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>999</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="text">
|
|
||||||
<string>Edit Frame Skip</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton_Reset">
|
|
||||||
<property name="text">
|
|
||||||
<string>Reset</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton_Cancel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Cancel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="pushButton_Save">
|
|
||||||
<property name="text">
|
|
||||||
<string>Save</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
175
forms/maplisttoolbar.ui
Normal file
|
@ -0,0 +1,175 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MapListToolBar</class>
|
||||||
|
<widget class="QFrame" name="MapListToolBar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>274</width>
|
||||||
|
<height>32</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_AddFolder">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Add a new folder to the list.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/folder_add.ico</normaloff>:/icons/folder_add.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_ToggleEmptyFolders">
|
||||||
|
<property name="text">
|
||||||
|
<string>Hide empty folders in the list.</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/folder_eye_open.ico</normaloff>
|
||||||
|
<normalon>:/icons/folder_eye_closed.ico</normalon>:/icons/folder_eye_open.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_ExpandAll">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Expand all folders in the list.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/expand_all.ico</normaloff>:/icons/expand_all.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_CollapseAll">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Collapse all folders in the list.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/collapse_all.ico</normaloff>:/icons/collapse_all.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_ToggleEdit">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>If enabled, folders may be renamed and items in the list may be rearranged.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/lock_edit.ico</normaloff>
|
||||||
|
<normalon>:/icons/unlock_edit.ico</normalon>:/icons/lock_edit.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::Preferred</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>12</width>
|
||||||
|
<height>19</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEdit_filterBox">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Filter...</string>
|
||||||
|
</property>
|
||||||
|
<property name="clearButtonEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
136
forms/newmapconnectiondialog.ui
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>NewMapConnectionDialog</class>
|
||||||
|
<widget class="QDialog" name="NewMapConnectionDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>234</width>
|
||||||
|
<height>162</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Add New Map Connection</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_Map">
|
||||||
|
<property name="text">
|
||||||
|
<string>Map</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Map">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>The name of the map to connect to the current map.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_Direction">
|
||||||
|
<property name="text">
|
||||||
|
<string>Direction</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Direction">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Where the connected map should be positioned relative to the current map.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" colspan="2">
|
||||||
|
<widget class="QLabel" name="label_Warning">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">color: rgb(255, 0, 0)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>'Map' must be the name of an existing map.</string>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>NoScrollComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>noscrollcombobox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>NewMapConnectionDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>20</x>
|
||||||
|
<y>20</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>20</x>
|
||||||
|
<y>20</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>NewMapConnectionDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>20</x>
|
||||||
|
<y>20</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>20</x>
|
||||||
|
<y>20</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>410</width>
|
<width>410</width>
|
||||||
<height>621</height>
|
<height>687</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -73,14 +73,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Width">
|
<widget class="QLabel" name="label_NewMap_Width">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Map Width</string>
|
<string>Map Width</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_NewMap_Width">
|
<widget class="QSpinBox" name="spinBox_NewMap_Width">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Width (in blocks) of the new map.</p></body></html></string>
|
<string><html><head/><body><p>Width (in blocks) of the new map.</p></body></html></string>
|
||||||
|
@ -90,14 +90,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Height">
|
<widget class="QLabel" name="label_NewMap_Height">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Map Height</string>
|
<string>Map Height</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_NewMap_Height">
|
<widget class="QSpinBox" name="spinBox_NewMap_Height">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Height (in blocks) of the new map.</p></body></html></string>
|
<string><html><head/><body><p>Height (in blocks) of the new map.</p></body></html></string>
|
||||||
|
@ -107,14 +107,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_BorderWidth">
|
<widget class="QLabel" name="label_NewMap_BorderWidth">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Border Width</string>
|
<string>Border Width</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="6" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_NewMap_BorderWidth">
|
<widget class="QSpinBox" name="spinBox_NewMap_BorderWidth">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Width (in blocks) of the new map's border.</p></body></html></string>
|
<string><html><head/><body><p>Width (in blocks) of the new map's border.</p></body></html></string>
|
||||||
|
@ -124,14 +124,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_BorderHeight">
|
<widget class="QLabel" name="label_NewMap_BorderHeight">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Border Height</string>
|
<string>Border Height</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="7" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_NewMap_BorderHeight">
|
<widget class="QSpinBox" name="spinBox_NewMap_BorderHeight">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Height (in blocks) of the new map's border.</p></body></html></string>
|
<string><html><head/><body><p>Height (in blocks) of the new map's border.</p></body></html></string>
|
||||||
|
@ -141,14 +141,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Primary_Tileset">
|
<widget class="QLabel" name="label_NewMap_Primary_Tileset">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Primary Tileset</string>
|
<string>Primary Tileset</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="8" column="1">
|
||||||
<widget class="NoScrollComboBox" name="comboBox_NewMap_Primary_Tileset">
|
<widget class="NoScrollComboBox" name="comboBox_NewMap_Primary_Tileset">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The primary tileset for the new map.</p></body></html></string>
|
<string><html><head/><body><p>The primary tileset for the new map.</p></body></html></string>
|
||||||
|
@ -158,14 +158,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="9" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Secondary_Tileset">
|
<widget class="QLabel" name="label_NewMap_Secondary_Tileset">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Secondary Tileset</string>
|
<string>Secondary Tileset</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="9" column="1">
|
||||||
<widget class="NoScrollComboBox" name="comboBox_NewMap_Secondary_Tileset">
|
<widget class="NoScrollComboBox" name="comboBox_NewMap_Secondary_Tileset">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The secondary tileset for the new map.</p></body></html></string>
|
<string><html><head/><body><p>The secondary tileset for the new map.</p></body></html></string>
|
||||||
|
@ -175,14 +175,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item row="10" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Type">
|
<widget class="QLabel" name="label_NewMap_Type">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Type</string>
|
<string>Type</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1">
|
<item row="10" column="1">
|
||||||
<widget class="NoScrollComboBox" name="comboBox_NewMap_Type">
|
<widget class="NoScrollComboBox" name="comboBox_NewMap_Type">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The map type is a general attribute, which is used for many different things. For example. it determines whether biking or running is allowed.</p></body></html></string>
|
<string><html><head/><body><p>The map type is a general attribute, which is used for many different things. For example. it determines whether biking or running is allowed.</p></body></html></string>
|
||||||
|
@ -192,14 +192,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Location">
|
<widget class="QLabel" name="label_NewMap_Location">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Location</string>
|
<string>Location</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="1">
|
<item row="11" column="1">
|
||||||
<widget class="NoScrollComboBox" name="comboBox_NewMap_Location">
|
<widget class="NoScrollComboBox" name="comboBox_NewMap_Location">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The section of the region map which the map is grouped under. This also determines the name of the map that is displayed when the player enters it.</p></body></html></string>
|
<string><html><head/><body><p>The section of the region map which the map is grouped under. This also determines the name of the map that is displayed when the player enters it.</p></body></html></string>
|
||||||
|
@ -209,14 +209,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="0">
|
<item row="12" column="0">
|
||||||
<widget class="QLabel" name="label_Song">
|
<widget class="QLabel" name="label_Song">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Song</string>
|
<string>Song</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="1">
|
<item row="12" column="1">
|
||||||
<widget class="NoScrollComboBox" name="comboBox_NewMap_Song">
|
<widget class="NoScrollComboBox" name="comboBox_NewMap_Song">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The default background music for this map.</p></body></html></string>
|
<string><html><head/><body><p>The default background music for this map.</p></body></html></string>
|
||||||
|
@ -226,14 +226,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="0">
|
<item row="13" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Flyable">
|
<widget class="QLabel" name="label_NewMap_Flyable">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Can Fly To</string>
|
<string>Can Fly To</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="1">
|
<item row="13" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_NewMap_Flyable">
|
<widget class="QCheckBox" name="checkBox_NewMap_Flyable">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Whether to add a heal location to the new map.</p></body></html></string>
|
<string><html><head/><body><p>Whether to add a heal location to the new map.</p></body></html></string>
|
||||||
|
@ -243,14 +243,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="0">
|
<item row="14" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Show_Location">
|
<widget class="QLabel" name="label_NewMap_Show_Location">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Show Location Name</string>
|
<string>Show Location Name</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="1">
|
<item row="14" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_NewMap_Show_Location">
|
<widget class="QCheckBox" name="checkBox_NewMap_Show_Location">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Whether or not to display the location name when the player enters the map.</p></body></html></string>
|
<string><html><head/><body><p>Whether or not to display the location name when the player enters the map.</p></body></html></string>
|
||||||
|
@ -260,14 +260,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="0">
|
<item row="15" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Allow_Running">
|
<widget class="QLabel" name="label_NewMap_Allow_Running">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Allow Running</string>
|
<string>Allow Running</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="1">
|
<item row="15" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Running">
|
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Running">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Allows the player to use Running Shoes</p></body></html></string>
|
<string><html><head/><body><p>Allows the player to use Running Shoes</p></body></html></string>
|
||||||
|
@ -277,14 +277,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="14" column="0">
|
<item row="16" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Allow_Biking">
|
<widget class="QLabel" name="label_NewMap_Allow_Biking">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Allow Biking</string>
|
<string>Allow Biking</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="14" column="1">
|
<item row="16" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Biking">
|
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Biking">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Allows the player to use a Bike</p></body></html></string>
|
<string><html><head/><body><p>Allows the player to use a Bike</p></body></html></string>
|
||||||
|
@ -294,14 +294,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="0">
|
<item row="17" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Allow_Escape_Rope">
|
<widget class="QLabel" name="label_NewMap_Allow_Escape_Rope">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Allow Dig & Escape Rope</string>
|
<string>Allow Dig & Escape Rope</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="1">
|
<item row="17" column="1">
|
||||||
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Escape_Rope">
|
<widget class="QCheckBox" name="checkBox_NewMap_Allow_Escape_Rope">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Allows the player to use Dig or Escape Rope</p></body></html></string>
|
<string><html><head/><body><p>Allows the player to use Dig or Escape Rope</p></body></html></string>
|
||||||
|
@ -311,14 +311,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="0">
|
<item row="18" column="0">
|
||||||
<widget class="QLabel" name="label_NewMap_Floor_Number">
|
<widget class="QLabel" name="label_NewMap_Floor_Number">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Floor Number</string>
|
<string>Floor Number</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="1">
|
<item row="18" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_NewMap_Floor_Number">
|
<widget class="QSpinBox" name="spinBox_NewMap_Floor_Number">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Floor number to be used for maps with elevators.</p></body></html></string>
|
<string><html><head/><body><p>Floor number to be used for maps with elevators.</p></body></html></string>
|
||||||
|
@ -328,6 +328,96 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="NoScrollComboBox" name="comboBox_Layout">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Layout</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use Existing Layout</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox_UseExistingLayout">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -396,7 +486,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>410</width>
|
<width>410</width>
|
||||||
<height>21</height>
|
<height>22</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
<item row="1" column="6">
|
<item row="1" column="6">
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -194,10 +194,10 @@
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<spacer name="horizontalSpacer_4">
|
<spacer name="horizontalSpacer_4">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType">
|
<property name="sizeType">
|
||||||
<enum>QSizePolicy::Maximum</enum>
|
<enum>QSizePolicy::Policy::Maximum</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -276,10 +276,10 @@
|
||||||
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item>
|
<item>
|
||||||
|
@ -287,7 +287,6 @@
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>12</pointsize>
|
<pointsize>12</pointsize>
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
@ -319,7 +318,7 @@
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_6">
|
<spacer name="horizontalSpacer_6">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -338,7 +337,7 @@
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_3">
|
<spacer name="verticalSpacer_3">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -370,7 +369,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>559</width>
|
<width>559</width>
|
||||||
<height>548</height>
|
<height>560</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||||
|
@ -567,10 +566,10 @@
|
||||||
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_18">
|
<layout class="QVBoxLayout" name="verticalLayout_18">
|
||||||
<item>
|
<item>
|
||||||
|
@ -578,7 +577,6 @@
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>12</pointsize>
|
<pointsize>12</pointsize>
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
@ -604,7 +602,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_MetatileIdMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_MetatileIdMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write metatile IDs in map data.</string>
|
<string>The mask used to read/write metatile IDs in map data.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -618,7 +616,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_CollisionMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_CollisionMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write collision values in map data.</string>
|
<string>The mask used to read/write collision values in map data.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -632,7 +630,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_ElevationMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_ElevationMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write elevation values in map data.</string>
|
<string>The mask used to read/write elevation values in map data.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -693,7 +691,7 @@
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<spacer name="horizontalSpacer_3">
|
<spacer name="horizontalSpacer_3">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -712,7 +710,7 @@
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_5">
|
<spacer name="verticalSpacer_5">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -744,7 +742,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>559</width>
|
<width>559</width>
|
||||||
<height>568</height>
|
<height>798</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_12">
|
<layout class="QVBoxLayout" name="verticalLayout_12">
|
||||||
|
@ -777,16 +775,96 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_TransparentPixelRendering">
|
||||||
|
<property name="title">
|
||||||
|
<string>Transparent Pixel Rendering</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_22">
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioButton_RenderBlack">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Fully transparent pixels will be rendered as black pixels (the Pokémon games do this by default)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Render as black</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioButton_RenderFirstPalColor">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Fully transparent pixels will be rendered using the first palette color (this the default behavior for the GBA)</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Render using first palette color</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_UnusedLayerRendering">
|
||||||
|
<property name="title">
|
||||||
|
<string>Unused Layer Rendering</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_UnusedTileNorma">
|
||||||
|
<property name="text">
|
||||||
|
<string>Normal</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="UIntHexSpinBox" name="spinBox_UnusedTileNormal">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>This raw tile value will be used to fill the unused bottom layer of Normal metatiles</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_UnusedTileCovered">
|
||||||
|
<property name="text">
|
||||||
|
<string>Covered</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="UIntHexSpinBox" name="spinBox_UnusedTileCovered">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>This raw tile value will be used to fill the unused top layer of Covered metatiles</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_UnusedTileSplit">
|
||||||
|
<property name="text">
|
||||||
|
<string>Split</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="UIntHexSpinBox" name="spinBox_UnusedTileSplit">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>This raw tile value will be used to fill the unused middle layer of Split metatiles</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="frame_WarningTilesetsTab">
|
<widget class="QFrame" name="frame_WarningTilesetsTab">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_13">
|
<layout class="QVBoxLayout" name="verticalLayout_13">
|
||||||
<item>
|
<item>
|
||||||
|
@ -794,7 +872,6 @@
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>12</pointsize>
|
<pointsize>12</pointsize>
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
@ -813,14 +890,14 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_LayerTypeMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_LayerTypeMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write Layer Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
<string>The mask used to read/write Layer Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_BehaviorMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_BehaviorMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write Metatile Behavior from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
<string>The mask used to read/write Metatile Behavior from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -839,10 +916,10 @@
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType">
|
<property name="sizeType">
|
||||||
<enum>QSizePolicy::Maximum</enum>
|
<enum>QSizePolicy::Policy::Maximum</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -867,7 +944,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="7" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_TerrainTypeMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_TerrainTypeMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write Terrain Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
<string>The mask used to read/write Terrain Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -894,7 +971,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="UIntHexSpinBox" name="spinBox_EncounterTypeMask" native="true">
|
<widget class="UIntHexSpinBox" name="spinBox_EncounterTypeMask">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The mask used to read/write Encounter Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
<string>The mask used to read/write Encounter Type from the metatile's attributes data. If 0, this attribute is disabled.</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -924,10 +1001,10 @@
|
||||||
<item row="9" column="0">
|
<item row="9" column="0">
|
||||||
<spacer name="verticalSpacer_6">
|
<spacer name="verticalSpacer_6">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeType">
|
<property name="sizeType">
|
||||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -975,7 +1052,7 @@
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_2">
|
<spacer name="verticalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -1212,7 +1289,7 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::NoTextInteraction</set>
|
<set>Qt::TextInteractionFlag::NoTextInteraction</set>
|
||||||
</property>
|
</property>
|
||||||
<property name="placeholderText">
|
<property name="placeholderText">
|
||||||
<string>Use the dropbown and buttons to add behaviors to the list...</string>
|
<string>Use the dropbown and buttons to add behaviors to the list...</string>
|
||||||
|
@ -1242,10 +1319,10 @@
|
||||||
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
<string notr="true">.QFrame { border: 1px solid red; }</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::Shape::StyledPanel</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Raised</enum>
|
<enum>QFrame::Shadow::Raised</enum>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_15">
|
<layout class="QVBoxLayout" name="verticalLayout_15">
|
||||||
<item>
|
<item>
|
||||||
|
@ -1253,7 +1330,6 @@
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
<pointsize>12</pointsize>
|
<pointsize>12</pointsize>
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
@ -1316,7 +1392,7 @@
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<spacer name="horizontalSpacer_2">
|
<spacer name="horizontalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -1335,7 +1411,7 @@
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer_4">
|
<spacer name="verticalSpacer_4">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
|
@ -1372,18 +1448,13 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_ProjectFilesHelp">
|
<widget class="QToolButton" name="button_HelpFiles">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p><a href="https://huderlem.github.io/porymap/manual/project-files.html#files"><span style=" text-decoration: underline; color:#0069d9;">Help</span></a></p></body></html></string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="icon">
|
||||||
<enum>Qt::RichText</enum>
|
<iconset resource="../resources/images.qrc">
|
||||||
</property>
|
<normaloff>:/icons/help.ico</normaloff>:/icons/help.ico</iconset>
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
|
||||||
</property>
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -1419,7 +1490,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>533</width>
|
<width>533</width>
|
||||||
<height>440</height>
|
<height>428</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="layout_ProjectPaths">
|
<layout class="QFormLayout" name="layout_ProjectPaths">
|
||||||
|
@ -1466,18 +1537,13 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_19">
|
<layout class="QVBoxLayout" name="verticalLayout_19">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_IdentifiersHelp">
|
<widget class="QToolButton" name="button_HelpIdentifiers">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p><a href="https://huderlem.github.io/porymap/manual/project-files.html#identifiers"><span style=" text-decoration: underline; color:#0069d9;">Help</span></a></p></body></html></string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="icon">
|
||||||
<enum>Qt::RichText</enum>
|
<iconset resource="../resources/images.qrc">
|
||||||
</property>
|
<normaloff>:/icons/help.ico</normaloff>:/icons/help.ico</iconset>
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
|
||||||
</property>
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -1513,7 +1579,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>533</width>
|
<width>533</width>
|
||||||
<height>440</height>
|
<height>428</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="layout_Identifiers">
|
<layout class="QFormLayout" name="layout_Identifiers">
|
||||||
|
@ -1544,7 +1610,7 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>
|
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok|QDialogButtonBox::StandardButton::RestoreDefaults</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -1563,10 +1629,15 @@
|
||||||
<header>noscrollspinbox.h</header>
|
<header>noscrollspinbox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>UIntHexSpinBox</class>
|
<class>UIntSpinBox</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QAbstractSpinBox</extends>
|
||||||
<header>uintspinbox.h</header>
|
<header>uintspinbox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>UIntHexSpinBox</class>
|
||||||
|
<extends>UIntSpinBox</extends>
|
||||||
|
<header location="global">uintspinbox.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../resources/images.qrc"/>
|
<include location="../resources/images.qrc"/>
|
||||||
|
|
|
@ -647,6 +647,7 @@
|
||||||
</property>
|
</property>
|
||||||
<addaction name="actionLayer_Grid"/>
|
<addaction name="actionLayer_Grid"/>
|
||||||
<addaction name="actionMetatile_Grid"/>
|
<addaction name="actionMetatile_Grid"/>
|
||||||
|
<addaction name="actionShow_Tileset_Divider"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="actionShow_Counts"/>
|
<addaction name="actionShow_Counts"/>
|
||||||
<addaction name="actionShow_Unused"/>
|
<addaction name="actionShow_Unused"/>
|
||||||
|
@ -799,6 +800,14 @@
|
||||||
<string>Ctrl+G</string>
|
<string>Ctrl+G</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionShow_Tileset_Divider">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Tileset Divider</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
|
245
forms/wildmonchart.ui
Normal file
|
@ -0,0 +1,245 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>WildMonChart</class>
|
||||||
|
<widget class="QWidget" name="WildMonChart">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>785</width>
|
||||||
|
<height>492</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Wild Pokémon Summary</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame_TopBar">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_Theme">
|
||||||
|
<property name="text">
|
||||||
|
<string>Theme</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_Theme"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="button_Help">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../resources/images.qrc">
|
||||||
|
<normaloff>:/icons/help.ico</normaloff>:/icons/help.ico</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="tabSpecies">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Species Distribution</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QChartView" name="chartView_SpeciesDistribution">
|
||||||
|
<property name="renderHints">
|
||||||
|
<set>QPainter::Antialiasing</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tabLevels">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Level Distribution</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>12</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_Group">
|
||||||
|
<property name="text">
|
||||||
|
<string>Group</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="comboBox_Group">
|
||||||
|
<property name="editable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QComboBox::AdjustToMinimumContentsLength</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimumContentsLength">
|
||||||
|
<number>8</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_Species">
|
||||||
|
<property name="title">
|
||||||
|
<string>Individual Mode</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_Species">
|
||||||
|
<property name="text">
|
||||||
|
<string>Species</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_Species">
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="insertPolicy">
|
||||||
|
<enum>QComboBox::NoInsert</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeAdjustPolicy">
|
||||||
|
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="minimumContentsLength">
|
||||||
|
<number>12</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QChartView" name="chartView_LevelDistribution">
|
||||||
|
<property name="renderHints">
|
||||||
|
<set>QPainter::Antialiasing</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>QChartView</class>
|
||||||
|
<extends>QGraphicsView</extends>
|
||||||
|
<header>QtCharts</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
328
include/config.h
|
@ -22,31 +22,22 @@ static const QVersionNumber porymapVersion = QVersionNumber::fromString(PORYMAP_
|
||||||
|
|
||||||
#define CONFIG_BACKWARDS_COMPATABILITY
|
#define CONFIG_BACKWARDS_COMPATABILITY
|
||||||
|
|
||||||
enum MapSortOrder {
|
|
||||||
Group = 0,
|
|
||||||
Area = 1,
|
|
||||||
Layout = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
class KeyValueConfigBase
|
class KeyValueConfigBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void save();
|
void save();
|
||||||
void load();
|
void load();
|
||||||
void setSaveDisabled(bool disabled);
|
|
||||||
virtual ~KeyValueConfigBase();
|
virtual ~KeyValueConfigBase();
|
||||||
virtual void reset() = 0;
|
virtual void reset() = 0;
|
||||||
protected:
|
protected:
|
||||||
virtual QString getConfigFilepath() = 0;
|
virtual QString getConfigFilepath() = 0;
|
||||||
virtual void parseConfigKeyValue(QString key, QString value) = 0;
|
virtual void parseConfigKeyValue(QString key, QString value) = 0;
|
||||||
virtual QMap<QString, QString> getKeyValueMap() = 0;
|
virtual QMap<QString, QString> getKeyValueMap() = 0;
|
||||||
virtual void onNewConfigFileCreated() = 0;
|
virtual void init() = 0;
|
||||||
virtual void setUnreadKeys() = 0;
|
virtual void setUnreadKeys() = 0;
|
||||||
bool getConfigBool(QString key, QString value);
|
bool getConfigBool(QString key, QString value);
|
||||||
int getConfigInteger(QString key, QString value, int min = INT_MIN, int max = INT_MAX, int defaultValue = 0);
|
int getConfigInteger(QString key, QString value, int min = INT_MIN, int max = INT_MAX, int defaultValue = 0);
|
||||||
uint32_t getConfigUint32(QString key, QString value, uint32_t min = 0, uint32_t max = UINT_MAX, uint32_t defaultValue = 0);
|
uint32_t getConfigUint32(QString key, QString value, uint32_t min = 0, uint32_t max = UINT_MAX, uint32_t defaultValue = 0);
|
||||||
private:
|
|
||||||
bool saveDisabled = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class PorymapConfig: public KeyValueConfigBase
|
class PorymapConfig: public KeyValueConfigBase
|
||||||
|
@ -57,9 +48,15 @@ public:
|
||||||
}
|
}
|
||||||
virtual void reset() override {
|
virtual void reset() override {
|
||||||
this->recentProjects.clear();
|
this->recentProjects.clear();
|
||||||
|
this->projectManuallyClosed = false;
|
||||||
this->reopenOnLaunch = true;
|
this->reopenOnLaunch = true;
|
||||||
this->mapSortOrder = MapSortOrder::Group;
|
this->mapListTab = 0;
|
||||||
this->prettyCursors = true;
|
this->prettyCursors = true;
|
||||||
|
this->mirrorConnectingMaps = true;
|
||||||
|
this->showDiveEmergeMaps = false;
|
||||||
|
this->diveEmergeMapOpacity = 30;
|
||||||
|
this->diveMapOpacity = 15;
|
||||||
|
this->emergeMapOpacity = 15;
|
||||||
this->collisionOpacity = 50;
|
this->collisionOpacity = 50;
|
||||||
this->collisionZoom = 30;
|
this->collisionZoom = 30;
|
||||||
this->metatilesZoom = 30;
|
this->metatilesZoom = 30;
|
||||||
|
@ -71,9 +68,11 @@ public:
|
||||||
this->showGrid = false;
|
this->showGrid = false;
|
||||||
this->showTilesetEditorMetatileGrid = false;
|
this->showTilesetEditorMetatileGrid = false;
|
||||||
this->showTilesetEditorLayerGrid = true;
|
this->showTilesetEditorLayerGrid = true;
|
||||||
|
this->showTilesetEditorDivider = false;
|
||||||
this->monitorFiles = true;
|
this->monitorFiles = true;
|
||||||
this->tilesetCheckerboardFill = true;
|
this->tilesetCheckerboardFill = true;
|
||||||
this->theme = "default";
|
this->theme = "default";
|
||||||
|
this->wildMonChartTheme = "";
|
||||||
this->textEditorOpenFolder = "";
|
this->textEditorOpenFolder = "";
|
||||||
this->textEditorGotoLine = "";
|
this->textEditorGotoLine = "";
|
||||||
this->paletteEditorBitDepth = 24;
|
this->paletteEditorBitDepth = 24;
|
||||||
|
@ -86,85 +85,69 @@ public:
|
||||||
}
|
}
|
||||||
void addRecentProject(QString project);
|
void addRecentProject(QString project);
|
||||||
void setRecentProjects(QStringList projects);
|
void setRecentProjects(QStringList projects);
|
||||||
void setReopenOnLaunch(bool enabled);
|
QString getRecentProject();
|
||||||
void setMapSortOrder(MapSortOrder order);
|
QStringList getRecentProjects();
|
||||||
void setPrettyCursors(bool enabled);
|
|
||||||
void setMainGeometry(QByteArray, QByteArray, QByteArray, QByteArray, QByteArray);
|
void setMainGeometry(QByteArray, QByteArray, QByteArray, QByteArray, QByteArray);
|
||||||
void setTilesetEditorGeometry(QByteArray, QByteArray, QByteArray);
|
void setTilesetEditorGeometry(QByteArray, QByteArray, QByteArray);
|
||||||
void setPaletteEditorGeometry(QByteArray, QByteArray);
|
void setPaletteEditorGeometry(QByteArray, QByteArray);
|
||||||
void setRegionMapEditorGeometry(QByteArray, QByteArray);
|
void setRegionMapEditorGeometry(QByteArray, QByteArray);
|
||||||
void setProjectSettingsEditorGeometry(QByteArray, QByteArray);
|
void setProjectSettingsEditorGeometry(QByteArray, QByteArray);
|
||||||
void setCustomScriptsEditorGeometry(QByteArray, QByteArray);
|
void setCustomScriptsEditorGeometry(QByteArray, QByteArray);
|
||||||
void setCollisionOpacity(int opacity);
|
|
||||||
void setCollisionZoom(int zoom);
|
|
||||||
void setMetatilesZoom(int zoom);
|
|
||||||
void setTilesetEditorMetatilesZoom(int zoom);
|
|
||||||
void setTilesetEditorTilesZoom(int zoom);
|
|
||||||
void setShowPlayerView(bool enabled);
|
|
||||||
void setShowCursorTile(bool enabled);
|
|
||||||
void setShowBorder(bool enabled);
|
|
||||||
void setShowGrid(bool enabled);
|
|
||||||
void setShowTilesetEditorMetatileGrid(bool enabled);
|
|
||||||
void setShowTilesetEditorLayerGrid(bool enabled);
|
|
||||||
void setMonitorFiles(bool monitor);
|
|
||||||
void setTilesetCheckerboardFill(bool checkerboard);
|
|
||||||
void setTheme(QString theme);
|
|
||||||
void setTextEditorOpenFolder(const QString &command);
|
|
||||||
void setTextEditorGotoLine(const QString &command);
|
|
||||||
void setPaletteEditorBitDepth(int bitDepth);
|
|
||||||
void setProjectSettingsTab(int tab);
|
|
||||||
void setWarpBehaviorWarningDisabled(bool disabled);
|
|
||||||
void setCheckForUpdates(bool enabled);
|
|
||||||
void setLastUpdateCheckTime(QDateTime time);
|
|
||||||
void setLastUpdateCheckVersion(QVersionNumber version);
|
|
||||||
void setRateLimitTimes(QMap<QUrl, QDateTime> map);
|
|
||||||
QString getRecentProject();
|
|
||||||
QStringList getRecentProjects();
|
|
||||||
bool getReopenOnLaunch();
|
|
||||||
MapSortOrder getMapSortOrder();
|
|
||||||
bool getPrettyCursors();
|
|
||||||
QMap<QString, QByteArray> getMainGeometry();
|
QMap<QString, QByteArray> getMainGeometry();
|
||||||
QMap<QString, QByteArray> getTilesetEditorGeometry();
|
QMap<QString, QByteArray> getTilesetEditorGeometry();
|
||||||
QMap<QString, QByteArray> getPaletteEditorGeometry();
|
QMap<QString, QByteArray> getPaletteEditorGeometry();
|
||||||
QMap<QString, QByteArray> getRegionMapEditorGeometry();
|
QMap<QString, QByteArray> getRegionMapEditorGeometry();
|
||||||
QMap<QString, QByteArray> getProjectSettingsEditorGeometry();
|
QMap<QString, QByteArray> getProjectSettingsEditorGeometry();
|
||||||
QMap<QString, QByteArray> getCustomScriptsEditorGeometry();
|
QMap<QString, QByteArray> getCustomScriptsEditorGeometry();
|
||||||
int getCollisionOpacity();
|
|
||||||
int getCollisionZoom();
|
bool reopenOnLaunch;
|
||||||
int getMetatilesZoom();
|
bool projectManuallyClosed;
|
||||||
int getTilesetEditorMetatilesZoom();
|
int mapListTab;
|
||||||
int getTilesetEditorTilesZoom();
|
bool prettyCursors;
|
||||||
bool getShowPlayerView();
|
bool mirrorConnectingMaps;
|
||||||
bool getShowCursorTile();
|
bool showDiveEmergeMaps;
|
||||||
bool getShowBorder();
|
int diveEmergeMapOpacity;
|
||||||
bool getShowGrid();
|
int diveMapOpacity;
|
||||||
bool getShowTilesetEditorMetatileGrid();
|
int emergeMapOpacity;
|
||||||
bool getShowTilesetEditorLayerGrid();
|
int collisionOpacity;
|
||||||
bool getMonitorFiles();
|
int collisionZoom;
|
||||||
bool getTilesetCheckerboardFill();
|
int metatilesZoom;
|
||||||
QString getTheme();
|
int tilesetEditorMetatilesZoom;
|
||||||
QString getTextEditorOpenFolder();
|
int tilesetEditorTilesZoom;
|
||||||
QString getTextEditorGotoLine();
|
bool showPlayerView;
|
||||||
int getPaletteEditorBitDepth();
|
bool showCursorTile;
|
||||||
int getProjectSettingsTab();
|
bool showBorder;
|
||||||
bool getWarpBehaviorWarningDisabled();
|
bool showGrid;
|
||||||
bool getCheckForUpdates();
|
bool showTilesetEditorMetatileGrid;
|
||||||
QDateTime getLastUpdateCheckTime();
|
bool showTilesetEditorLayerGrid;
|
||||||
QVersionNumber getLastUpdateCheckVersion();
|
bool showTilesetEditorDivider;
|
||||||
QMap<QUrl, QDateTime> getRateLimitTimes();
|
bool monitorFiles;
|
||||||
|
bool tilesetCheckerboardFill;
|
||||||
|
QString theme;
|
||||||
|
QString wildMonChartTheme;
|
||||||
|
QString textEditorOpenFolder;
|
||||||
|
QString textEditorGotoLine;
|
||||||
|
int paletteEditorBitDepth;
|
||||||
|
int projectSettingsTab;
|
||||||
|
bool warpBehaviorWarningDisabled;
|
||||||
|
bool checkForUpdates;
|
||||||
|
QDateTime lastUpdateCheckTime;
|
||||||
|
QVersionNumber lastUpdateCheckVersion;
|
||||||
|
QMap<QUrl, QDateTime> rateLimitTimes;
|
||||||
|
QByteArray wildMonChartGeometry;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QString getConfigFilepath() override;
|
virtual QString getConfigFilepath() override;
|
||||||
virtual void parseConfigKeyValue(QString key, QString value) override;
|
virtual void parseConfigKeyValue(QString key, QString value) override;
|
||||||
virtual QMap<QString, QString> getKeyValueMap() override;
|
virtual QMap<QString, QString> getKeyValueMap() override;
|
||||||
virtual void onNewConfigFileCreated() override {};
|
virtual void init() override {};
|
||||||
virtual void setUnreadKeys() override {};
|
virtual void setUnreadKeys() override {};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStringList recentProjects;
|
|
||||||
bool reopenOnLaunch;
|
|
||||||
QString stringFromByteArray(QByteArray);
|
QString stringFromByteArray(QByteArray);
|
||||||
QByteArray bytesFromString(QString);
|
QByteArray bytesFromString(QString);
|
||||||
MapSortOrder mapSortOrder;
|
|
||||||
bool prettyCursors;
|
QStringList recentProjects;
|
||||||
QByteArray mainWindowGeometry;
|
QByteArray mainWindowGeometry;
|
||||||
QByteArray mainWindowState;
|
QByteArray mainWindowState;
|
||||||
QByteArray mapSplitterState;
|
QByteArray mapSplitterState;
|
||||||
|
@ -181,34 +164,12 @@ private:
|
||||||
QByteArray projectSettingsEditorState;
|
QByteArray projectSettingsEditorState;
|
||||||
QByteArray customScriptsEditorGeometry;
|
QByteArray customScriptsEditorGeometry;
|
||||||
QByteArray customScriptsEditorState;
|
QByteArray customScriptsEditorState;
|
||||||
int collisionOpacity;
|
|
||||||
int collisionZoom;
|
|
||||||
int metatilesZoom;
|
|
||||||
int tilesetEditorMetatilesZoom;
|
|
||||||
int tilesetEditorTilesZoom;
|
|
||||||
bool showPlayerView;
|
|
||||||
bool showCursorTile;
|
|
||||||
bool showBorder;
|
|
||||||
bool showGrid;
|
|
||||||
bool showTilesetEditorMetatileGrid;
|
|
||||||
bool showTilesetEditorLayerGrid;
|
|
||||||
bool monitorFiles;
|
|
||||||
bool tilesetCheckerboardFill;
|
|
||||||
QString theme;
|
|
||||||
QString textEditorOpenFolder;
|
|
||||||
QString textEditorGotoLine;
|
|
||||||
int paletteEditorBitDepth;
|
|
||||||
int projectSettingsTab;
|
|
||||||
bool warpBehaviorWarningDisabled;
|
|
||||||
bool checkForUpdates;
|
|
||||||
QDateTime lastUpdateCheckTime;
|
|
||||||
QVersionNumber lastUpdateCheckVersion;
|
|
||||||
QMap<QUrl, QDateTime> rateLimitTimes;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern PorymapConfig porymapConfig;
|
extern PorymapConfig porymapConfig;
|
||||||
|
|
||||||
enum BaseGameVersion {
|
enum BaseGameVersion {
|
||||||
|
none,
|
||||||
pokeruby,
|
pokeruby,
|
||||||
pokefirered,
|
pokefirered,
|
||||||
pokeemerald,
|
pokeemerald,
|
||||||
|
@ -229,11 +190,13 @@ enum ProjectIdentifier {
|
||||||
define_obj_event_count,
|
define_obj_event_count,
|
||||||
define_min_level,
|
define_min_level,
|
||||||
define_max_level,
|
define_max_level,
|
||||||
|
define_max_encounter_rate,
|
||||||
define_tiles_primary,
|
define_tiles_primary,
|
||||||
define_tiles_total,
|
define_tiles_total,
|
||||||
define_metatiles_primary,
|
define_metatiles_primary,
|
||||||
define_pals_primary,
|
define_pals_primary,
|
||||||
define_pals_total,
|
define_pals_total,
|
||||||
|
define_tiles_per_metatile,
|
||||||
define_map_size,
|
define_map_size,
|
||||||
define_mask_metatile,
|
define_mask_metatile,
|
||||||
define_mask_collision,
|
define_mask_collision,
|
||||||
|
@ -252,7 +215,7 @@ enum ProjectIdentifier {
|
||||||
define_map_empty,
|
define_map_empty,
|
||||||
define_map_section_prefix,
|
define_map_section_prefix,
|
||||||
define_map_section_empty,
|
define_map_section_empty,
|
||||||
define_map_section_count,
|
define_species_prefix,
|
||||||
regex_behaviors,
|
regex_behaviors,
|
||||||
regex_obj_event_gfx,
|
regex_obj_event_gfx,
|
||||||
regex_items,
|
regex_items,
|
||||||
|
@ -267,7 +230,6 @@ enum ProjectIdentifier {
|
||||||
regex_sign_facing_directions,
|
regex_sign_facing_directions,
|
||||||
regex_trainer_types,
|
regex_trainer_types,
|
||||||
regex_music,
|
regex_music,
|
||||||
regex_species,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ProjectFilePath {
|
enum ProjectFilePath {
|
||||||
|
@ -308,7 +270,6 @@ enum ProjectFilePath {
|
||||||
constants_obj_event_movement,
|
constants_obj_event_movement,
|
||||||
constants_obj_events,
|
constants_obj_events,
|
||||||
constants_event_bg,
|
constants_event_bg,
|
||||||
constants_region_map_sections,
|
|
||||||
constants_metatile_labels,
|
constants_metatile_labels,
|
||||||
constants_metatile_behaviors,
|
constants_metatile_behaviors,
|
||||||
constants_species,
|
constants_species,
|
||||||
|
@ -316,6 +277,7 @@ enum ProjectFilePath {
|
||||||
global_fieldmap,
|
global_fieldmap,
|
||||||
fieldmap,
|
fieldmap,
|
||||||
initial_facing_table,
|
initial_facing_table,
|
||||||
|
wild_encounter,
|
||||||
pokemon_icon_table,
|
pokemon_icon_table,
|
||||||
pokemon_gfx,
|
pokemon_gfx,
|
||||||
};
|
};
|
||||||
|
@ -330,7 +292,7 @@ public:
|
||||||
this->baseGameVersion = BaseGameVersion::pokeemerald;
|
this->baseGameVersion = BaseGameVersion::pokeemerald;
|
||||||
// Reset non-version-specific settings
|
// Reset non-version-specific settings
|
||||||
this->usePoryScript = false;
|
this->usePoryScript = false;
|
||||||
this->enableTripleLayerMetatiles = false;
|
this->tripleLayerMetatilesEnabled = false;
|
||||||
this->defaultMetatileId = 1;
|
this->defaultMetatileId = 1;
|
||||||
this->defaultElevation = 3;
|
this->defaultElevation = 3;
|
||||||
this->defaultCollision = 0;
|
this->defaultCollision = 0;
|
||||||
|
@ -339,6 +301,7 @@ public:
|
||||||
this->prefabImportPrompted = false;
|
this->prefabImportPrompted = false;
|
||||||
this->tilesetsHaveCallback = true;
|
this->tilesetsHaveCallback = true;
|
||||||
this->tilesetsHaveIsCompressed = true;
|
this->tilesetsHaveIsCompressed = true;
|
||||||
|
this->setTransparentPixelsBlack = true;
|
||||||
this->filePaths.clear();
|
this->filePaths.clear();
|
||||||
this->eventIconPaths.clear();
|
this->eventIconPaths.clear();
|
||||||
this->pokemonIconPaths.clear();
|
this->pokemonIconPaths.clear();
|
||||||
|
@ -348,58 +311,20 @@ public:
|
||||||
this->blockMetatileIdMask = 0x03FF;
|
this->blockMetatileIdMask = 0x03FF;
|
||||||
this->blockCollisionMask = 0x0C00;
|
this->blockCollisionMask = 0x0C00;
|
||||||
this->blockElevationMask = 0xF000;
|
this->blockElevationMask = 0xF000;
|
||||||
|
this->unusedTileNormal = 0x3014;
|
||||||
|
this->unusedTileCovered = 0x0000;
|
||||||
|
this->unusedTileSplit = 0x0000;
|
||||||
this->identifiers.clear();
|
this->identifiers.clear();
|
||||||
this->readKeys.clear();
|
this->readKeys.clear();
|
||||||
}
|
}
|
||||||
static const QMap<ProjectIdentifier, QPair<QString, QString>> defaultIdentifiers;
|
static const QMap<ProjectIdentifier, QPair<QString, QString>> defaultIdentifiers;
|
||||||
static const QMap<ProjectFilePath, QPair<QString, QString>> defaultPaths;
|
static const QMap<ProjectFilePath, QPair<QString, QString>> defaultPaths;
|
||||||
static const QStringList versionStrings;
|
static const QStringList versionStrings;
|
||||||
|
static BaseGameVersion stringToBaseGameVersion(const QString &string);
|
||||||
|
|
||||||
void reset(BaseGameVersion baseGameVersion);
|
void reset(BaseGameVersion baseGameVersion);
|
||||||
void setBaseGameVersion(BaseGameVersion baseGameVersion);
|
|
||||||
BaseGameVersion getBaseGameVersion();
|
|
||||||
QString getBaseGameVersionString();
|
|
||||||
QString getBaseGameVersionString(BaseGameVersion version);
|
|
||||||
BaseGameVersion stringToBaseGameVersion(QString string, bool * ok = nullptr);
|
|
||||||
void setUsePoryScript(bool usePoryScript);
|
|
||||||
bool getUsePoryScript();
|
|
||||||
void setProjectDir(QString projectDir);
|
|
||||||
QString getProjectDir();
|
|
||||||
void setUseCustomBorderSize(bool enable);
|
|
||||||
bool getUseCustomBorderSize();
|
|
||||||
void setEventWeatherTriggerEnabled(bool enable);
|
|
||||||
bool getEventWeatherTriggerEnabled();
|
|
||||||
void setEventSecretBaseEnabled(bool enable);
|
|
||||||
bool getEventSecretBaseEnabled();
|
|
||||||
void setHiddenItemQuantityEnabled(bool enable);
|
|
||||||
bool getHiddenItemQuantityEnabled();
|
|
||||||
void setHiddenItemRequiresItemfinderEnabled(bool enable);
|
|
||||||
bool getHiddenItemRequiresItemfinderEnabled();
|
|
||||||
void setHealLocationRespawnDataEnabled(bool enable);
|
|
||||||
bool getHealLocationRespawnDataEnabled();
|
|
||||||
void setEventCloneObjectEnabled(bool enable);
|
|
||||||
bool getEventCloneObjectEnabled();
|
|
||||||
void setFloorNumberEnabled(bool enable);
|
|
||||||
bool getFloorNumberEnabled();
|
|
||||||
void setCreateMapTextFileEnabled(bool enable);
|
|
||||||
bool getCreateMapTextFileEnabled();
|
|
||||||
void setTripleLayerMetatilesEnabled(bool enable);
|
|
||||||
bool getTripleLayerMetatilesEnabled();
|
|
||||||
int getNumLayersInMetatile();
|
|
||||||
int getNumTilesInMetatile();
|
|
||||||
void setDefaultMetatileId(uint16_t metatileId);
|
|
||||||
uint16_t getDefaultMetatileId();
|
|
||||||
void setDefaultElevation(uint16_t elevation);
|
|
||||||
uint16_t getDefaultElevation();
|
|
||||||
void setDefaultCollision(uint16_t collision);
|
|
||||||
uint16_t getDefaultCollision();
|
|
||||||
void setNewMapBorderMetatileIds(QList<uint16_t> metatileIds);
|
|
||||||
QList<uint16_t> getNewMapBorderMetatileIds();
|
|
||||||
QString getDefaultPrimaryTileset();
|
|
||||||
QString getDefaultSecondaryTileset();
|
|
||||||
void setDefaultPrimaryTileset(QString tilesetName);
|
|
||||||
void setDefaultSecondaryTileset(QString tilesetName);
|
|
||||||
void setFilePath(const QString &pathId, const QString &path);
|
|
||||||
void setFilePath(ProjectFilePath pathId, const QString &path);
|
void setFilePath(ProjectFilePath pathId, const QString &path);
|
||||||
|
void setFilePath(const QString &pathId, const QString &path);
|
||||||
QString getCustomFilePath(ProjectFilePath pathId);
|
QString getCustomFilePath(ProjectFilePath pathId);
|
||||||
QString getCustomFilePath(const QString &pathId);
|
QString getCustomFilePath(const QString &pathId);
|
||||||
QString getFilePath(ProjectFilePath pathId);
|
QString getFilePath(ProjectFilePath pathId);
|
||||||
|
@ -408,79 +333,40 @@ public:
|
||||||
QString getCustomIdentifier(ProjectIdentifier id);
|
QString getCustomIdentifier(ProjectIdentifier id);
|
||||||
QString getCustomIdentifier(const QString &id);
|
QString getCustomIdentifier(const QString &id);
|
||||||
QString getIdentifier(ProjectIdentifier id);
|
QString getIdentifier(ProjectIdentifier id);
|
||||||
void setPrefabFilepath(QString filepath);
|
QString getBaseGameVersionString(BaseGameVersion version);
|
||||||
QString getPrefabFilepath();
|
QString getBaseGameVersionString();
|
||||||
void setPrefabImportPrompted(bool prompted);
|
int getNumLayersInMetatile();
|
||||||
bool getPrefabImportPrompted();
|
int getNumTilesInMetatile();
|
||||||
void setTilesetsHaveCallback(bool has);
|
|
||||||
bool getTilesetsHaveCallback();
|
|
||||||
void setTilesetsHaveIsCompressed(bool has);
|
|
||||||
bool getTilesetsHaveIsCompressed();
|
|
||||||
int getMetatileAttributesSize();
|
|
||||||
void setMetatileAttributesSize(int size);
|
|
||||||
uint32_t getMetatileBehaviorMask();
|
|
||||||
uint32_t getMetatileTerrainTypeMask();
|
|
||||||
uint32_t getMetatileEncounterTypeMask();
|
|
||||||
uint32_t getMetatileLayerTypeMask();
|
|
||||||
void setMetatileBehaviorMask(uint32_t mask);
|
|
||||||
void setMetatileTerrainTypeMask(uint32_t mask);
|
|
||||||
void setMetatileEncounterTypeMask(uint32_t mask);
|
|
||||||
void setMetatileLayerTypeMask(uint32_t mask);
|
|
||||||
uint16_t getBlockMetatileIdMask();
|
|
||||||
uint16_t getBlockCollisionMask();
|
|
||||||
uint16_t getBlockElevationMask();
|
|
||||||
void setBlockMetatileIdMask(uint16_t mask);
|
|
||||||
void setBlockCollisionMask(uint16_t mask);
|
|
||||||
void setBlockElevationMask(uint16_t mask);
|
|
||||||
bool getMapAllowFlagsEnabled();
|
|
||||||
void setMapAllowFlagsEnabled(bool enabled);
|
|
||||||
void setEventIconPath(Event::Group group, const QString &path);
|
void setEventIconPath(Event::Group group, const QString &path);
|
||||||
QString getEventIconPath(Event::Group group);
|
QString getEventIconPath(Event::Group group);
|
||||||
void setPokemonIconPath(const QString &species, const QString &path);
|
void setPokemonIconPath(const QString &species, const QString &path);
|
||||||
QString getPokemonIconPath(const QString &species);
|
QString getPokemonIconPath(const QString &species);
|
||||||
QHash<QString, QString> getPokemonIconPaths();
|
QMap<QString, QString> getPokemonIconPaths();
|
||||||
void setCollisionSheetPath(const QString &path);
|
|
||||||
QString getCollisionSheetPath();
|
|
||||||
void setCollisionSheetWidth(int width);
|
|
||||||
int getCollisionSheetWidth();
|
|
||||||
void setCollisionSheetHeight(int height);
|
|
||||||
int getCollisionSheetHeight();
|
|
||||||
void setWarpBehaviors(const QSet<uint32_t> &behaviors);
|
|
||||||
QSet<uint32_t> getWarpBehaviors();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual QString getConfigFilepath() override;
|
|
||||||
virtual void parseConfigKeyValue(QString key, QString value) override;
|
|
||||||
virtual QMap<QString, QString> getKeyValueMap() override;
|
|
||||||
virtual void onNewConfigFileCreated() override;
|
|
||||||
virtual void setUnreadKeys() override;
|
|
||||||
private:
|
|
||||||
BaseGameVersion baseGameVersion;
|
BaseGameVersion baseGameVersion;
|
||||||
QString projectDir;
|
QString projectDir;
|
||||||
QMap<ProjectIdentifier, QString> identifiers;
|
|
||||||
QMap<ProjectFilePath, QString> filePaths;
|
|
||||||
bool usePoryScript;
|
bool usePoryScript;
|
||||||
bool useCustomBorderSize;
|
bool useCustomBorderSize;
|
||||||
bool enableEventWeatherTrigger;
|
bool eventWeatherTriggerEnabled;
|
||||||
bool enableEventSecretBase;
|
bool eventSecretBaseEnabled;
|
||||||
bool enableHiddenItemQuantity;
|
bool hiddenItemQuantityEnabled;
|
||||||
bool enableHiddenItemRequiresItemfinder;
|
bool hiddenItemRequiresItemfinderEnabled;
|
||||||
bool enableHealLocationRespawnData;
|
bool healLocationRespawnDataEnabled;
|
||||||
bool enableEventCloneObject;
|
bool eventCloneObjectEnabled;
|
||||||
bool enableFloorNumber;
|
bool floorNumberEnabled;
|
||||||
bool createMapTextFile;
|
bool createMapTextFileEnabled;
|
||||||
bool enableTripleLayerMetatiles;
|
bool tripleLayerMetatilesEnabled;
|
||||||
uint16_t defaultMetatileId;
|
uint16_t defaultMetatileId;
|
||||||
uint16_t defaultElevation;
|
uint16_t defaultElevation;
|
||||||
uint16_t defaultCollision;
|
uint16_t defaultCollision;
|
||||||
QList<uint16_t> newMapBorderMetatileIds;
|
QList<uint16_t> newMapBorderMetatileIds;
|
||||||
QString defaultPrimaryTileset;
|
QString defaultPrimaryTileset;
|
||||||
QString defaultSecondaryTileset;
|
QString defaultSecondaryTileset;
|
||||||
QStringList readKeys;
|
|
||||||
QString prefabFilepath;
|
QString prefabFilepath;
|
||||||
bool prefabImportPrompted;
|
bool prefabImportPrompted;
|
||||||
bool tilesetsHaveCallback;
|
bool tilesetsHaveCallback;
|
||||||
bool tilesetsHaveIsCompressed;
|
bool tilesetsHaveIsCompressed;
|
||||||
|
bool setTransparentPixelsBlack;
|
||||||
int metatileAttributesSize;
|
int metatileAttributesSize;
|
||||||
uint32_t metatileBehaviorMask;
|
uint32_t metatileBehaviorMask;
|
||||||
uint32_t metatileTerrainTypeMask;
|
uint32_t metatileTerrainTypeMask;
|
||||||
|
@ -489,13 +375,28 @@ private:
|
||||||
uint16_t blockMetatileIdMask;
|
uint16_t blockMetatileIdMask;
|
||||||
uint16_t blockCollisionMask;
|
uint16_t blockCollisionMask;
|
||||||
uint16_t blockElevationMask;
|
uint16_t blockElevationMask;
|
||||||
bool enableMapAllowFlags;
|
uint16_t unusedTileNormal;
|
||||||
QMap<Event::Group, QString> eventIconPaths;
|
uint16_t unusedTileCovered;
|
||||||
QHash<QString, QString> pokemonIconPaths;
|
uint16_t unusedTileSplit;
|
||||||
|
bool mapAllowFlagsEnabled;
|
||||||
QString collisionSheetPath;
|
QString collisionSheetPath;
|
||||||
int collisionSheetWidth;
|
int collisionSheetWidth;
|
||||||
int collisionSheetHeight;
|
int collisionSheetHeight;
|
||||||
QSet<uint32_t> warpBehaviors;
|
QList<uint32_t> warpBehaviors;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual QString getConfigFilepath() override;
|
||||||
|
virtual void parseConfigKeyValue(QString key, QString value) override;
|
||||||
|
virtual QMap<QString, QString> getKeyValueMap() override;
|
||||||
|
virtual void init() override;
|
||||||
|
virtual void setUnreadKeys() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QStringList readKeys;
|
||||||
|
QMap<ProjectIdentifier, QString> identifiers;
|
||||||
|
QMap<ProjectFilePath, QString> filePaths;
|
||||||
|
QMap<Event::Group, QString> eventIconPaths;
|
||||||
|
QMap<QString, QString> pokemonIconPaths;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ProjectConfig projectConfig;
|
extern ProjectConfig projectConfig;
|
||||||
|
@ -507,37 +408,34 @@ public:
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
virtual void reset() override {
|
virtual void reset() override {
|
||||||
this->recentMap = QString();
|
this->recentMapOrLayout = QString();
|
||||||
this->useEncounterJson = true;
|
this->useEncounterJson = true;
|
||||||
this->customScripts.clear();
|
this->customScripts.clear();
|
||||||
this->readKeys.clear();
|
this->readKeys.clear();
|
||||||
}
|
}
|
||||||
void setRecentMap(const QString &map);
|
void parseCustomScripts(QString input);
|
||||||
QString getRecentMap();
|
QString outputCustomScripts();
|
||||||
void setEncounterJsonActive(bool active);
|
|
||||||
bool getEncounterJsonActive();
|
|
||||||
void setProjectDir(QString projectDir);
|
|
||||||
QString getProjectDir();
|
|
||||||
void setCustomScripts(QStringList scripts, QList<bool> enabled);
|
void setCustomScripts(QStringList scripts, QList<bool> enabled);
|
||||||
QStringList getCustomScriptPaths();
|
QStringList getCustomScriptPaths();
|
||||||
QList<bool> getCustomScriptsEnabled();
|
QList<bool> getCustomScriptsEnabled();
|
||||||
void parseCustomScripts(QString input);
|
|
||||||
QString outputCustomScripts();
|
QString projectDir;
|
||||||
|
QString recentMapOrLayout;
|
||||||
|
bool useEncounterJson;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QString getConfigFilepath() override;
|
virtual QString getConfigFilepath() override;
|
||||||
virtual void parseConfigKeyValue(QString key, QString value) override;
|
virtual void parseConfigKeyValue(QString key, QString value) override;
|
||||||
virtual QMap<QString, QString> getKeyValueMap() override;
|
virtual QMap<QString, QString> getKeyValueMap() override;
|
||||||
virtual void onNewConfigFileCreated() override;
|
virtual void init() override;
|
||||||
virtual void setUnreadKeys() override;
|
virtual void setUnreadKeys() override;
|
||||||
#ifdef CONFIG_BACKWARDS_COMPATABILITY
|
#ifdef CONFIG_BACKWARDS_COMPATABILITY
|
||||||
friend class ProjectConfig;
|
friend class ProjectConfig;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString projectDir;
|
|
||||||
QString recentMap;
|
|
||||||
bool useEncounterJson;
|
|
||||||
QMap<QString, bool> customScripts;
|
|
||||||
QStringList readKeys;
|
QStringList readKeys;
|
||||||
|
QMap<QString, bool> customScripts;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern UserConfig userConfig;
|
extern UserConfig userConfig;
|
||||||
|
@ -567,7 +465,7 @@ protected:
|
||||||
virtual QString getConfigFilepath() override;
|
virtual QString getConfigFilepath() override;
|
||||||
virtual void parseConfigKeyValue(QString key, QString value) override;
|
virtual void parseConfigKeyValue(QString key, QString value) override;
|
||||||
virtual QMap<QString, QString> getKeyValueMap() override;
|
virtual QMap<QString, QString> getKeyValueMap() override;
|
||||||
virtual void onNewConfigFileCreated() override { };
|
virtual void init() override { };
|
||||||
virtual void setUnreadKeys() override { };
|
virtual void setUnreadKeys() override { };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
#define EDITCOMMANDS_H
|
#define EDITCOMMANDS_H
|
||||||
|
|
||||||
#include "blockdata.h"
|
#include "blockdata.h"
|
||||||
|
#include "mapconnection.h"
|
||||||
|
|
||||||
#include <QUndoCommand>
|
#include <QUndoCommand>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
class MapPixmapItem;
|
|
||||||
class Map;
|
class Map;
|
||||||
|
class Layout;
|
||||||
class Blockdata;
|
class Blockdata;
|
||||||
class Event;
|
class Event;
|
||||||
class DraggablePixmapItem;
|
class DraggablePixmapItem;
|
||||||
|
@ -22,15 +24,20 @@ enum CommandId {
|
||||||
ID_PaintCollision,
|
ID_PaintCollision,
|
||||||
ID_BucketFillCollision,
|
ID_BucketFillCollision,
|
||||||
ID_MagicFillCollision,
|
ID_MagicFillCollision,
|
||||||
ID_ResizeMap,
|
ID_ResizeLayout,
|
||||||
ID_PaintBorder,
|
ID_PaintBorder,
|
||||||
ID_ScriptEditMap,
|
ID_ScriptEditLayout,
|
||||||
ID_EventMove,
|
ID_EventMove,
|
||||||
ID_EventShift,
|
ID_EventShift,
|
||||||
ID_EventCreate,
|
ID_EventCreate,
|
||||||
ID_EventDelete,
|
ID_EventDelete,
|
||||||
ID_EventDuplicate,
|
ID_EventDuplicate,
|
||||||
ID_EventPaste,
|
ID_EventPaste,
|
||||||
|
ID_MapConnectionMove,
|
||||||
|
ID_MapConnectionChangeDirection,
|
||||||
|
ID_MapConnectionChangeMap,
|
||||||
|
ID_MapConnectionAdd,
|
||||||
|
ID_MapConnectionRemove,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IDMask_EventType_Object (1 << 8)
|
#define IDMask_EventType_Object (1 << 8)
|
||||||
|
@ -43,7 +50,7 @@ enum CommandId {
|
||||||
/// onto the map using the pencil tool.
|
/// onto the map using the pencil tool.
|
||||||
class PaintMetatile : public QUndoCommand {
|
class PaintMetatile : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
PaintMetatile(Map *map,
|
PaintMetatile(Layout *layout,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr);
|
unsigned actionId, QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
@ -54,7 +61,7 @@ public:
|
||||||
int id() const override { return CommandId::ID_PaintMetatile; }
|
int id() const override { return CommandId::ID_PaintMetatile; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout;
|
||||||
|
|
||||||
Blockdata newMetatiles;
|
Blockdata newMetatiles;
|
||||||
Blockdata oldMetatiles;
|
Blockdata oldMetatiles;
|
||||||
|
@ -68,10 +75,10 @@ private:
|
||||||
/// on the metatile collision and elevation.
|
/// on the metatile collision and elevation.
|
||||||
class PaintCollision : public PaintMetatile {
|
class PaintCollision : public PaintMetatile {
|
||||||
public:
|
public:
|
||||||
PaintCollision(Map *map,
|
PaintCollision(Layout *layout,
|
||||||
const Blockdata &oldCollision, const Blockdata &newCollision,
|
const Blockdata &oldCollision, const Blockdata &newCollision,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr)
|
unsigned actionId, QUndoCommand *parent = nullptr)
|
||||||
: PaintMetatile(map, oldCollision, newCollision, actionId, parent) {
|
: PaintMetatile(layout, oldCollision, newCollision, actionId, parent) {
|
||||||
setText("Paint Collision");
|
setText("Paint Collision");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +90,7 @@ public:
|
||||||
/// Implements a command to commit paint actions on the map border.
|
/// Implements a command to commit paint actions on the map border.
|
||||||
class PaintBorder : public QUndoCommand {
|
class PaintBorder : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
PaintBorder(Map *map,
|
PaintBorder(Layout *layout,
|
||||||
const Blockdata &oldBorder, const Blockdata &newBorder,
|
const Blockdata &oldBorder, const Blockdata &newBorder,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr);
|
unsigned actionId, QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
@ -94,7 +101,7 @@ public:
|
||||||
int id() const override { return CommandId::ID_PaintBorder; }
|
int id() const override { return CommandId::ID_PaintBorder; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout;
|
||||||
|
|
||||||
Blockdata newBorder;
|
Blockdata newBorder;
|
||||||
Blockdata oldBorder;
|
Blockdata oldBorder;
|
||||||
|
@ -108,10 +115,10 @@ private:
|
||||||
/// with the bucket tool onto the map.
|
/// with the bucket tool onto the map.
|
||||||
class BucketFillMetatile : public PaintMetatile {
|
class BucketFillMetatile : public PaintMetatile {
|
||||||
public:
|
public:
|
||||||
BucketFillMetatile(Map *map,
|
BucketFillMetatile(Layout *layout,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr)
|
unsigned actionId, QUndoCommand *parent = nullptr)
|
||||||
: PaintMetatile(map, oldMetatiles, newMetatiles, actionId, parent) {
|
: PaintMetatile(layout, oldMetatiles, newMetatiles, actionId, parent) {
|
||||||
setText("Bucket Fill Metatiles");
|
setText("Bucket Fill Metatiles");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,10 +131,10 @@ public:
|
||||||
/// on the metatile collision and elevation.
|
/// on the metatile collision and elevation.
|
||||||
class BucketFillCollision : public PaintCollision {
|
class BucketFillCollision : public PaintCollision {
|
||||||
public:
|
public:
|
||||||
BucketFillCollision(Map *map,
|
BucketFillCollision(Layout *layout,
|
||||||
const Blockdata &oldCollision, const Blockdata &newCollision,
|
const Blockdata &oldCollision, const Blockdata &newCollision,
|
||||||
QUndoCommand *parent = nullptr)
|
QUndoCommand *parent = nullptr)
|
||||||
: PaintCollision(map, oldCollision, newCollision, -1, parent) {
|
: PaintCollision(layout, oldCollision, newCollision, -1, parent) {
|
||||||
setText("Flood Fill Collision");
|
setText("Flood Fill Collision");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,10 +148,10 @@ public:
|
||||||
/// with the bucket or paint tool onto the map.
|
/// with the bucket or paint tool onto the map.
|
||||||
class MagicFillMetatile : public PaintMetatile {
|
class MagicFillMetatile : public PaintMetatile {
|
||||||
public:
|
public:
|
||||||
MagicFillMetatile(Map *map,
|
MagicFillMetatile(Layout *layout,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr)
|
unsigned actionId, QUndoCommand *parent = nullptr)
|
||||||
: PaintMetatile(map, oldMetatiles, newMetatiles, actionId, parent) {
|
: PaintMetatile(layout, oldMetatiles, newMetatiles, actionId, parent) {
|
||||||
setText("Magic Fill Metatiles");
|
setText("Magic Fill Metatiles");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,10 +163,10 @@ public:
|
||||||
/// Implements a command to commit magic fill collision actions.
|
/// Implements a command to commit magic fill collision actions.
|
||||||
class MagicFillCollision : public PaintCollision {
|
class MagicFillCollision : public PaintCollision {
|
||||||
public:
|
public:
|
||||||
MagicFillCollision(Map *map,
|
MagicFillCollision(Layout *layout,
|
||||||
const Blockdata &oldCollision, const Blockdata &newCollision,
|
const Blockdata &oldCollision, const Blockdata &newCollision,
|
||||||
QUndoCommand *parent = nullptr)
|
QUndoCommand *parent = nullptr)
|
||||||
: PaintCollision(map, oldCollision, newCollision, -1, parent) {
|
: PaintCollision(layout, oldCollision, newCollision, -1, parent) {
|
||||||
setText("Magic Fill Collision");
|
setText("Magic Fill Collision");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,7 +179,7 @@ public:
|
||||||
/// Implements a command to commit metatile shift actions.
|
/// Implements a command to commit metatile shift actions.
|
||||||
class ShiftMetatiles : public QUndoCommand {
|
class ShiftMetatiles : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
ShiftMetatiles(Map *map,
|
ShiftMetatiles(Layout *layout,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
unsigned actionId, QUndoCommand *parent = nullptr);
|
unsigned actionId, QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
@ -183,7 +190,7 @@ public:
|
||||||
int id() const override { return CommandId::ID_ShiftMetatiles; }
|
int id() const override { return CommandId::ID_ShiftMetatiles; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout= nullptr;
|
||||||
|
|
||||||
Blockdata newMetatiles;
|
Blockdata newMetatiles;
|
||||||
Blockdata oldMetatiles;
|
Blockdata oldMetatiles;
|
||||||
|
@ -194,9 +201,9 @@ private:
|
||||||
|
|
||||||
|
|
||||||
/// Implements a command to commit a map or border resize action.
|
/// Implements a command to commit a map or border resize action.
|
||||||
class ResizeMap : public QUndoCommand {
|
class ResizeLayout : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
ResizeMap(Map *map, QSize oldMapDimensions, QSize newMapDimensions,
|
ResizeLayout(Layout *layout, QSize oldLayoutDimensions, QSize newLayoutDimensions,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
QSize oldBorderDimensions, QSize newBorderDimensions,
|
QSize oldBorderDimensions, QSize newBorderDimensions,
|
||||||
const Blockdata &oldBorder, const Blockdata &newBorder,
|
const Blockdata &oldBorder, const Blockdata &newBorder,
|
||||||
|
@ -206,15 +213,15 @@ public:
|
||||||
void redo() override;
|
void redo() override;
|
||||||
|
|
||||||
bool mergeWith(const QUndoCommand *) override { return false; }
|
bool mergeWith(const QUndoCommand *) override { return false; }
|
||||||
int id() const override { return CommandId::ID_ResizeMap; }
|
int id() const override { return CommandId::ID_ResizeLayout; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout = nullptr;
|
||||||
|
|
||||||
int oldMapWidth;
|
int oldLayoutWidth;
|
||||||
int oldMapHeight;
|
int oldLayoutHeight;
|
||||||
int newMapWidth;
|
int newLayoutWidth;
|
||||||
int newMapHeight;
|
int newLayoutHeight;
|
||||||
|
|
||||||
int oldBorderWidth;
|
int oldBorderWidth;
|
||||||
int oldBorderHeight;
|
int oldBorderHeight;
|
||||||
|
@ -344,10 +351,10 @@ public:
|
||||||
|
|
||||||
/// Implements a command to commit map edits from the scripting API.
|
/// Implements a command to commit map edits from the scripting API.
|
||||||
/// The scripting api can edit map/border blocks and dimensions.
|
/// The scripting api can edit map/border blocks and dimensions.
|
||||||
class ScriptEditMap : public QUndoCommand {
|
class ScriptEditLayout : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
ScriptEditMap(Map *map,
|
ScriptEditLayout(Layout *layout,
|
||||||
QSize oldMapDimensions, QSize newMapDimensions,
|
QSize oldLayoutDimensions, QSize newLayoutDimensions,
|
||||||
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
const Blockdata &oldMetatiles, const Blockdata &newMetatiles,
|
||||||
QSize oldBorderDimensions, QSize newBorderDimensions,
|
QSize oldBorderDimensions, QSize newBorderDimensions,
|
||||||
const Blockdata &oldBorder, const Blockdata &newBorder,
|
const Blockdata &oldBorder, const Blockdata &newBorder,
|
||||||
|
@ -357,10 +364,10 @@ public:
|
||||||
void redo() override;
|
void redo() override;
|
||||||
|
|
||||||
bool mergeWith(const QUndoCommand *) override { return false; }
|
bool mergeWith(const QUndoCommand *) override { return false; }
|
||||||
int id() const override { return CommandId::ID_ScriptEditMap; }
|
int id() const override { return CommandId::ID_ScriptEditLayout; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout = nullptr;
|
||||||
|
|
||||||
Blockdata newMetatiles;
|
Blockdata newMetatiles;
|
||||||
Blockdata oldMetatiles;
|
Blockdata oldMetatiles;
|
||||||
|
@ -368,10 +375,10 @@ private:
|
||||||
Blockdata newBorder;
|
Blockdata newBorder;
|
||||||
Blockdata oldBorder;
|
Blockdata oldBorder;
|
||||||
|
|
||||||
int oldMapWidth;
|
int oldLayoutWidth;
|
||||||
int oldMapHeight;
|
int oldLayoutHeight;
|
||||||
int newMapWidth;
|
int newLayoutWidth;
|
||||||
int newMapHeight;
|
int newLayoutHeight;
|
||||||
|
|
||||||
int oldBorderWidth;
|
int oldBorderWidth;
|
||||||
int oldBorderHeight;
|
int oldBorderHeight;
|
||||||
|
@ -379,4 +386,113 @@ private:
|
||||||
int newBorderHeight;
|
int newBorderHeight;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Implements a command to commit Map Connectien move actions.
|
||||||
|
/// Actions are merged into one until the mouse is released when editing by click-and-drag,
|
||||||
|
/// or when the offset spin box loses focus when editing with the list UI.
|
||||||
|
class MapConnectionMove : public QUndoCommand {
|
||||||
|
public:
|
||||||
|
MapConnectionMove(MapConnection *connection, int newOffset, unsigned actionId,
|
||||||
|
QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
void undo() override;
|
||||||
|
void redo() override;
|
||||||
|
|
||||||
|
bool mergeWith(const QUndoCommand *command) override;
|
||||||
|
int id() const override { return CommandId::ID_MapConnectionMove; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
MapConnection *connection;
|
||||||
|
int newOffset;
|
||||||
|
int oldOffset;
|
||||||
|
bool mirrored;
|
||||||
|
unsigned actionId;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Implements a command to commit changes to a Map Connectien's 'direction' field.
|
||||||
|
class MapConnectionChangeDirection : public QUndoCommand {
|
||||||
|
public:
|
||||||
|
MapConnectionChangeDirection(MapConnection *connection, QString newDirection,
|
||||||
|
QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
void undo() override;
|
||||||
|
void redo() override;
|
||||||
|
|
||||||
|
int id() const override { return CommandId::ID_MapConnectionChangeDirection; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPointer<MapConnection> connection;
|
||||||
|
QString newDirection;
|
||||||
|
QString oldDirection;
|
||||||
|
int oldOffset;
|
||||||
|
int newOffset;
|
||||||
|
bool mirrored;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Implements a command to commit changes to a Map Connectien's 'map' field.
|
||||||
|
class MapConnectionChangeMap : public QUndoCommand {
|
||||||
|
public:
|
||||||
|
MapConnectionChangeMap(MapConnection *connection, QString newMapName,
|
||||||
|
QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
void undo() override;
|
||||||
|
void redo() override;
|
||||||
|
|
||||||
|
int id() const override { return CommandId::ID_MapConnectionChangeMap; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPointer<MapConnection> connection;
|
||||||
|
QString newMapName;
|
||||||
|
QString oldMapName;
|
||||||
|
int oldOffset;
|
||||||
|
int newOffset;
|
||||||
|
bool mirrored;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Implements a command to commit adding a Map Connection to a map.
|
||||||
|
class MapConnectionAdd : public QUndoCommand {
|
||||||
|
public:
|
||||||
|
MapConnectionAdd(Map *map, MapConnection *connection,
|
||||||
|
QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
void undo() override;
|
||||||
|
void redo() override;
|
||||||
|
|
||||||
|
int id() const override { return CommandId::ID_MapConnectionAdd; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Map *map = nullptr;
|
||||||
|
Map *mirrorMap = nullptr;
|
||||||
|
QPointer<MapConnection> connection = nullptr;
|
||||||
|
QPointer<MapConnection> mirror = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Implements a command to commit removing a Map Connection from a map.
|
||||||
|
class MapConnectionRemove : public QUndoCommand {
|
||||||
|
public:
|
||||||
|
MapConnectionRemove(Map *map, MapConnection *connection,
|
||||||
|
QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
|
void undo() override;
|
||||||
|
void redo() override;
|
||||||
|
|
||||||
|
int id() const override { return CommandId::ID_MapConnectionRemove; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Map *map = nullptr;
|
||||||
|
Map *mirrorMap = nullptr;
|
||||||
|
QPointer<MapConnection> connection = nullptr;
|
||||||
|
QPointer<MapConnection> mirror = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // EDITCOMMANDS_H
|
#endif // EDITCOMMANDS_H
|
||||||
|
|
|
@ -118,6 +118,8 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Event* create(Event::Type type);
|
||||||
|
|
||||||
static QMap<Event::Group, const QPixmap*> icons;
|
static QMap<Event::Group, const QPixmap*> icons;
|
||||||
|
|
||||||
// standard public methods
|
// standard public methods
|
||||||
|
@ -185,6 +187,7 @@ public:
|
||||||
static QString eventGroupToString(Event::Group group);
|
static QString eventGroupToString(Event::Group group);
|
||||||
static QString eventTypeToString(Event::Type type);
|
static QString eventTypeToString(Event::Type type);
|
||||||
static Event::Type eventTypeFromString(QString type);
|
static Event::Type eventTypeFromString(QString type);
|
||||||
|
static void clearIcons();
|
||||||
static void setIcons();
|
static void setIcons();
|
||||||
|
|
||||||
// protected attributes
|
// protected attributes
|
||||||
|
|
65
include/core/filedialog.h
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef FILEDIALOG_H
|
||||||
|
#define FILEDIALOG_H
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
|
||||||
|
/*
|
||||||
|
Static QFileDialog functions will (unless otherwise specified) use native file dialogs.
|
||||||
|
In general this is good (we want our file dialogs to be visually seamless) but unfortunately
|
||||||
|
the native file dialogs ignore the parent widget, so in some cases they'll return focus to
|
||||||
|
the main window rather than the window that opened the file dialog.
|
||||||
|
|
||||||
|
To make working around this a little easier we use this class, which will use the native
|
||||||
|
file dialog and manually return focus to the parent widget.
|
||||||
|
|
||||||
|
It will also save the directory of the previous file selected in a file dialog, and if
|
||||||
|
no 'dir' argument is specified it will open new dialogs at that directory.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
class FileDialog : public QFileDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FileDialog(QWidget *parent, Qt::WindowFlags flags) : QFileDialog(parent, flags) {};
|
||||||
|
FileDialog(QWidget *parent = nullptr,
|
||||||
|
const QString &caption = QString(),
|
||||||
|
const QString &directory = QString(),
|
||||||
|
const QString &filter = QString()) : QFileDialog(parent, caption, directory, filter) {};
|
||||||
|
|
||||||
|
static void setDirectory(const QString &dir) { FileDialog::prevDirectory = dir; }
|
||||||
|
static QString getDirectory() { return FileDialog::prevDirectory; }
|
||||||
|
|
||||||
|
static QString getOpenFileName(QWidget *parent = nullptr,
|
||||||
|
const QString &caption = QString(),
|
||||||
|
const QString &dir = QString(),
|
||||||
|
const QString &filter = QString(),
|
||||||
|
QString *selectedFilter = nullptr,
|
||||||
|
QFileDialog::Options options = Options());
|
||||||
|
|
||||||
|
static QStringList getOpenFileNames(QWidget *parent = nullptr,
|
||||||
|
const QString &caption = QString(),
|
||||||
|
const QString &dir = QString(),
|
||||||
|
const QString &filter = QString(),
|
||||||
|
QString *selectedFilter = nullptr,
|
||||||
|
QFileDialog::Options options = Options());
|
||||||
|
|
||||||
|
static QString getExistingDirectory(QWidget *parent = nullptr,
|
||||||
|
const QString &caption = QString(),
|
||||||
|
const QString &dir = QString(),
|
||||||
|
QFileDialog::Options options = ShowDirsOnly);
|
||||||
|
|
||||||
|
static QString getSaveFileName(QWidget *parent = nullptr,
|
||||||
|
const QString &caption = QString(),
|
||||||
|
const QString &dir = QString(),
|
||||||
|
const QString &filter = QString(),
|
||||||
|
QString *selectedFilter = nullptr,
|
||||||
|
QFileDialog::Options options = Options());
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QString prevDirectory;
|
||||||
|
static QString getDirectoryFromInput(const QString &dir);
|
||||||
|
static void setDirectoryFromFile(const QString &fileName);
|
||||||
|
static void restoreFocus(QWidget *parent);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FILEDIALOG_H
|
|
@ -25,7 +25,7 @@
|
||||||
// porymap will reflect changes to it, but the value is hard-coded in the projects at the moment
|
// porymap will reflect changes to it, but the value is hard-coded in the projects at the moment
|
||||||
#define BORDER_DISTANCE 7
|
#define BORDER_DISTANCE 7
|
||||||
|
|
||||||
class MapPixmapItem;
|
class LayoutPixmapItem;
|
||||||
class CollisionPixmapItem;
|
class CollisionPixmapItem;
|
||||||
class BorderMetatilesPixmapItem;
|
class BorderMetatilesPixmapItem;
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ public:
|
||||||
public:
|
public:
|
||||||
QString name;
|
QString name;
|
||||||
QString constantName;
|
QString constantName;
|
||||||
|
|
||||||
QString song;
|
QString song;
|
||||||
QString layoutId;
|
QString layoutId;
|
||||||
QString location;
|
QString location;
|
||||||
|
@ -51,88 +52,71 @@ public:
|
||||||
bool allowEscaping;
|
bool allowEscaping;
|
||||||
int floorNumber = 0;
|
int floorNumber = 0;
|
||||||
QString battle_scene;
|
QString battle_scene;
|
||||||
|
|
||||||
QString sharedEventsMap = "";
|
QString sharedEventsMap = "";
|
||||||
QString sharedScriptsMap = "";
|
QString sharedScriptsMap = "";
|
||||||
|
|
||||||
QStringList scriptsFileLabels;
|
QStringList scriptsFileLabels;
|
||||||
QMap<QString, QJsonValue> customHeaders;
|
QMap<QString, QJsonValue> customHeaders;
|
||||||
MapLayout *layout;
|
|
||||||
|
Layout *layout = nullptr;
|
||||||
|
void setLayout(Layout *layout);
|
||||||
|
|
||||||
bool isPersistedToFile = true;
|
bool isPersistedToFile = true;
|
||||||
bool hasUnsavedDataChanges = false;
|
bool hasUnsavedDataChanges = false;
|
||||||
|
|
||||||
bool needsLayoutDir = true;
|
bool needsLayoutDir = true;
|
||||||
bool needsHealLocation = false;
|
bool needsHealLocation = false;
|
||||||
bool scriptsLoaded = false;
|
bool scriptsLoaded = false;
|
||||||
QImage collision_image;
|
|
||||||
QPixmap collision_pixmap;
|
|
||||||
QImage image;
|
|
||||||
QPixmap pixmap;
|
|
||||||
|
|
||||||
QMap<Event::Group, QList<Event *>> events;
|
QMap<Event::Group, QList<Event *>> events;
|
||||||
QList<Event *> ownedEvents; // for memory management
|
QList<Event *> ownedEvents; // for memory management
|
||||||
|
|
||||||
QList<MapConnection*> connections;
|
|
||||||
QList<int> metatileLayerOrder;
|
QList<int> metatileLayerOrder;
|
||||||
QList<float> metatileLayerOpacity;
|
QList<float> metatileLayerOpacity;
|
||||||
|
|
||||||
void setName(QString mapName);
|
void setName(QString mapName);
|
||||||
static QString mapConstantFromName(QString mapName, bool includePrefix = true);
|
static QString mapConstantFromName(QString mapName, bool includePrefix = true);
|
||||||
|
|
||||||
int getWidth();
|
int getWidth();
|
||||||
int getHeight();
|
int getHeight();
|
||||||
int getBorderWidth();
|
int getBorderWidth();
|
||||||
int getBorderHeight();
|
int getBorderHeight();
|
||||||
QPixmap render(bool ignoreCache = false, MapLayout *fromLayout = nullptr, QRect bounds = QRect(0, 0, -1, -1));
|
|
||||||
QPixmap renderCollision(bool ignoreCache);
|
|
||||||
bool mapBlockChanged(int i, const Blockdata &cache);
|
|
||||||
bool borderBlockChanged(int i, const Blockdata &cache);
|
|
||||||
void cacheBlockdata();
|
|
||||||
void cacheCollision();
|
|
||||||
bool getBlock(int x, int y, Block *out);
|
|
||||||
void setBlock(int x, int y, Block block, bool enableScriptCallback = false);
|
|
||||||
void setBlockdata(Blockdata blockdata, bool enableScriptCallback = false);
|
|
||||||
uint16_t getBorderMetatileId(int x, int y);
|
|
||||||
void setBorderMetatileId(int x, int y, uint16_t metatileId, bool enableScriptCallback = false);
|
|
||||||
void setBorderBlockData(Blockdata blockdata, bool enableScriptCallback = false);
|
|
||||||
void floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
|
||||||
void _floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
|
||||||
void magicFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
|
||||||
QList<Event *> getAllEvents() const;
|
QList<Event *> getAllEvents() const;
|
||||||
QStringList getScriptLabels(Event::Group group = Event::Group::None);
|
QStringList getScriptLabels(Event::Group group = Event::Group::None);
|
||||||
|
QString getScriptsFilePath() const;
|
||||||
|
void openScript(QString label);
|
||||||
void removeEvent(Event *);
|
void removeEvent(Event *);
|
||||||
void addEvent(Event *);
|
void addEvent(Event *);
|
||||||
QPixmap renderConnection(MapConnection, MapLayout *);
|
|
||||||
QPixmap renderBorder(bool ignoreCache = false);
|
|
||||||
void setDimensions(int newWidth, int newHeight, bool setNewBlockdata = true, bool enableScriptCallback = false);
|
|
||||||
void setBorderDimensions(int newWidth, int newHeight, bool setNewBlockdata = true, bool enableScriptCallback = false);
|
|
||||||
void clearBorderCache();
|
|
||||||
void cacheBorder();
|
|
||||||
bool hasUnsavedChanges();
|
|
||||||
bool isWithinBounds(int x, int y);
|
|
||||||
bool isWithinBorderBounds(int x, int y);
|
|
||||||
void openScript(QString label);
|
|
||||||
QString getScriptsFilePath() const;
|
|
||||||
|
|
||||||
MapPixmapItem *mapItem = nullptr;
|
void deleteConnections();
|
||||||
void setMapItem(MapPixmapItem *item) { mapItem = item; }
|
QList<MapConnection*> getConnections() const;
|
||||||
|
void removeConnection(MapConnection *);
|
||||||
CollisionPixmapItem *collisionItem = nullptr;
|
void addConnection(MapConnection *);
|
||||||
void setCollisionItem(CollisionPixmapItem *item) { collisionItem = item; }
|
void loadConnection(MapConnection *);
|
||||||
|
QRect getConnectionRect(const QString &direction, Layout *fromLayout = nullptr);
|
||||||
BorderMetatilesPixmapItem *borderItem = nullptr;
|
QPixmap renderConnection(const QString &direction, Layout *fromLayout = nullptr);
|
||||||
void setBorderItem(BorderMetatilesPixmapItem *item) { borderItem = item; }
|
|
||||||
|
|
||||||
QUndoStack editHistory;
|
QUndoStack editHistory;
|
||||||
void modify();
|
void modify();
|
||||||
void clean();
|
void clean();
|
||||||
|
bool hasUnsavedChanges() const;
|
||||||
|
void pruneEditHistory();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setNewDimensionsBlockdata(int newWidth, int newHeight);
|
void trackConnection(MapConnection*);
|
||||||
void setNewBorderDimensionsBlockdata(int newWidth, int newHeight);
|
|
||||||
|
// MapConnections in 'ownedConnections' but not 'connections' persist in the edit history.
|
||||||
|
QList<MapConnection*> connections;
|
||||||
|
QSet<MapConnection*> ownedConnections;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void mapChanged(Map *map);
|
|
||||||
void modified();
|
void modified();
|
||||||
void mapDimensionsChanged(const QSize &size);
|
void mapDimensionsChanged(const QSize &size);
|
||||||
void mapNeedsRedrawing();
|
|
||||||
void openScriptRequested(QString label);
|
void openScriptRequested(QString label);
|
||||||
|
void connectionAdded(MapConnection*);
|
||||||
|
void connectionRemoved(MapConnection*);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAP_H
|
#endif // MAP_H
|
||||||
|
|
|
@ -3,21 +3,61 @@
|
||||||
#define MAPCONNECTION_H
|
#define MAPCONNECTION_H
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QHash>
|
#include <QObject>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
class MapConnection {
|
class Project;
|
||||||
|
class Map;
|
||||||
|
|
||||||
|
class MapConnection : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
QString direction;
|
MapConnection(const QString &targetMapName, const QString &direction, int offset = 0);
|
||||||
int offset;
|
|
||||||
QString map_name;
|
Map* parentMap() const { return m_parentMap; }
|
||||||
|
QString parentMapName() const;
|
||||||
|
void setParentMap(Map* map, bool mirror = true);
|
||||||
|
|
||||||
|
Map* targetMap() const;
|
||||||
|
QString targetMapName() const { return m_targetMapName; }
|
||||||
|
void setTargetMapName(const QString &targetMapName, bool mirror = true);
|
||||||
|
|
||||||
|
QString direction() const { return m_direction; }
|
||||||
|
void setDirection(const QString &direction, bool mirror = true);
|
||||||
|
|
||||||
|
int offset() const { return m_offset; }
|
||||||
|
void setOffset(int offset, bool mirror = true);
|
||||||
|
|
||||||
|
MapConnection* findMirror();
|
||||||
|
MapConnection* createMirror();
|
||||||
|
|
||||||
|
QPixmap getPixmap();
|
||||||
|
|
||||||
|
static QPointer<Project> project;
|
||||||
|
static const QMap<QString, QString> oppositeDirections;
|
||||||
|
static const QStringList cardinalDirections;
|
||||||
|
static bool isCardinal(const QString &direction);
|
||||||
|
static bool isHorizontal(const QString &direction);
|
||||||
|
static bool isVertical(const QString &direction);
|
||||||
|
static bool isDiving(const QString &direction);
|
||||||
|
static QString oppositeDirection(const QString &direction) { return oppositeDirections.value(direction, direction); }
|
||||||
|
static bool areMirrored(const MapConnection*, const MapConnection*);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Map* m_parentMap;
|
||||||
|
QString m_targetMapName;
|
||||||
|
QString m_direction;
|
||||||
|
int m_offset;
|
||||||
|
|
||||||
|
void markMapEdited();
|
||||||
|
Map* getMap(const QString& mapName) const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void parentMapChanged(Map* before, Map* after);
|
||||||
|
void targetMapNameChanged(QString before, QString after);
|
||||||
|
void directionChanged(QString before, QString after);
|
||||||
|
void offsetChanged(int before, int after);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool operator==(const MapConnection &c1, const MapConnection &c2) {
|
|
||||||
return c1.map_name == c2.map_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline uint qHash(const MapConnection &key) {
|
|
||||||
return qHash(key.map_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // MAPCONNECTION_H
|
#endif // MAPCONNECTION_H
|
||||||
|
|
|
@ -7,41 +7,135 @@
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QUndoStack>
|
||||||
|
|
||||||
class MapLayout {
|
class Map;
|
||||||
|
class LayoutPixmapItem;
|
||||||
|
class CollisionPixmapItem;
|
||||||
|
class BorderMetatilesPixmapItem;
|
||||||
|
|
||||||
|
class Layout : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MapLayout() {}
|
Layout() {}
|
||||||
|
|
||||||
static QString layoutConstantFromName(QString mapName);
|
static QString layoutConstantFromName(QString mapName);
|
||||||
|
|
||||||
|
bool loaded = false;
|
||||||
|
|
||||||
QString id;
|
QString id;
|
||||||
QString name;
|
QString name;
|
||||||
|
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
int border_width;
|
int border_width;
|
||||||
int border_height;
|
int border_height;
|
||||||
|
|
||||||
QString border_path;
|
QString border_path;
|
||||||
QString blockdata_path;
|
QString blockdata_path;
|
||||||
|
|
||||||
QString tileset_primary_label;
|
QString tileset_primary_label;
|
||||||
QString tileset_secondary_label;
|
QString tileset_secondary_label;
|
||||||
|
|
||||||
Tileset *tileset_primary = nullptr;
|
Tileset *tileset_primary = nullptr;
|
||||||
Tileset *tileset_secondary = nullptr;
|
Tileset *tileset_secondary = nullptr;
|
||||||
|
|
||||||
Blockdata blockdata;
|
Blockdata blockdata;
|
||||||
|
|
||||||
|
QImage image;
|
||||||
|
QPixmap pixmap;
|
||||||
QImage border_image;
|
QImage border_image;
|
||||||
QPixmap border_pixmap;
|
QPixmap border_pixmap;
|
||||||
|
QImage collision_image;
|
||||||
|
QPixmap collision_pixmap;
|
||||||
|
|
||||||
Blockdata border;
|
Blockdata border;
|
||||||
Blockdata cached_blockdata;
|
Blockdata cached_blockdata;
|
||||||
Blockdata cached_collision;
|
Blockdata cached_collision;
|
||||||
Blockdata cached_border;
|
Blockdata cached_border;
|
||||||
struct {
|
struct {
|
||||||
Blockdata blocks;
|
Blockdata blocks;
|
||||||
QSize mapDimensions;
|
QSize layoutDimensions;
|
||||||
Blockdata border;
|
Blockdata border;
|
||||||
QSize borderDimensions;
|
QSize borderDimensions;
|
||||||
} lastCommitBlocks; // to track map changes
|
} lastCommitBlocks; // to track map changes
|
||||||
|
|
||||||
|
QList<int> metatileLayerOrder;
|
||||||
|
QList<float> metatileLayerOpacity;
|
||||||
|
|
||||||
|
LayoutPixmapItem *layoutItem = nullptr;
|
||||||
|
CollisionPixmapItem *collisionItem = nullptr;
|
||||||
|
BorderMetatilesPixmapItem *borderItem = nullptr;
|
||||||
|
|
||||||
|
QUndoStack editHistory;
|
||||||
|
|
||||||
|
// to simplify new layout settings transfer between functions
|
||||||
|
struct SimpleSettings {
|
||||||
|
QString id;
|
||||||
|
QString name;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
QString tileset_primary_label;
|
||||||
|
QString tileset_secondary_label;
|
||||||
|
QString from_id = QString();
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
Layout *copy();
|
||||||
|
void copyFrom(Layout *other);
|
||||||
|
|
||||||
int getWidth();
|
int getWidth();
|
||||||
int getHeight();
|
int getHeight();
|
||||||
int getBorderWidth();
|
int getBorderWidth();
|
||||||
int getBorderHeight();
|
int getBorderHeight();
|
||||||
|
|
||||||
|
bool isWithinBounds(int x, int y);
|
||||||
|
bool isWithinBorderBounds(int x, int y);
|
||||||
|
|
||||||
|
bool getBlock(int x, int y, Block *out);
|
||||||
|
void setBlock(int x, int y, Block block, bool enableScriptCallback = false);
|
||||||
|
void setBlockdata(Blockdata blockdata, bool enableScriptCallback = false);
|
||||||
|
|
||||||
|
void setDimensions(int newWidth, int newHeight, bool setNewBlockdata = true, bool enableScriptCallback = false);
|
||||||
|
void setBorderDimensions(int newWidth, int newHeight, bool setNewBlockdata = true, bool enableScriptCallback = false);
|
||||||
|
|
||||||
|
void cacheBlockdata();
|
||||||
|
void cacheCollision();
|
||||||
|
void clearBorderCache();
|
||||||
|
void cacheBorder();
|
||||||
|
|
||||||
|
bool hasUnsavedChanges() const;
|
||||||
|
|
||||||
|
bool layoutBlockChanged(int i, const Blockdata &cache);
|
||||||
|
|
||||||
|
uint16_t getBorderMetatileId(int x, int y);
|
||||||
|
void setBorderMetatileId(int x, int y, uint16_t metatileId, bool enableScriptCallback = false);
|
||||||
|
void setBorderBlockData(Blockdata blockdata, bool enableScriptCallback = false);
|
||||||
|
|
||||||
|
void floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||||
|
void _floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||||
|
void magicFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||||
|
|
||||||
|
QPixmap render(bool ignoreCache = false, Layout *fromLayout = nullptr, QRect bounds = QRect(0, 0, -1, -1));
|
||||||
|
QPixmap renderCollision(bool ignoreCache);
|
||||||
|
// QPixmap renderConnection(MapConnection, Layout *);
|
||||||
|
QPixmap renderBorder(bool ignoreCache = false);
|
||||||
|
|
||||||
|
QPixmap getLayoutItemPixmap();
|
||||||
|
|
||||||
|
void setLayoutItem(LayoutPixmapItem *item) { layoutItem = item; }
|
||||||
|
void setCollisionItem(CollisionPixmapItem *item) { collisionItem = item; }
|
||||||
|
void setBorderItem(BorderMetatilesPixmapItem *item) { borderItem = item; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setNewDimensionsBlockdata(int newWidth, int newHeight);
|
||||||
|
void setNewBorderDimensionsBlockdata(int newWidth, int newHeight);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void layoutChanged(Layout *layout);
|
||||||
|
//void modified();
|
||||||
|
void layoutDimensionsChanged(const QSize &size);
|
||||||
|
void needsRedrawing();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAPLAYOUT_H
|
#endif // MAPLAYOUT_H
|
||||||
|
|
|
@ -10,7 +10,7 @@ class MapParser
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MapParser();
|
MapParser();
|
||||||
MapLayout *parse(QString filepath, bool *error, Project *project);
|
Layout *parse(QString filepath, bool *error, Project *project);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAPPARSER_H
|
#endif // MAPPARSER_H
|
||||||
|
|
|
@ -54,9 +54,9 @@ public:
|
||||||
QString readCIncbin(const QString &text, const QString &label);
|
QString readCIncbin(const QString &text, const QString &label);
|
||||||
QMap<QString, QString> readCIncbinMulti(const QString &filepath);
|
QMap<QString, QString> readCIncbinMulti(const QString &filepath);
|
||||||
QStringList readCIncbinArray(const QString &filename, const QString &label);
|
QStringList readCIncbinArray(const QString &filename, const QString &label);
|
||||||
QMap<QString, int> readCDefinesByPrefix(const QString &filename, QStringList prefixes);
|
QMap<QString, int> readCDefinesByRegex(const QString &filename, const QStringList ®exList);
|
||||||
QMap<QString, int> readCDefinesByName(const QString &filename, QStringList names);
|
QMap<QString, int> readCDefinesByName(const QString &filename, const QStringList &names);
|
||||||
QStringList readCDefineNames(const QString&, const QStringList&);
|
QStringList readCDefineNames(const QString &filename, const QStringList ®exList);
|
||||||
QMap<QString, QHash<QString, QString>> readCStructs(const QString &, const QString & = "", const QHash<int, QString> = { });
|
QMap<QString, QHash<QString, QString>> readCStructs(const QString &, const QString & = "", const QHash<int, QString> = { });
|
||||||
QList<QStringList> getLabelMacros(const QList<QStringList>&, const QString&);
|
QList<QStringList> getLabelMacros(const QList<QStringList>&, const QString&);
|
||||||
QStringList getLabelValues(const QList<QStringList>&, const QString&);
|
QStringList getLabelValues(const QList<QStringList>&, const QString&);
|
||||||
|
@ -97,8 +97,15 @@ private:
|
||||||
void recordErrors(const QStringList &errors);
|
void recordErrors(const QStringList &errors);
|
||||||
void logRecordedErrors();
|
void logRecordedErrors();
|
||||||
QString createErrorMessage(const QString &message, const QString &expression);
|
QString createErrorMessage(const QString &message, const QString &expression);
|
||||||
QString readCDefinesFile(const QString &filename);
|
|
||||||
QMap<QString, int> readCDefines(const QString &filename, const QStringList &searchText, bool fullMatch);
|
struct ParsedDefines {
|
||||||
|
QMap<QString,QString> expressions; // Map of all define names encountered to their expressions
|
||||||
|
QStringList filteredNames; // List of define names that matched the search text, in the order that they were encountered
|
||||||
|
};
|
||||||
|
ParsedDefines readCDefines(const QString &filename, const QStringList &filterList, bool useRegex);
|
||||||
|
QMap<QString, int> evaluateCDefines(const QString &filename, const QStringList &filterList, bool useRegex);
|
||||||
|
bool defineNameMatchesFilter(const QString &name, const QStringList &filterList) const;
|
||||||
|
bool defineNameMatchesFilter(const QString &name, const QList<QRegularExpression> &filterList) const;
|
||||||
|
|
||||||
static const QRegularExpression re_incScriptLabel;
|
static const QRegularExpression re_incScriptLabel;
|
||||||
static const QRegularExpression re_globalIncScriptLabel;
|
static const QRegularExpression re_globalIncScriptLabel;
|
||||||
|
|
|
@ -57,8 +57,8 @@ public:
|
||||||
bool loadLayout(poryjson::Json);
|
bool loadLayout(poryjson::Json);
|
||||||
bool loadEntries();
|
bool loadEntries();
|
||||||
|
|
||||||
void setEntries(tsl::ordered_map<QString, MapSectionEntry> *entries) { this->region_map_entries = entries; }
|
void setEntries(QMap<QString, MapSectionEntry> *entries) { this->region_map_entries = entries; }
|
||||||
void setEntries(tsl::ordered_map<QString, MapSectionEntry> entries) { *(this->region_map_entries) = entries; }
|
void setEntries(const QMap<QString, MapSectionEntry> &entries) { *(this->region_map_entries) = entries; }
|
||||||
void clearEntries() { this->region_map_entries->clear(); }
|
void clearEntries() { this->region_map_entries->clear(); }
|
||||||
MapSectionEntry getEntry(QString section);
|
MapSectionEntry getEntry(QString section);
|
||||||
void setEntry(QString section, MapSectionEntry entry);
|
void setEntry(QString section, MapSectionEntry entry);
|
||||||
|
@ -114,8 +114,6 @@ public:
|
||||||
void setLayer(QString layer) { this->current_layer = layer; }
|
void setLayer(QString layer) { this->current_layer = layer; }
|
||||||
QString getLayer() { return this->current_layer; }
|
QString getLayer() { return this->current_layer; }
|
||||||
|
|
||||||
QString fixCase(QString);
|
|
||||||
|
|
||||||
int padLeft() { return this->offset_left; }
|
int padLeft() { return this->offset_left; }
|
||||||
int padTop() { return this->offset_top; }
|
int padTop() { return this->offset_top; }
|
||||||
int padRight() { return this->tilemap_width - this->layout_width - this->offset_left; }
|
int padRight() { return this->tilemap_width - this->layout_width - this->offset_left; }
|
||||||
|
@ -149,14 +147,12 @@ public:
|
||||||
|
|
||||||
const QString section_prefix;
|
const QString section_prefix;
|
||||||
const QString default_map_section;
|
const QString default_map_section;
|
||||||
const QString count_map_section;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void mapNeedsDisplaying();
|
void mapNeedsDisplaying();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// TODO: defaults needed?
|
QMap<QString, MapSectionEntry> *region_map_entries = nullptr;
|
||||||
tsl::ordered_map<QString, MapSectionEntry> *region_map_entries = nullptr;
|
|
||||||
|
|
||||||
QString alias = "";
|
QString alias = "";
|
||||||
|
|
||||||
|
|
|
@ -64,9 +64,9 @@ private:
|
||||||
|
|
||||||
|
|
||||||
/// Edit Layout Dimensions
|
/// Edit Layout Dimensions
|
||||||
class ResizeLayout : public QUndoCommand {
|
class ResizeRMLayout : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
ResizeLayout(RegionMap *map, int oldWidth, int oldHeight, int newWidth, int newHeight,
|
ResizeRMLayout(RegionMap *map, int oldWidth, int oldHeight, int newWidth, int newHeight,
|
||||||
QMap<QString, QList<LayoutSquare>> oldLayouts, QMap<QString, QList<LayoutSquare>> newLayouts, QUndoCommand *parent = nullptr);
|
QMap<QString, QList<LayoutSquare>> oldLayouts, QMap<QString, QList<LayoutSquare>> newLayouts, QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
void undo() override;
|
void undo() override;
|
||||||
|
@ -153,7 +153,7 @@ private:
|
||||||
/// ClearEntries
|
/// ClearEntries
|
||||||
class ClearEntries : public QUndoCommand {
|
class ClearEntries : public QUndoCommand {
|
||||||
public:
|
public:
|
||||||
ClearEntries(RegionMap *map, tsl::ordered_map<QString, MapSectionEntry>, QUndoCommand *parent = nullptr);
|
ClearEntries(RegionMap *map, QMap<QString, MapSectionEntry>, QUndoCommand *parent = nullptr);
|
||||||
|
|
||||||
void undo() override;
|
void undo() override;
|
||||||
void redo() override;
|
void redo() override;
|
||||||
|
@ -163,7 +163,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RegionMap *map;
|
RegionMap *map;
|
||||||
tsl::ordered_map<QString, MapSectionEntry> entries;
|
QMap<QString, MapSectionEntry> entries;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // REGIONMAPEDITCOMMANDS_H
|
#endif // REGIONMAPEDITCOMMANDS_H
|
||||||
|
|
|
@ -19,6 +19,8 @@ public:
|
||||||
uint16_t rawValue() const;
|
uint16_t rawValue() const;
|
||||||
|
|
||||||
static int getIndexInTileset(int);
|
static int getIndexInTileset(int);
|
||||||
|
|
||||||
|
static const uint16_t maxValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool operator==(const Tile &a, const Tile &b) {
|
inline bool operator==(const Tile &a, const Tile &b) {
|
||||||
|
|
|
@ -18,6 +18,7 @@ public:
|
||||||
Tileset() = default;
|
Tileset() = default;
|
||||||
Tileset(const Tileset &other);
|
Tileset(const Tileset &other);
|
||||||
Tileset &operator=(const Tileset &other);
|
Tileset &operator=(const Tileset &other);
|
||||||
|
~Tileset();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QString name;
|
QString name;
|
||||||
|
@ -33,7 +34,6 @@ public:
|
||||||
QStringList palettePaths;
|
QStringList palettePaths;
|
||||||
|
|
||||||
QList<QImage> tiles;
|
QList<QImage> tiles;
|
||||||
QList<Metatile*> metatiles;
|
|
||||||
QHash<int, QString> metatileLabels;
|
QHash<int, QString> metatileLabels;
|
||||||
QList<QList<QRgb>> palettes;
|
QList<QList<QRgb>> palettes;
|
||||||
QList<QList<QRgb>> palettePreviews;
|
QList<QList<QRgb>> palettePreviews;
|
||||||
|
@ -59,6 +59,19 @@ public:
|
||||||
bool appendToHeaders(QString root, QString friendlyName, bool usingAsm);
|
bool appendToHeaders(QString root, QString friendlyName, bool usingAsm);
|
||||||
bool appendToGraphics(QString root, QString friendlyName, bool usingAsm);
|
bool appendToGraphics(QString root, QString friendlyName, bool usingAsm);
|
||||||
bool appendToMetatiles(QString root, QString friendlyName, bool usingAsm);
|
bool appendToMetatiles(QString root, QString friendlyName, bool usingAsm);
|
||||||
|
|
||||||
|
void setMetatiles(const QList<Metatile*> &metatiles);
|
||||||
|
void addMetatile(Metatile* metatile);
|
||||||
|
|
||||||
|
QList<Metatile*> metatiles() const { return m_metatiles; }
|
||||||
|
Metatile* metatileAt(unsigned int i) const { return m_metatiles.at(i); }
|
||||||
|
|
||||||
|
void clearMetatiles();
|
||||||
|
void resizeMetatiles(unsigned int newNumMetatiles);
|
||||||
|
int numMetatiles() const { return m_metatiles.length(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<Metatile*> m_metatiles;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TILESET_H
|
#endif // TILESET_H
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
struct WildPokemon {
|
struct WildPokemon {
|
||||||
int minLevel = 5;
|
int minLevel = 5;
|
||||||
int maxLevel = 5;
|
int maxLevel = 5;
|
||||||
QString species = "SPECIES_NONE";
|
QString species = "SPECIES_NONE"; // TODO: Use define_species_prefix
|
||||||
};
|
};
|
||||||
|
|
||||||
struct WildMonInfo {
|
struct WildMonInfo {
|
||||||
|
@ -22,9 +22,9 @@ struct WildPokemonHeader {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EncounterField {
|
struct EncounterField {
|
||||||
QString name;
|
QString name; // Ex: "fishing_mons"
|
||||||
QVector<int> encounterRates;
|
QVector<int> encounterRates;
|
||||||
tsl::ordered_map<QString, QVector<int>> groups;
|
tsl::ordered_map<QString, QVector<int>> groups; // Ex: "good_rod", {2, 3, 4}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef QVector<EncounterField> EncounterFields;
|
typedef QVector<EncounterField> EncounterFields;
|
||||||
|
|
182
include/editor.h
|
@ -10,6 +10,7 @@
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QCursor>
|
#include <QCursor>
|
||||||
#include <QUndoGroup>
|
#include <QUndoGroup>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
#include "mapconnection.h"
|
#include "mapconnection.h"
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
|
@ -18,13 +19,16 @@
|
||||||
#include "ui_mainwindow.h"
|
#include "ui_mainwindow.h"
|
||||||
#include "bordermetatilespixmapitem.h"
|
#include "bordermetatilespixmapitem.h"
|
||||||
#include "connectionpixmapitem.h"
|
#include "connectionpixmapitem.h"
|
||||||
|
#include "divingmappixmapitem.h"
|
||||||
#include "currentselectedmetatilespixmapitem.h"
|
#include "currentselectedmetatilespixmapitem.h"
|
||||||
#include "collisionpixmapitem.h"
|
#include "collisionpixmapitem.h"
|
||||||
#include "mappixmapitem.h"
|
#include "layoutpixmapitem.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
#include "gridsettings.h"
|
||||||
#include "movablerect.h"
|
#include "movablerect.h"
|
||||||
#include "cursortilerect.h"
|
#include "cursortilerect.h"
|
||||||
#include "mapruler.h"
|
#include "mapruler.h"
|
||||||
|
#include "encountertablemodel.h"
|
||||||
|
|
||||||
class DraggablePixmapItem;
|
class DraggablePixmapItem;
|
||||||
class MetatilesPixmapItem;
|
class MetatilesPixmapItem;
|
||||||
|
@ -43,16 +47,33 @@ public:
|
||||||
public:
|
public:
|
||||||
Ui::MainWindow* ui;
|
Ui::MainWindow* ui;
|
||||||
QObject *parent = nullptr;
|
QObject *parent = nullptr;
|
||||||
Project *project = nullptr;
|
|
||||||
Map *map = nullptr;
|
QPointer<Project> project = nullptr;
|
||||||
|
QPointer<Map> map = nullptr;
|
||||||
|
QPointer<Layout> layout = nullptr;
|
||||||
|
|
||||||
|
QUndoGroup editGroup; // Manages the undo history for each map
|
||||||
|
|
||||||
Settings *settings;
|
Settings *settings;
|
||||||
void saveProject();
|
GridSettings gridSettings;
|
||||||
|
|
||||||
|
void setProject(Project * project);
|
||||||
void save();
|
void save();
|
||||||
void closeProject();
|
void saveProject();
|
||||||
bool setMap(QString map_name);
|
|
||||||
void saveUiFields();
|
void saveUiFields();
|
||||||
void saveEncounterTabData();
|
void saveEncounterTabData();
|
||||||
|
|
||||||
|
void closeProject();
|
||||||
|
|
||||||
|
bool setMap(QString map_name);
|
||||||
|
bool setLayout(QString layoutName);
|
||||||
|
void unsetMap();
|
||||||
|
|
||||||
|
Tileset *getCurrentMapPrimaryTileset();
|
||||||
|
|
||||||
bool displayMap();
|
bool displayMap();
|
||||||
|
bool displayLayout();
|
||||||
|
|
||||||
void displayMetatileSelector();
|
void displayMetatileSelector();
|
||||||
void displayMapMetatiles();
|
void displayMapMetatiles();
|
||||||
void displayMapMovementPermissions();
|
void displayMapMovementPermissions();
|
||||||
|
@ -64,78 +85,96 @@ public:
|
||||||
void displayMapConnections();
|
void displayMapConnections();
|
||||||
void displayMapBorder();
|
void displayMapBorder();
|
||||||
void displayMapGrid();
|
void displayMapGrid();
|
||||||
|
void updateMapGrid();
|
||||||
void displayWildMonTables();
|
void displayWildMonTables();
|
||||||
|
|
||||||
void updateMapBorder();
|
void updateMapBorder();
|
||||||
void updateMapConnections();
|
void updateMapConnections();
|
||||||
|
|
||||||
void setEditingMap();
|
|
||||||
void setEditingCollision();
|
|
||||||
void setEditingObjects();
|
|
||||||
void setEditingConnections();
|
|
||||||
void setMapEditingButtonsEnabled(bool enabled);
|
|
||||||
void setCurrentConnectionDirection(QString curDirection);
|
|
||||||
void updateCurrentConnectionDirection(QString curDirection);
|
|
||||||
void setConnectionsVisibility(bool visible);
|
void setConnectionsVisibility(bool visible);
|
||||||
void updateConnectionOffset(int offset);
|
void updateDivingMapsVisibility();
|
||||||
void setConnectionMap(QString mapName);
|
void renderDivingConnections();
|
||||||
void addNewConnection();
|
void addConnection(MapConnection* connection);
|
||||||
void removeCurrentConnection();
|
void removeConnection(MapConnection* connection);
|
||||||
void addNewWildMonGroup(QWidget *window);
|
void addNewWildMonGroup(QWidget *window);
|
||||||
void deleteWildMonGroup();
|
void deleteWildMonGroup();
|
||||||
|
void configureEncounterJSON(QWidget *);
|
||||||
|
EncounterTableModel* getCurrentWildMonTable();
|
||||||
void updateDiveMap(QString mapName);
|
void updateDiveMap(QString mapName);
|
||||||
void updateEmergeMap(QString mapName);
|
void updateEmergeMap(QString mapName);
|
||||||
void setSelectedConnectionFromMap(QString mapName);
|
void setSelectedConnection(MapConnection *connection);
|
||||||
|
|
||||||
void updatePrimaryTileset(QString tilesetLabel, bool forceLoad = false);
|
void updatePrimaryTileset(QString tilesetLabel, bool forceLoad = false);
|
||||||
void updateSecondaryTileset(QString tilesetLabel, bool forceLoad = false);
|
void updateSecondaryTileset(QString tilesetLabel, bool forceLoad = false);
|
||||||
void toggleBorderVisibility(bool visible, bool enableScriptCallback = true);
|
void toggleBorderVisibility(bool visible, bool enableScriptCallback = true);
|
||||||
void updateCustomMapHeaderValues(QTableWidget *);
|
void updateCustomMapHeaderValues(QTableWidget *);
|
||||||
void configureEncounterJSON(QWidget *);
|
|
||||||
Tileset *getCurrentMapPrimaryTileset();
|
|
||||||
|
|
||||||
DraggablePixmapItem *addMapEvent(Event *event);
|
DraggablePixmapItem *addMapEvent(Event *event);
|
||||||
void selectMapEvent(DraggablePixmapItem *object);
|
bool eventLimitReached(Map *, Event::Type);
|
||||||
void selectMapEvent(DraggablePixmapItem *object, bool toggle);
|
void selectMapEvent(DraggablePixmapItem *object, bool toggle = false);
|
||||||
DraggablePixmapItem *addNewEvent(Event::Type type);
|
DraggablePixmapItem *addNewEvent(Event::Type type);
|
||||||
void updateSelectedEvents();
|
void updateSelectedEvents();
|
||||||
void duplicateSelectedEvents();
|
void duplicateSelectedEvents();
|
||||||
void redrawObject(DraggablePixmapItem *item);
|
void redrawObject(DraggablePixmapItem *item);
|
||||||
QList<DraggablePixmapItem *> getObjects();
|
QList<DraggablePixmapItem *> getObjects();
|
||||||
|
|
||||||
void updateCursorRectPos(int x, int y);
|
void updateCursorRectPos(int x, int y);
|
||||||
void setCursorRectVisible(bool visible);
|
void setCursorRectVisible(bool visible);
|
||||||
|
|
||||||
void updateWarpEventWarning(Event *event);
|
void updateWarpEventWarning(Event *event);
|
||||||
void updateWarpEventWarnings();
|
void updateWarpEventWarnings();
|
||||||
bool eventLimitReached(Map *, Event::Type);
|
|
||||||
|
|
||||||
QGraphicsScene *scene = nullptr;
|
QPointer<QGraphicsScene> scene = nullptr;
|
||||||
QGraphicsPixmapItem *current_view = nullptr;
|
QGraphicsPixmapItem *current_view = nullptr;
|
||||||
MapPixmapItem *map_item = nullptr;
|
QPointer<LayoutPixmapItem> map_item = nullptr;
|
||||||
ConnectionPixmapItem* selected_connection_item = nullptr;
|
QList<QPointer<ConnectionPixmapItem>> connection_items;
|
||||||
QList<ConnectionPixmapItem*> connection_items;
|
QMap<QString, QPointer<DivingMapPixmapItem>> diving_map_items;
|
||||||
QGraphicsPathItem *connection_mask = nullptr;
|
QGraphicsPathItem *connection_mask = nullptr;
|
||||||
CollisionPixmapItem *collision_item = nullptr;
|
QPointer<CollisionPixmapItem> collision_item = nullptr;
|
||||||
QGraphicsItemGroup *events_group = nullptr;
|
QGraphicsItemGroup *events_group = nullptr;
|
||||||
|
|
||||||
QList<QGraphicsPixmapItem*> borderItems;
|
QList<QGraphicsPixmapItem*> borderItems;
|
||||||
QList<QGraphicsLineItem*> gridLines;
|
QGraphicsItemGroup *mapGrid = nullptr;
|
||||||
MovableRect *playerViewRect = nullptr;
|
|
||||||
CursorTileRect *cursorMapTileRect = nullptr;
|
|
||||||
MapRuler *map_ruler = nullptr;
|
MapRuler *map_ruler = nullptr;
|
||||||
|
|
||||||
QGraphicsScene *scene_metatiles = nullptr;
|
MovableRect *playerViewRect = nullptr;
|
||||||
QGraphicsScene *scene_current_metatile_selection = nullptr;
|
CursorTileRect *cursorMapTileRect = nullptr;
|
||||||
QGraphicsScene *scene_selected_border_metatiles = nullptr;
|
|
||||||
QGraphicsScene *scene_collision_metatiles = nullptr;
|
|
||||||
QGraphicsScene *scene_elevation_metatiles = nullptr;
|
|
||||||
MetatileSelector *metatile_selector_item = nullptr;
|
|
||||||
|
|
||||||
BorderMetatilesPixmapItem *selected_border_metatiles_item = nullptr;
|
QPointer<QGraphicsScene> scene_metatiles = nullptr;
|
||||||
|
QPointer<QGraphicsScene> scene_current_metatile_selection = nullptr;
|
||||||
|
QPointer<QGraphicsScene> scene_selected_border_metatiles = nullptr;
|
||||||
|
QPointer<QGraphicsScene> scene_collision_metatiles = nullptr;
|
||||||
|
QPointer<MetatileSelector> metatile_selector_item = nullptr;
|
||||||
|
|
||||||
|
QPointer<BorderMetatilesPixmapItem> selected_border_metatiles_item = nullptr;
|
||||||
CurrentSelectedMetatilesPixmapItem *current_metatile_selection_item = nullptr;
|
CurrentSelectedMetatilesPixmapItem *current_metatile_selection_item = nullptr;
|
||||||
MovementPermissionsSelector *movement_permissions_selector_item = nullptr;
|
QPointer<MovementPermissionsSelector> movement_permissions_selector_item = nullptr;
|
||||||
|
|
||||||
QList<DraggablePixmapItem *> *selected_events = nullptr;
|
QList<DraggablePixmapItem *> *selected_events = nullptr;
|
||||||
|
QPointer<ConnectionPixmapItem> selected_connection_item = nullptr;
|
||||||
|
QPointer<MapConnection> connection_to_select = nullptr;
|
||||||
|
|
||||||
QString map_edit_mode = "paint";
|
enum class EditAction { None, Paint, Select, Fill, Shift, Pick, Move };
|
||||||
QString obj_edit_mode = "select";
|
EditAction mapEditAction = EditAction::Paint;
|
||||||
|
EditAction objectEditAction = EditAction::Select;
|
||||||
|
|
||||||
|
enum class EditMode { None, Disabled, Metatiles, Collision, Header, Events, Connections, Encounters };
|
||||||
|
EditMode editMode = EditMode::None;
|
||||||
|
void setEditMode(EditMode mode) { this->editMode = mode; }
|
||||||
|
EditMode getEditMode() { return this->editMode; }
|
||||||
|
|
||||||
|
bool getEditingLayout();
|
||||||
|
|
||||||
|
void setEditorView();
|
||||||
|
|
||||||
|
void setEditingMetatiles();
|
||||||
|
void setEditingCollision();
|
||||||
|
void setEditingHeader();
|
||||||
|
void setEditingObjects();
|
||||||
|
void setEditingConnections();
|
||||||
|
void setEditingEncounters();
|
||||||
|
|
||||||
|
void setMapEditingButtonsEnabled(bool enabled);
|
||||||
|
|
||||||
int scaleIndex = 2;
|
int scaleIndex = 2;
|
||||||
qreal collisionOpacity = 0.5;
|
qreal collisionOpacity = 0.5;
|
||||||
|
@ -145,10 +184,9 @@ public:
|
||||||
|
|
||||||
int getBorderDrawDistance(int dimension);
|
int getBorderDrawDistance(int dimension);
|
||||||
|
|
||||||
QUndoGroup editGroup; // Manages the undo history for each map
|
|
||||||
|
|
||||||
bool selectingEvent = false;
|
bool selectingEvent = false;
|
||||||
|
|
||||||
|
void deleteSelectedEvents();
|
||||||
void shouldReselectEvents();
|
void shouldReselectEvents();
|
||||||
void scaleMapView(int);
|
void scaleMapView(int);
|
||||||
static void openInTextEditor(const QString &path, int lineNum = 0);
|
static void openInTextEditor(const QString &path, int lineNum = 0);
|
||||||
|
@ -162,27 +200,35 @@ public slots:
|
||||||
void maskNonVisibleConnectionTiles();
|
void maskNonVisibleConnectionTiles();
|
||||||
void onBorderMetatilesChanged();
|
void onBorderMetatilesChanged();
|
||||||
void selectedEventIndexChanged(int index, Event::Group eventGroup);
|
void selectedEventIndexChanged(int index, Event::Group eventGroup);
|
||||||
|
void toggleGrid(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const QImage defaultCollisionImgSheet = QImage(":/images/collisions.png");
|
const QImage defaultCollisionImgSheet = QImage(":/images/collisions.png");
|
||||||
const QImage collisionPlaceholder = QImage(":/images/collisions_unknown.png");
|
const QImage collisionPlaceholder = QImage(":/images/collisions_unknown.png");
|
||||||
QPixmap collisionSheetPixmap;
|
QPixmap collisionSheetPixmap;
|
||||||
|
|
||||||
void setConnectionItemsVisible(bool);
|
void clearMap();
|
||||||
void setBorderItemsVisible(bool, qreal = 1);
|
void clearMetatileSelector();
|
||||||
void setConnectionEditControlValues(MapConnection*);
|
void clearMovementPermissionSelector();
|
||||||
void setConnectionEditControlsEnabled(bool);
|
void clearMapMetatiles();
|
||||||
void setConnectionsEditable(bool);
|
void clearMapMovementPermissions();
|
||||||
void createConnectionItem(MapConnection* connection);
|
void clearBorderMetatiles();
|
||||||
void populateConnectionMapPickers();
|
void clearCurrentMetatilesSelection();
|
||||||
void setDiveEmergeControls();
|
void clearMapEvents();
|
||||||
void updateDiveEmergeMap(QString mapName, QString direction);
|
void clearMapConnections();
|
||||||
void onConnectionOffsetChanged(int newOffset);
|
void clearConnectionMask();
|
||||||
void removeMirroredConnection(MapConnection*);
|
void clearMapBorder();
|
||||||
void updateMirroredConnectionOffset(MapConnection*);
|
void clearMapGrid();
|
||||||
void updateMirroredConnectionDirection(MapConnection*, QString);
|
void clearWildMonTables();
|
||||||
void updateMirroredConnectionMap(MapConnection*, QString);
|
void updateBorderVisibility();
|
||||||
void updateMirroredConnection(MapConnection*, QString, QString, bool isDelete = false);
|
void disconnectMapConnection(MapConnection *connection);
|
||||||
|
QPoint getConnectionOrigin(MapConnection *connection);
|
||||||
|
void removeConnectionPixmap(MapConnection *connection);
|
||||||
|
void updateConnectionPixmap(ConnectionPixmapItem *connectionItem);
|
||||||
|
void displayConnection(MapConnection *connection);
|
||||||
|
void displayDivingConnection(MapConnection *connection);
|
||||||
|
void setDivingMapName(QString mapName, QString direction);
|
||||||
|
void removeDivingMapPixmap(MapConnection *connection);
|
||||||
void updateEncounterFields(EncounterFields newFields);
|
void updateEncounterFields(EncounterFields newFields);
|
||||||
QString getMovementPermissionText(uint16_t collision, uint16_t elevation);
|
QString getMovementPermissionText(uint16_t collision, uint16_t elevation);
|
||||||
QString getMetatileDisplayMessage(uint16_t metatileId);
|
QString getMetatileDisplayMessage(uint16_t metatileId);
|
||||||
|
@ -192,16 +238,13 @@ private:
|
||||||
qint64 *pid = nullptr);
|
qint64 *pid = nullptr);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onMapStartPaint(QGraphicsSceneMouseEvent *event, MapPixmapItem *item);
|
void onMapStartPaint(QGraphicsSceneMouseEvent *event, LayoutPixmapItem *item);
|
||||||
void onMapEndPaint(QGraphicsSceneMouseEvent *event, MapPixmapItem *item);
|
void onMapEndPaint(QGraphicsSceneMouseEvent *event, LayoutPixmapItem *item);
|
||||||
void setSmartPathCursorMode(QGraphicsSceneMouseEvent *event);
|
void setSmartPathCursorMode(QGraphicsSceneMouseEvent *event);
|
||||||
void setStraightPathCursorMode(QGraphicsSceneMouseEvent *event);
|
void setStraightPathCursorMode(QGraphicsSceneMouseEvent *event);
|
||||||
void mouseEvent_map(QGraphicsSceneMouseEvent *event, MapPixmapItem *item);
|
void mouseEvent_map(QGraphicsSceneMouseEvent *event, LayoutPixmapItem *item);
|
||||||
void mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixmapItem *item);
|
void mouseEvent_collision(QGraphicsSceneMouseEvent *event, CollisionPixmapItem *item);
|
||||||
void onConnectionMoved(MapConnection*);
|
void setSelectedConnectionItem(ConnectionPixmapItem *connectionItem);
|
||||||
void onConnectionItemSelected(ConnectionPixmapItem* connectionItem);
|
|
||||||
void onConnectionItemDoubleClicked(ConnectionPixmapItem* connectionItem);
|
|
||||||
void onConnectionDirectionChanged(QString newDirection);
|
|
||||||
void onHoveredMovementPermissionChanged(uint16_t, uint16_t);
|
void onHoveredMovementPermissionChanged(uint16_t, uint16_t);
|
||||||
void onHoveredMovementPermissionCleared();
|
void onHoveredMovementPermissionCleared();
|
||||||
void onHoveredMetatileSelectionChanged(uint16_t);
|
void onHoveredMetatileSelectionChanged(uint16_t);
|
||||||
|
@ -212,17 +255,18 @@ private slots:
|
||||||
void onHoveredMapMovementPermissionCleared();
|
void onHoveredMapMovementPermissionCleared();
|
||||||
void onSelectedMetatilesChanged();
|
void onSelectedMetatilesChanged();
|
||||||
void onWheelZoom(int);
|
void onWheelZoom(int);
|
||||||
void onToggleGridClicked(bool);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void objectsChanged();
|
void objectsChanged();
|
||||||
void loadMapRequested(QString, QString);
|
void openConnectedMap(MapConnection*);
|
||||||
void wildMonDataChanged();
|
void wildMonTableOpened(EncounterTableModel*);
|
||||||
|
void wildMonTableClosed();
|
||||||
|
void wildMonTableEdited();
|
||||||
void warpEventDoubleClicked(QString, int, Event::Group);
|
void warpEventDoubleClicked(QString, int, Event::Group);
|
||||||
void currentMetatilesSelectionChanged();
|
void currentMetatilesSelectionChanged();
|
||||||
void mapRulerStatusChanged(const QString &);
|
void mapRulerStatusChanged(const QString &);
|
||||||
void editedMapData();
|
|
||||||
void tilesetUpdated(QString);
|
void tilesetUpdated(QString);
|
||||||
|
void gridToggled(bool);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // EDITOR_H
|
#endif // EDITOR_H
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
namespace fex
|
namespace fex
|
||||||
{
|
{
|
||||||
|
@ -89,9 +90,7 @@ namespace fex
|
||||||
Lexer() = default;
|
Lexer() = default;
|
||||||
~Lexer() = default;
|
~Lexer() = default;
|
||||||
|
|
||||||
std::vector<Token> LexFile(const std::string &path);
|
std::vector<Token> LexFile(const QString &path);
|
||||||
std::vector<Token> LexString(const std::string &data);
|
|
||||||
void LexFileDumpTokens(const std::string &path, const std::string &out);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Token> Lex();
|
std::vector<Token> Lex();
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace fex
|
||||||
std::vector<Array> ParseTopLevelArrays(std::vector<Token> tokens);
|
std::vector<Array> ParseTopLevelArrays(std::vector<Token> tokens);
|
||||||
std::map<std::string, ArrayValue> ParseTopLevelObjects(std::vector<Token> tokens);
|
std::map<std::string, ArrayValue> ParseTopLevelObjects(std::vector<Token> tokens);
|
||||||
|
|
||||||
std::map<std::string, int> ReadDefines(const std::string &filename, std::vector<std::string> matching);
|
std::map<std::string, int> ReadDefines(const QString &filename, std::vector<std::string> matching);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int EvaluateExpression(std::vector<Token> tokens);
|
int EvaluateExpression(std::vector<Token> tokens);
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#ifndef PARSER_UTIL_H
|
|
||||||
#define PARSER_UTIL_H
|
|
||||||
|
|
||||||
#include <QString>
|
|
||||||
#include <QStringList>
|
|
||||||
|
|
||||||
class ParserUtil
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ParserUtil(QString root);
|
|
||||||
QStringList ReadDefines(QString filename, QString prefix);
|
|
||||||
QStringList ReadDefinesValueSort(QString filename, QString prefix);
|
|
||||||
|
|
||||||
private:
|
|
||||||
QString root_;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PARSER_UTIL_H
|
|
|
@ -21,13 +21,17 @@
|
||||||
#include "regionmapeditor.h"
|
#include "regionmapeditor.h"
|
||||||
#include "mapimageexporter.h"
|
#include "mapimageexporter.h"
|
||||||
#include "filterchildrenproxymodel.h"
|
#include "filterchildrenproxymodel.h"
|
||||||
|
#include "maplistmodels.h"
|
||||||
#include "newmappopup.h"
|
#include "newmappopup.h"
|
||||||
#include "newtilesetdialog.h"
|
#include "newtilesetdialog.h"
|
||||||
#include "shortcutseditor.h"
|
#include "shortcutseditor.h"
|
||||||
#include "preferenceeditor.h"
|
#include "preferenceeditor.h"
|
||||||
#include "projectsettingseditor.h"
|
#include "projectsettingseditor.h"
|
||||||
|
#include "gridsettings.h"
|
||||||
#include "customscriptseditor.h"
|
#include "customscriptseditor.h"
|
||||||
|
#include "wildmonchart.h"
|
||||||
#include "updatepromoter.h"
|
#include "updatepromoter.h"
|
||||||
|
#include "aboutporymap.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -163,12 +167,14 @@ public slots:
|
||||||
void on_mainTabBar_tabBarClicked(int index);
|
void on_mainTabBar_tabBarClicked(int index);
|
||||||
void on_mapViewTab_tabBarClicked(int index);
|
void on_mapViewTab_tabBarClicked(int index);
|
||||||
void onWarpBehaviorWarningClicked();
|
void onWarpBehaviorWarningClicked();
|
||||||
|
void clearOverlay();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_action_Open_Project_triggered();
|
void on_action_Open_Project_triggered();
|
||||||
void on_action_Reload_Project_triggered();
|
void on_action_Reload_Project_triggered();
|
||||||
void on_mapList_activated(const QModelIndex &index);
|
void on_action_Close_Project_triggered();
|
||||||
void on_action_Save_Project_triggered();
|
void on_action_Save_Project_triggered();
|
||||||
|
|
||||||
void openWarpMap(QString map_name, int event_id, Event::Group event_group);
|
void openWarpMap(QString map_name, int event_id, Event::Group event_group);
|
||||||
|
|
||||||
void duplicate();
|
void duplicate();
|
||||||
|
@ -177,17 +183,17 @@ private slots:
|
||||||
void copy();
|
void copy();
|
||||||
void paste();
|
void paste();
|
||||||
|
|
||||||
void onLoadMapRequested(QString, QString);
|
void onLayoutChanged(Layout *layout);
|
||||||
void onMapChanged(Map *map);
|
void onOpenConnectedMap(MapConnection*);
|
||||||
void onMapNeedsRedrawing();
|
|
||||||
void onTilesetsSaved(QString, QString);
|
void onTilesetsSaved(QString, QString);
|
||||||
void onWildMonDataChanged();
|
|
||||||
void openNewMapPopupWindow();
|
void openNewMapPopupWindow();
|
||||||
void onNewMapCreated();
|
void onNewMapCreated();
|
||||||
void onMapCacheCleared();
|
void onMapLoaded(Map *map);
|
||||||
void importMapFromAdvanceMap1_92();
|
void importMapFromAdvanceMap1_92();
|
||||||
void onMapRulerStatusChanged(const QString &);
|
void onMapRulerStatusChanged(const QString &);
|
||||||
void applyUserShortcuts();
|
void applyUserShortcuts();
|
||||||
|
void markMapEdited();
|
||||||
|
void markSpecificMapEdited(Map*);
|
||||||
|
|
||||||
void on_action_NewMap_triggered();
|
void on_action_NewMap_triggered();
|
||||||
void on_actionNew_Tileset_triggered();
|
void on_actionNew_Tileset_triggered();
|
||||||
|
@ -198,6 +204,7 @@ private slots:
|
||||||
void on_comboBox_Weather_currentTextChanged(const QString &arg1);
|
void on_comboBox_Weather_currentTextChanged(const QString &arg1);
|
||||||
void on_comboBox_Type_currentTextChanged(const QString &arg1);
|
void on_comboBox_Type_currentTextChanged(const QString &arg1);
|
||||||
void on_comboBox_BattleScene_currentTextChanged(const QString &arg1);
|
void on_comboBox_BattleScene_currentTextChanged(const QString &arg1);
|
||||||
|
void on_comboBox_LayoutSelector_currentTextChanged(const QString &arg1);
|
||||||
void on_checkBox_ShowLocation_stateChanged(int selected);
|
void on_checkBox_ShowLocation_stateChanged(int selected);
|
||||||
void on_checkBox_AllowRunning_stateChanged(int selected);
|
void on_checkBox_AllowRunning_stateChanged(int selected);
|
||||||
void on_checkBox_AllowBiking_stateChanged(int selected);
|
void on_checkBox_AllowBiking_stateChanged(int selected);
|
||||||
|
@ -217,10 +224,8 @@ private slots:
|
||||||
void on_actionMove_triggered();
|
void on_actionMove_triggered();
|
||||||
void on_actionMap_Shift_triggered();
|
void on_actionMap_Shift_triggered();
|
||||||
|
|
||||||
void on_toolButton_deleteObject_clicked();
|
|
||||||
|
|
||||||
void addNewEvent(Event::Type type);
|
void addNewEvent(Event::Type type);
|
||||||
void tryAddEventTab(QWidget * tab, Event::Group group);
|
void tryAddEventTab(QWidget * tab);
|
||||||
void displayEventTabs();
|
void displayEventTabs();
|
||||||
void updateSelectedObjects();
|
void updateSelectedObjects();
|
||||||
void updateObjects();
|
void updateObjects();
|
||||||
|
@ -233,9 +238,6 @@ private slots:
|
||||||
void on_toolButton_Shift_clicked();
|
void on_toolButton_Shift_clicked();
|
||||||
|
|
||||||
void onOpenMapListContextMenu(const QPoint &point);
|
void onOpenMapListContextMenu(const QPoint &point);
|
||||||
void onAddNewMapToGroupClick(QAction* triggeredAction);
|
|
||||||
void onAddNewMapToAreaClick(QAction* triggeredAction);
|
|
||||||
void onAddNewMapToLayoutClick(QAction* triggeredAction);
|
|
||||||
void currentMetatilesSelectionChanged();
|
void currentMetatilesSelectionChanged();
|
||||||
|
|
||||||
void on_action_Export_Map_Image_triggered();
|
void on_action_Export_Map_Image_triggered();
|
||||||
|
@ -243,11 +245,9 @@ private slots:
|
||||||
void on_actionExport_Map_Timelapse_Image_triggered();
|
void on_actionExport_Map_Timelapse_Image_triggered();
|
||||||
void on_actionImport_Map_from_Advance_Map_1_92_triggered();
|
void on_actionImport_Map_from_Advance_Map_1_92_triggered();
|
||||||
|
|
||||||
void on_comboBox_ConnectionDirection_currentTextChanged(const QString &arg1);
|
|
||||||
void on_spinBox_ConnectionOffset_valueChanged(int offset);
|
|
||||||
void on_comboBox_ConnectedMap_currentTextChanged(const QString &mapName);
|
|
||||||
void on_pushButton_AddConnection_clicked();
|
void on_pushButton_AddConnection_clicked();
|
||||||
void on_pushButton_RemoveConnection_clicked();
|
void on_button_OpenDiveMap_clicked();
|
||||||
|
void on_button_OpenEmergeMap_clicked();
|
||||||
void on_comboBox_DiveMap_currentTextChanged(const QString &mapName);
|
void on_comboBox_DiveMap_currentTextChanged(const QString &mapName);
|
||||||
void on_comboBox_EmergeMap_currentTextChanged(const QString &mapName);
|
void on_comboBox_EmergeMap_currentTextChanged(const QString &mapName);
|
||||||
void on_comboBox_PrimaryTileset_currentTextChanged(const QString &arg1);
|
void on_comboBox_PrimaryTileset_currentTextChanged(const QString &arg1);
|
||||||
|
@ -261,18 +261,23 @@ private slots:
|
||||||
|
|
||||||
void on_actionTileset_Editor_triggered();
|
void on_actionTileset_Editor_triggered();
|
||||||
|
|
||||||
void mapSortOrder_changed(QAction *action);
|
|
||||||
|
|
||||||
void on_lineEdit_filterBox_textChanged(const QString &arg1);
|
|
||||||
|
|
||||||
void moveEvent(QMoveEvent *event);
|
void moveEvent(QMoveEvent *event);
|
||||||
void closeEvent(QCloseEvent *);
|
void closeEvent(QCloseEvent *);
|
||||||
|
|
||||||
void eventTabChanged(int index);
|
void eventTabChanged(int index);
|
||||||
|
|
||||||
|
void on_checkBox_MirrorConnections_stateChanged(int selected);
|
||||||
|
void on_actionDive_Emerge_Map_triggered();
|
||||||
|
void on_groupBox_DiveMapOpacity_toggled(bool on);
|
||||||
|
void on_slider_DiveEmergeMapOpacity_valueChanged(int value);
|
||||||
|
void on_slider_DiveMapOpacity_valueChanged(int value);
|
||||||
|
void on_slider_EmergeMapOpacity_valueChanged(int value);
|
||||||
void on_horizontalSlider_CollisionTransparency_valueChanged(int value);
|
void on_horizontalSlider_CollisionTransparency_valueChanged(int value);
|
||||||
void on_toolButton_ExpandAll_clicked();
|
|
||||||
void on_toolButton_CollapseAll_clicked();
|
void mapListShortcut_ToggleEmptyFolders();
|
||||||
|
void mapListShortcut_ExpandAll();
|
||||||
|
void mapListShortcut_CollapseAll();
|
||||||
|
|
||||||
void on_actionAbout_Porymap_triggered();
|
void on_actionAbout_Porymap_triggered();
|
||||||
void on_actionOpen_Log_File_triggered();
|
void on_actionOpen_Log_File_triggered();
|
||||||
void on_actionOpen_Config_Folder_triggered();
|
void on_actionOpen_Config_Folder_triggered();
|
||||||
|
@ -283,6 +288,7 @@ private slots:
|
||||||
void on_horizontalSlider_CollisionZoom_valueChanged(int value);
|
void on_horizontalSlider_CollisionZoom_valueChanged(int value);
|
||||||
void on_pushButton_NewWildMonGroup_clicked();
|
void on_pushButton_NewWildMonGroup_clicked();
|
||||||
void on_pushButton_DeleteWildMonGroup_clicked();
|
void on_pushButton_DeleteWildMonGroup_clicked();
|
||||||
|
void on_pushButton_SummaryChart_clicked();
|
||||||
void on_pushButton_ConfigureEncountersJSON_clicked();
|
void on_pushButton_ConfigureEncountersJSON_clicked();
|
||||||
void on_pushButton_CreatePrefab_clicked();
|
void on_pushButton_CreatePrefab_clicked();
|
||||||
void on_spinBox_SelectedElevation_valueChanged(int elevation);
|
void on_spinBox_SelectedElevation_valueChanged(int elevation);
|
||||||
|
@ -294,10 +300,12 @@ private slots:
|
||||||
void on_actionProject_Settings_triggered();
|
void on_actionProject_Settings_triggered();
|
||||||
void on_actionCustom_Scripts_triggered();
|
void on_actionCustom_Scripts_triggered();
|
||||||
void reloadScriptEngine();
|
void reloadScriptEngine();
|
||||||
|
void on_actionShow_Grid_triggered();
|
||||||
|
void on_actionGrid_Settings_triggered();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
Editor *editor = nullptr;
|
QPointer<Editor> editor = nullptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QLabel *label_MapRulerStatus = nullptr;
|
QLabel *label_MapRulerStatus = nullptr;
|
||||||
|
@ -308,16 +316,20 @@ private:
|
||||||
QPointer<NewMapPopup> newMapPrompt = nullptr;
|
QPointer<NewMapPopup> newMapPrompt = nullptr;
|
||||||
QPointer<PreferenceEditor> preferenceEditor = nullptr;
|
QPointer<PreferenceEditor> preferenceEditor = nullptr;
|
||||||
QPointer<ProjectSettingsEditor> projectSettingsEditor = nullptr;
|
QPointer<ProjectSettingsEditor> projectSettingsEditor = nullptr;
|
||||||
|
QPointer<GridSettingsDialog> gridSettingsDialog = nullptr;
|
||||||
QPointer<CustomScriptsEditor> customScriptsEditor = nullptr;
|
QPointer<CustomScriptsEditor> customScriptsEditor = nullptr;
|
||||||
|
|
||||||
|
QPointer<FilterChildrenProxyModel> groupListProxyModel = nullptr;
|
||||||
|
QPointer<MapGroupModel> mapGroupModel = nullptr;
|
||||||
|
QPointer<FilterChildrenProxyModel> areaListProxyModel = nullptr;
|
||||||
|
QPointer<MapAreaModel> mapAreaModel = nullptr;
|
||||||
|
QPointer<FilterChildrenProxyModel> layoutListProxyModel = nullptr;
|
||||||
|
QPointer<LayoutTreeModel> layoutTreeModel = nullptr;
|
||||||
|
|
||||||
QPointer<UpdatePromoter> updatePromoter = nullptr;
|
QPointer<UpdatePromoter> updatePromoter = nullptr;
|
||||||
QPointer<NetworkAccessManager> networkAccessManager = nullptr;
|
QPointer<NetworkAccessManager> networkAccessManager = nullptr;
|
||||||
FilterChildrenProxyModel *mapListProxyModel;
|
QPointer<AboutPorymap> aboutWindow = nullptr;
|
||||||
QStandardItemModel *mapListModel;
|
QPointer<WildMonChart> wildMonChart = nullptr;
|
||||||
QList<QStandardItem*> *mapGroupItemsList;
|
|
||||||
QMap<QString, QModelIndex> mapListIndexes;
|
|
||||||
QIcon* mapIcon;
|
|
||||||
QIcon* mapEditedIcon;
|
|
||||||
QIcon* mapOpenedIcon;
|
|
||||||
|
|
||||||
QAction *undoAction = nullptr;
|
QAction *undoAction = nullptr;
|
||||||
QAction *redoAction = nullptr;
|
QAction *redoAction = nullptr;
|
||||||
|
@ -325,69 +337,77 @@ private:
|
||||||
QAction *copyAction = nullptr;
|
QAction *copyAction = nullptr;
|
||||||
QAction *pasteAction = nullptr;
|
QAction *pasteAction = nullptr;
|
||||||
|
|
||||||
QWidget *eventTabObjectWidget;
|
|
||||||
QWidget *eventTabWarpWidget;
|
|
||||||
QWidget *eventTabTriggerWidget;
|
|
||||||
QWidget *eventTabBGWidget;
|
|
||||||
QWidget *eventTabHealspotWidget;
|
|
||||||
QWidget *eventTabMultipleWidget;
|
|
||||||
QMap<Event::Group, DraggablePixmapItem*> lastSelectedEvent;
|
QMap<Event::Group, DraggablePixmapItem*> lastSelectedEvent;
|
||||||
|
|
||||||
bool isProgrammaticEventTabChange;
|
bool isProgrammaticEventTabChange;
|
||||||
bool projectHasUnsavedChanges;
|
|
||||||
bool projectOpenFailure = false;
|
|
||||||
bool newMapDefaultsSet = false;
|
bool newMapDefaultsSet = false;
|
||||||
|
|
||||||
MapSortOrder mapSortOrder;
|
|
||||||
|
|
||||||
bool tilesetNeedsRedraw = false;
|
bool tilesetNeedsRedraw = false;
|
||||||
|
|
||||||
bool setMap(QString, bool scrollTreeView = false);
|
bool setLayout(QString layoutId);
|
||||||
|
bool setMap(QString);
|
||||||
|
void unsetMap();
|
||||||
|
bool userSetLayout(QString layoutId);
|
||||||
|
bool userSetMap(QString);
|
||||||
void redrawMapScene();
|
void redrawMapScene();
|
||||||
void refreshMapScene();
|
void refreshMapScene();
|
||||||
bool loadDataStructures();
|
void refreshMetatileViews();
|
||||||
bool loadProjectCombos();
|
void refreshCollisionSelector();
|
||||||
bool populateMapList();
|
void setLayoutOnlyMode(bool layoutOnly);
|
||||||
void sortMapList();
|
|
||||||
|
bool checkProjectSanity();
|
||||||
|
bool loadProjectData();
|
||||||
|
bool setProjectUI();
|
||||||
|
void clearProjectUI();
|
||||||
|
|
||||||
void openSubWindow(QWidget * window);
|
void openSubWindow(QWidget * window);
|
||||||
|
void scrollMapList(MapTree *list, QString itemName);
|
||||||
|
void scrollMapListToCurrentMap(MapTree *list);
|
||||||
|
void scrollMapListToCurrentLayout(MapTree *list);
|
||||||
|
void resetMapListFilters();
|
||||||
|
void showFileWatcherWarning(QString filepath);
|
||||||
QString getExistingDirectory(QString);
|
QString getExistingDirectory(QString);
|
||||||
bool openProject(const QString &dir, bool initial = false);
|
bool openProject(QString dir, bool initial = false);
|
||||||
|
bool closeProject();
|
||||||
void showProjectOpenFailure();
|
void showProjectOpenFailure();
|
||||||
|
|
||||||
bool setInitialMap();
|
bool setInitialMap();
|
||||||
void setRecentMap(QString map_name);
|
void saveGlobalConfigs();
|
||||||
QStandardItem* createMapItem(QString mapName, int groupNum, int inGroupNum);
|
|
||||||
void refreshRecentProjectsMenu();
|
void refreshRecentProjectsMenu();
|
||||||
|
|
||||||
void drawMapListIcons(QAbstractItemModel *model);
|
|
||||||
void updateMapList();
|
void updateMapList();
|
||||||
|
void mapListAddGroup();
|
||||||
|
void mapListAddLayout();
|
||||||
|
void mapListAddArea();
|
||||||
|
void openMapListItem(const QModelIndex &index);
|
||||||
|
void saveMapListTab(int index);
|
||||||
|
|
||||||
void displayMapProperties();
|
void displayMapProperties();
|
||||||
void checkToolButtons();
|
void checkToolButtons();
|
||||||
void clickToolButtonFromEditMode(QString editMode);
|
void clickToolButtonFromEditAction(Editor::EditAction editAction);
|
||||||
|
|
||||||
void markMapEdited();
|
void updateWindowTitle();
|
||||||
void showWindowTitle();
|
|
||||||
|
|
||||||
void initWindow();
|
void initWindow();
|
||||||
void initCustomUI();
|
void initCustomUI();
|
||||||
void initExtraSignals();
|
void initExtraSignals();
|
||||||
void initEditor();
|
void initEditor();
|
||||||
void initMiscHeapObjects();
|
void initMiscHeapObjects();
|
||||||
void initMapSortOrder();
|
void initMapList();
|
||||||
void initShortcuts();
|
void initShortcuts();
|
||||||
void initExtraShortcuts();
|
void initExtraShortcuts();
|
||||||
void setProjectSpecificUI();
|
|
||||||
void loadUserSettings();
|
void loadUserSettings();
|
||||||
void applyMapListFilter(QString filterText);
|
|
||||||
void restoreWindowState();
|
void restoreWindowState();
|
||||||
void setTheme(QString);
|
void setTheme(QString);
|
||||||
void updateTilesetEditor();
|
void updateTilesetEditor();
|
||||||
Event::Group getEventGroupFromTabWidget(QWidget *tab);
|
Event::Group getEventGroupFromTabWidget(QWidget *tab);
|
||||||
void closeSupplementaryWindows();
|
bool closeSupplementaryWindows();
|
||||||
void setWindowDisabled(bool);
|
void setWindowDisabled(bool);
|
||||||
|
|
||||||
void initTilesetEditor();
|
void initTilesetEditor();
|
||||||
bool initRegionMapEditor(bool silent = false);
|
bool initRegionMapEditor(bool silent = false);
|
||||||
|
bool askToFixRegionMapEditor();
|
||||||
void initShortcutsEditor();
|
void initShortcutsEditor();
|
||||||
void initCustomScriptsEditor();
|
void initCustomScriptsEditor();
|
||||||
void connectSubEditorsToShortcutsEditor();
|
void connectSubEditorsToShortcutsEditor();
|
||||||
|
@ -397,18 +417,41 @@ private:
|
||||||
double getMetatilesZoomScale();
|
double getMetatilesZoomScale();
|
||||||
void redrawMetatileSelection();
|
void redrawMetatileSelection();
|
||||||
void scrollMetatileSelectorToSelection();
|
void scrollMetatileSelectorToSelection();
|
||||||
|
MapListToolBar* getCurrentMapListToolBar();
|
||||||
|
MapTree* getCurrentMapList();
|
||||||
|
void refreshLocationsComboBox();
|
||||||
|
|
||||||
QObjectList shortcutableObjects() const;
|
QObjectList shortcutableObjects() const;
|
||||||
void addCustomHeaderValue(QString key, QJsonValue value, bool isNew = false);
|
void addCustomHeaderValue(QString key, QJsonValue value, bool isNew = false);
|
||||||
int insertTilesetLabel(QStringList * list, QString label);
|
int insertTilesetLabel(QStringList * list, QString label);
|
||||||
|
|
||||||
void checkForUpdates(bool requestedByUser);
|
void checkForUpdates(bool requestedByUser);
|
||||||
|
void setDivingMapsVisible(bool visible);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MapListUserRoles {
|
// These are namespaced in a struct to avoid colliding with e.g. class Map.
|
||||||
GroupRole = Qt::UserRole + 1, // Used to hold the map group number.
|
struct MainTab {
|
||||||
TypeRole, // Used to differentiate between the different layers of the map list tree view.
|
enum {
|
||||||
TypeRole2, // Used for various extra data needed.
|
Map,
|
||||||
|
Events,
|
||||||
|
Header,
|
||||||
|
Connections,
|
||||||
|
WildPokemon,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MapViewTab {
|
||||||
|
enum {
|
||||||
|
Metatiles,
|
||||||
|
Collision,
|
||||||
|
Prefabs,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MapListTab {
|
||||||
|
enum {
|
||||||
|
Groups = 0, Areas, Layouts
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
|
@ -25,7 +25,7 @@ class Project : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
Project(QWidget *parent = nullptr);
|
Project(QObject *parent = nullptr);
|
||||||
~Project();
|
~Project();
|
||||||
|
|
||||||
Project(const Project &) = delete;
|
Project(const Project &) = delete;
|
||||||
|
@ -39,7 +39,6 @@ public:
|
||||||
QMap<QString, int> mapGroups;
|
QMap<QString, int> mapGroups;
|
||||||
QList<QStringList> groupedMapNames;
|
QList<QStringList> groupedMapNames;
|
||||||
QStringList mapNames;
|
QStringList mapNames;
|
||||||
QMap<QString, QVariant> miscConstants;
|
|
||||||
QList<HealLocation> healLocations;
|
QList<HealLocation> healLocations;
|
||||||
QMap<QString, int> healLocationNameToValue;
|
QMap<QString, int> healLocationNameToValue;
|
||||||
QMap<QString, QString> mapConstantsToMapNames;
|
QMap<QString, QString> mapConstantsToMapNames;
|
||||||
|
@ -47,11 +46,9 @@ public:
|
||||||
QStringList mapLayoutsTable;
|
QStringList mapLayoutsTable;
|
||||||
QStringList mapLayoutsTableMaster;
|
QStringList mapLayoutsTableMaster;
|
||||||
QString layoutsLabel;
|
QString layoutsLabel;
|
||||||
QMap<QString, MapLayout*> mapLayouts;
|
QMap<QString, QString> layoutIdsToNames;
|
||||||
QMap<QString, MapLayout*> mapLayoutsMaster;
|
QMap<QString, Layout*> mapLayouts;
|
||||||
QMap<QString, QString> mapSecToMapHoverName;
|
QMap<QString, Layout*> mapLayoutsMaster;
|
||||||
QMap<QString, int> mapSectionNameToValue;
|
|
||||||
QMap<int, QString> mapSectionValueToName;
|
|
||||||
QMap<QString, EventGraphics*> eventGraphicsMap;
|
QMap<QString, EventGraphics*> eventGraphicsMap;
|
||||||
QMap<QString, int> gfxDefines;
|
QMap<QString, int> gfxDefines;
|
||||||
QString defaultSong;
|
QString defaultSong;
|
||||||
|
@ -68,6 +65,8 @@ public:
|
||||||
QStringList bgEventFacingDirections;
|
QStringList bgEventFacingDirections;
|
||||||
QStringList trainerTypes;
|
QStringList trainerTypes;
|
||||||
QStringList globalScriptLabels;
|
QStringList globalScriptLabels;
|
||||||
|
QStringList mapSectionIdNames;
|
||||||
|
QMap<QString, MapSectionEntry> regionMapEntries;
|
||||||
QMap<QString, QMap<QString, uint16_t>> metatileLabelsMap;
|
QMap<QString, QMap<QString, uint16_t>> metatileLabelsMap;
|
||||||
QMap<QString, uint16_t> unusedMetatileLabels;
|
QMap<QString, uint16_t> unusedMetatileLabels;
|
||||||
QMap<QString, uint32_t> metatileBehaviorMap;
|
QMap<QString, uint32_t> metatileBehaviorMap;
|
||||||
|
@ -77,16 +76,19 @@ public:
|
||||||
QFileSystemWatcher fileWatcher;
|
QFileSystemWatcher fileWatcher;
|
||||||
QMap<QString, qint64> modifiedFileTimestamps;
|
QMap<QString, qint64> modifiedFileTimestamps;
|
||||||
bool usingAsmTilesets;
|
bool usingAsmTilesets;
|
||||||
QString importExportPath;
|
|
||||||
QSet<QString> disabledSettingsNames;
|
QSet<QString> disabledSettingsNames;
|
||||||
|
int pokemonMinLevel;
|
||||||
|
int pokemonMaxLevel;
|
||||||
|
int maxEncounterRate;
|
||||||
bool wildEncountersLoaded;
|
bool wildEncountersLoaded;
|
||||||
|
bool saveEmptyMapsec;
|
||||||
|
|
||||||
void set_root(QString);
|
void set_root(QString);
|
||||||
|
|
||||||
void initSignals();
|
|
||||||
|
|
||||||
void clearMapCache();
|
void clearMapCache();
|
||||||
void clearTilesetCache();
|
void clearTilesetCache();
|
||||||
|
void clearMapLayouts();
|
||||||
|
void clearEventGraphics();
|
||||||
|
|
||||||
struct DataQualifiers
|
struct DataQualifiers
|
||||||
{
|
{
|
||||||
|
@ -97,6 +99,9 @@ public:
|
||||||
DataQualifiers healLocationDataQualifiers;
|
DataQualifiers healLocationDataQualifiers;
|
||||||
QString healLocationsTableName;
|
QString healLocationsTableName;
|
||||||
|
|
||||||
|
bool sanityCheck();
|
||||||
|
bool load();
|
||||||
|
|
||||||
QMap<QString, Map*> mapCache;
|
QMap<QString, Map*> mapCache;
|
||||||
Map* loadMap(QString);
|
Map* loadMap(QString);
|
||||||
Map* getMap(QString);
|
Map* getMap(QString);
|
||||||
|
@ -109,8 +114,8 @@ public:
|
||||||
QStringList tilesetLabelsOrdered;
|
QStringList tilesetLabelsOrdered;
|
||||||
|
|
||||||
Blockdata readBlockdata(QString);
|
Blockdata readBlockdata(QString);
|
||||||
bool loadBlockdata(MapLayout*);
|
bool loadBlockdata(Layout *);
|
||||||
bool loadLayoutBorder(MapLayout*);
|
bool loadLayoutBorder(Layout *);
|
||||||
|
|
||||||
void saveTextFile(QString path, QString text);
|
void saveTextFile(QString path, QString text);
|
||||||
void appendTextFile(QString path, QString text);
|
void appendTextFile(QString path, QString text);
|
||||||
|
@ -134,12 +139,20 @@ public:
|
||||||
bool readSpeciesIconPaths();
|
bool readSpeciesIconPaths();
|
||||||
QMap<QString, QString> speciesToIconPath;
|
QMap<QString, QString> speciesToIconPath;
|
||||||
|
|
||||||
|
void addNewMapsec(const QString &name);
|
||||||
|
void removeMapsec(const QString &name);
|
||||||
|
|
||||||
|
bool hasUnsavedChanges();
|
||||||
|
bool hasUnsavedDataChanges = false;
|
||||||
|
|
||||||
QSet<QString> getTopLevelMapFields();
|
QSet<QString> getTopLevelMapFields();
|
||||||
bool loadMapData(Map*);
|
bool loadMapData(Map*);
|
||||||
bool readMapLayouts();
|
bool readMapLayouts();
|
||||||
bool loadLayout(MapLayout *);
|
Layout *loadLayout(QString layoutId);
|
||||||
|
Layout *createNewLayout(Layout::SimpleSettings &layoutSettings);
|
||||||
|
bool loadLayout(Layout *);
|
||||||
bool loadMapLayout(Map*);
|
bool loadMapLayout(Map*);
|
||||||
bool loadLayoutTilesets(MapLayout*);
|
bool loadLayoutTilesets(Layout *);
|
||||||
void loadTilesetAssets(Tileset*);
|
void loadTilesetAssets(Tileset*);
|
||||||
void loadTilesetTiles(Tileset*, QImage);
|
void loadTilesetTiles(Tileset*, QImage);
|
||||||
void loadTilesetMetatiles(Tileset*);
|
void loadTilesetMetatiles(Tileset*);
|
||||||
|
@ -147,14 +160,17 @@ public:
|
||||||
void loadTilesetPalettes(Tileset*);
|
void loadTilesetPalettes(Tileset*);
|
||||||
void readTilesetPaths(Tileset* tileset);
|
void readTilesetPaths(Tileset* tileset);
|
||||||
|
|
||||||
void saveLayoutBlockdata(Map*);
|
void saveLayout(Layout *);
|
||||||
void saveLayoutBorder(Map*);
|
void saveLayoutBlockdata(Layout *);
|
||||||
|
void saveLayoutBorder(Layout *);
|
||||||
void writeBlockdata(QString, const Blockdata &);
|
void writeBlockdata(QString, const Blockdata &);
|
||||||
void saveAllMaps();
|
void saveAllMaps();
|
||||||
void saveMap(Map*);
|
void saveMap(Map *);
|
||||||
void saveAllDataStructures();
|
void saveAllDataStructures();
|
||||||
|
void saveConfig();
|
||||||
void saveMapLayouts();
|
void saveMapLayouts();
|
||||||
void saveMapGroups();
|
void saveMapGroups();
|
||||||
|
void saveRegionMapSections();
|
||||||
void saveWildMonData();
|
void saveWildMonData();
|
||||||
void saveMapConstantsHeader();
|
void saveMapConstantsHeader();
|
||||||
void saveHealLocations(Map*);
|
void saveHealLocations(Map*);
|
||||||
|
@ -208,7 +224,6 @@ public:
|
||||||
QString buildMetatileLabelsText(const QMap<QString, uint16_t> defines);
|
QString buildMetatileLabelsText(const QMap<QString, uint16_t> defines);
|
||||||
QString findMetatileLabelsTileset(QString label);
|
QString findMetatileLabelsTileset(QString label);
|
||||||
|
|
||||||
void setImportExportPath(QString filename);
|
|
||||||
static QString getExistingFilepath(QString filepath);
|
static QString getExistingFilepath(QString filepath);
|
||||||
void applyParsedLimits();
|
void applyParsedLimits();
|
||||||
|
|
||||||
|
@ -226,12 +241,13 @@ public:
|
||||||
static bool mapDimensionsValid(int width, int height);
|
static bool mapDimensionsValid(int width, int height);
|
||||||
bool calculateDefaultMapSize();
|
bool calculateDefaultMapSize();
|
||||||
static int getMaxObjectEvents();
|
static int getMaxObjectEvents();
|
||||||
|
static QString getEmptyMapsecName();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateMapLayout(Map*);
|
void updateLayout(Layout *);
|
||||||
|
|
||||||
void setNewMapBlockdata(Map* map);
|
void setNewLayoutBlockdata(Layout *layout);
|
||||||
void setNewMapBorder(Map *map);
|
void setNewLayoutBorder(Layout *layout);
|
||||||
void setNewMapEvents(Map *map);
|
void setNewMapEvents(Map *map);
|
||||||
void setNewMapConnections(Map *map);
|
void setNewMapConnections(Map *map);
|
||||||
|
|
||||||
|
@ -250,9 +266,9 @@ private:
|
||||||
static int max_object_events;
|
static int max_object_events;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void reloadProject();
|
void fileChanged(QString filepath);
|
||||||
void uncheckMonitorFilesAction();
|
void mapSectionIdNamesChanged();
|
||||||
void mapCacheCleared();
|
void mapLoaded(Map *map);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PROJECT_H
|
#endif // PROJECT_H
|
||||||
|
|
|
@ -30,7 +30,9 @@ class Scripting
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Scripting(MainWindow *mainWindow);
|
Scripting(MainWindow *mainWindow);
|
||||||
|
~Scripting();
|
||||||
static void init(MainWindow *mainWindow);
|
static void init(MainWindow *mainWindow);
|
||||||
|
static void stop();
|
||||||
static void populateGlobalObject(MainWindow *mainWindow);
|
static void populateGlobalObject(MainWindow *mainWindow);
|
||||||
static QJSEngine *getEngine();
|
static QJSEngine *getEngine();
|
||||||
static void invokeAction(int actionIndex);
|
static void invokeAction(int actionIndex);
|
||||||
|
|
|
@ -10,7 +10,8 @@ class ScriptUtility : public QObject
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ScriptUtility(MainWindow *mainWindow);
|
ScriptUtility(MainWindow *mainWindow);
|
||||||
void clearActions();
|
~ScriptUtility();
|
||||||
|
|
||||||
QString getActionFunctionName(int actionIndex);
|
QString getActionFunctionName(int actionIndex);
|
||||||
Q_INVOKABLE bool registerAction(QString functionName, QString actionName, QString shortcut = "");
|
Q_INVOKABLE bool registerAction(QString functionName, QString actionName, QString shortcut = "");
|
||||||
Q_INVOKABLE bool registerToggleAction(QString functionName, QString actionName, QString shortcut = "", bool checked = false);
|
Q_INVOKABLE bool registerToggleAction(QString functionName, QString actionName, QString shortcut = "", bool checked = false);
|
||||||
|
@ -59,6 +60,7 @@ private:
|
||||||
|
|
||||||
MainWindow *window;
|
MainWindow *window;
|
||||||
QList<QAction *> registeredActions;
|
QList<QAction *> registeredActions;
|
||||||
|
QSet<QTimer *> activeTimers;
|
||||||
QHash<int, QString> actionMap;
|
QHash<int, QString> actionMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QMainWindow>
|
#include <QDialog>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class AboutPorymap;
|
class AboutPorymap;
|
||||||
}
|
}
|
||||||
|
|
||||||
class AboutPorymap : public QMainWindow
|
class AboutPorymap : public QDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit AboutPorymap(QWidget *parent = nullptr);
|
explicit AboutPorymap(QWidget *parent = nullptr);
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
#ifndef BORDERMETATILESPIXMAPITEM_H
|
#ifndef BORDERMETATILESPIXMAPITEM_H
|
||||||
#define BORDERMETATILESPIXMAPITEM_H
|
#define BORDERMETATILESPIXMAPITEM_H
|
||||||
|
|
||||||
#include "map.h"
|
#include "maplayout.h"
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
#include <QGraphicsPixmapItem>
|
#include <QGraphicsPixmapItem>
|
||||||
|
|
||||||
class BorderMetatilesPixmapItem : public QObject, public QGraphicsPixmapItem {
|
class BorderMetatilesPixmapItem : public QObject, public QGraphicsPixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
BorderMetatilesPixmapItem(Map *map_, MetatileSelector *metatileSelector) {
|
BorderMetatilesPixmapItem(Layout *layout, MetatileSelector *metatileSelector) {
|
||||||
this->map = map_;
|
this->layout = layout;
|
||||||
this->map->setBorderItem(this);
|
this->layout->setBorderItem(this);
|
||||||
this->metatileSelector = metatileSelector;
|
this->metatileSelector = metatileSelector;
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
}
|
}
|
||||||
MetatileSelector *metatileSelector;
|
MetatileSelector *metatileSelector;
|
||||||
Map *map;
|
Layout *layout;
|
||||||
void draw();
|
void draw();
|
||||||
signals:
|
signals:
|
||||||
void hoveredBorderMetatileSelectionChanged(uint16_t);
|
void hoveredBorderMetatileSelectionChanged(uint16_t);
|
||||||
|
|
|
@ -4,19 +4,20 @@
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
|
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
#include "mappixmapitem.h"
|
#include "movementpermissionsselector.h"
|
||||||
|
#include "layoutpixmapitem.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
class CollisionPixmapItem : public MapPixmapItem {
|
class CollisionPixmapItem : public LayoutPixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CollisionPixmapItem(Map *map, QSpinBox * selectedCollision, QSpinBox * selectedElevation, MetatileSelector *metatileSelector, Settings *settings, qreal *opacity)
|
CollisionPixmapItem(Layout *layout, QSpinBox * selectedCollision, QSpinBox * selectedElevation, MetatileSelector *metatileSelector, Settings *settings, qreal *opacity)
|
||||||
: MapPixmapItem(map, metatileSelector, settings){
|
: LayoutPixmapItem(layout, metatileSelector, settings){
|
||||||
this->selectedCollision = selectedCollision;
|
this->selectedCollision = selectedCollision;
|
||||||
this->selectedElevation = selectedElevation;
|
this->selectedElevation = selectedElevation;
|
||||||
this->opacity = opacity;
|
this->opacity = opacity;
|
||||||
map->setCollisionItem(this);
|
layout->setCollisionItem(this);
|
||||||
}
|
}
|
||||||
QSpinBox * selectedCollision;
|
QSpinBox * selectedCollision;
|
||||||
QSpinBox * selectedElevation;
|
QSpinBox * selectedElevation;
|
||||||
|
|
46
include/ui/colorinputwidget.h
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#ifndef COLORINPUTWIDGET_H
|
||||||
|
#define COLORINPUTWIDGET_H
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QValidator>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class ColorInputWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ColorInputWidget : public QGroupBox {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit ColorInputWidget(QWidget *parent = nullptr);
|
||||||
|
explicit ColorInputWidget(const QString &title, QWidget *parent = nullptr);
|
||||||
|
~ColorInputWidget();
|
||||||
|
|
||||||
|
void setColor(QRgb color);
|
||||||
|
QRgb color() const { return m_color; }
|
||||||
|
|
||||||
|
bool setBitDepth(int bits);
|
||||||
|
int bitDepth() const { return m_bitDepth; }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void colorChanged(QRgb color);
|
||||||
|
void bitDepthChanged(int bits);
|
||||||
|
void editingFinished();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::ColorInputWidget *ui;
|
||||||
|
|
||||||
|
QRgb m_color = 0;
|
||||||
|
int m_bitDepth = 0;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
void updateColorUi();
|
||||||
|
void pickColor();
|
||||||
|
void blockEditSignals(bool block);
|
||||||
|
|
||||||
|
void setRgbFromSliders();
|
||||||
|
void setRgbFromSpinners();
|
||||||
|
void setRgbFromHexString(const QString &);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COLORINPUTWIDGET_H
|
|
@ -4,44 +4,50 @@
|
||||||
#include "mapconnection.h"
|
#include "mapconnection.h"
|
||||||
#include <QGraphicsPixmapItem>
|
#include <QGraphicsPixmapItem>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QPointer>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
class ConnectionPixmapItem : public QObject, public QGraphicsPixmapItem {
|
class ConnectionPixmapItem : public QObject, public QGraphicsPixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ConnectionPixmapItem(QPixmap pixmap, MapConnection* connection, int x, int y, int baseMapWidth, int baseMapHeight): QGraphicsPixmapItem(pixmap) {
|
ConnectionPixmapItem(MapConnection* connection, int originX, int originY);
|
||||||
this->basePixmap = pixmap;
|
ConnectionPixmapItem(MapConnection* connection, QPoint origin);
|
||||||
this->connection = connection;
|
|
||||||
setFlag(ItemIsMovable);
|
const QPointer<MapConnection> connection;
|
||||||
setFlag(ItemSendsGeometryChanges);
|
|
||||||
this->initialX = x;
|
void setOrigin(int x, int y);
|
||||||
this->initialY = y;
|
void setOrigin(QPoint pos);
|
||||||
this->initialOffset = connection->offset;
|
|
||||||
this->baseMapWidth = baseMapWidth;
|
|
||||||
this->baseMapHeight = baseMapHeight;
|
|
||||||
}
|
|
||||||
QPixmap basePixmap;
|
|
||||||
MapConnection* connection;
|
|
||||||
int initialX;
|
|
||||||
int initialY;
|
|
||||||
int initialOffset;
|
|
||||||
int baseMapWidth;
|
|
||||||
int baseMapHeight;
|
|
||||||
void render(qreal opacity = 1);
|
|
||||||
int getMinOffset();
|
|
||||||
int getMaxOffset();
|
|
||||||
void setEditable(bool editable);
|
void setEditable(bool editable);
|
||||||
bool getEditable();
|
bool getEditable();
|
||||||
void updateHighlight(bool selected);
|
|
||||||
|
void setSelected(bool selected);
|
||||||
|
|
||||||
|
void updatePos();
|
||||||
|
void render(bool ignoreCache = false);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPixmap basePixmap;
|
||||||
|
qreal originX;
|
||||||
|
qreal originY;
|
||||||
|
bool selected = false;
|
||||||
|
unsigned actionId = 0;
|
||||||
|
|
||||||
|
static const int mWidth = 16;
|
||||||
|
static const int mHeight = 16;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
virtual void mousePressEvent(QGraphicsSceneMouseEvent*) override;
|
||||||
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*);
|
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*) override;
|
||||||
|
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override;
|
||||||
|
virtual void keyPressEvent(QKeyEvent*) override;
|
||||||
|
virtual void focusInEvent(QFocusEvent*) override;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void connectionItemSelected(ConnectionPixmapItem* connectionItem);
|
void connectionItemDoubleClicked(MapConnection*);
|
||||||
void connectionItemDoubleClicked(ConnectionPixmapItem* connectionItem);
|
void selectionChanged(bool selected);
|
||||||
void connectionMoved(MapConnection*);
|
void deleteRequested(MapConnection*);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONNECTIONPIXMAPITEM_H
|
#endif // CONNECTIONPIXMAPITEM_H
|
||||||
|
|
53
include/ui/connectionslistitem.h
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#ifndef CONNECTIONSLISTITEM_H
|
||||||
|
#define CONNECTIONSLISTITEM_H
|
||||||
|
|
||||||
|
#include "mapconnection.h"
|
||||||
|
#include "map.h"
|
||||||
|
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class ConnectionsListItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We show the data for each map connection in the panel on the right side of the Connections tab.
|
||||||
|
// An instance of this class is used for each item in that list.
|
||||||
|
// It communicates with the ConnectionPixmapItem on the map through a shared MapConnection pointer.
|
||||||
|
class ConnectionsListItem : public QFrame
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ConnectionsListItem(QWidget *parent, MapConnection *connection, const QStringList &mapNames);
|
||||||
|
~ConnectionsListItem();
|
||||||
|
|
||||||
|
void updateUI();
|
||||||
|
void setSelected(bool selected);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::ConnectionsListItem *ui;
|
||||||
|
QPointer<MapConnection> connection;
|
||||||
|
Map *map;
|
||||||
|
bool isSelected = false;
|
||||||
|
unsigned actionId = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void mousePressEvent(QMouseEvent*) override;
|
||||||
|
virtual void focusInEvent(QFocusEvent*) override;
|
||||||
|
virtual void keyPressEvent(QKeyEvent*) override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void selected();
|
||||||
|
void openMapClicked(MapConnection*);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_comboBox_Direction_currentTextChanged(QString direction);
|
||||||
|
void on_comboBox_Map_currentTextChanged(QString mapName);
|
||||||
|
void on_spinBox_Offset_valueChanged(int offset);
|
||||||
|
void on_button_Delete_clicked();
|
||||||
|
void on_button_OpenMap_clicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONNECTIONSLISTITEM_H
|
|
@ -1,23 +1,24 @@
|
||||||
#ifndef CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
#ifndef CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
||||||
#define CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
#define CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
||||||
|
|
||||||
#include "map.h"
|
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
#include <QGraphicsPixmapItem>
|
#include <QGraphicsPixmapItem>
|
||||||
|
|
||||||
|
class Layout;
|
||||||
|
|
||||||
class CurrentSelectedMetatilesPixmapItem : public QGraphicsPixmapItem {
|
class CurrentSelectedMetatilesPixmapItem : public QGraphicsPixmapItem {
|
||||||
public:
|
public:
|
||||||
CurrentSelectedMetatilesPixmapItem(Map *map, MetatileSelector *metatileSelector) {
|
CurrentSelectedMetatilesPixmapItem(Layout *layout, MetatileSelector *metatileSelector) {
|
||||||
this->map = map;
|
this->layout = layout;
|
||||||
this->metatileSelector = metatileSelector;
|
this->metatileSelector = metatileSelector;
|
||||||
}
|
}
|
||||||
Map* map = nullptr;
|
Layout *layout = nullptr;
|
||||||
MetatileSelector *metatileSelector;
|
MetatileSelector *metatileSelector;
|
||||||
void draw();
|
void draw();
|
||||||
|
|
||||||
void setMap(Map *map) { this->map = map; }
|
void setLayout(Layout *layout) { this->layout = layout; }
|
||||||
};
|
};
|
||||||
|
|
||||||
QPixmap drawMetatileSelection(MetatileSelection selection, Map *map);
|
QPixmap drawMetatileSelection(MetatileSelection selection, Layout *layout);
|
||||||
|
|
||||||
#endif // CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
#endif // CURRENTSELECTEDMETATILESPIXMAPITEM_H
|
||||||
|
|
|
@ -31,7 +31,6 @@ private:
|
||||||
Ui::CustomScriptsEditor *ui;
|
Ui::CustomScriptsEditor *ui;
|
||||||
|
|
||||||
bool hasUnsavedChanges = false;
|
bool hasUnsavedChanges = false;
|
||||||
QString fileDialogDir;
|
|
||||||
const QString baseDir;
|
const QString baseDir;
|
||||||
|
|
||||||
void displayScript(const QString &filepath, bool enabled);
|
void displayScript(const QString &filepath, bool enabled);
|
||||||
|
@ -50,12 +49,14 @@ private:
|
||||||
void restoreWindowState();
|
void restoreWindowState();
|
||||||
void initShortcuts();
|
void initShortcuts();
|
||||||
QObjectList shortcutableObjects() const;
|
QObjectList shortcutableObjects() const;
|
||||||
|
void openManual();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void dialogButtonClicked(QAbstractButton *button);
|
void dialogButtonClicked(QAbstractButton *button);
|
||||||
void createNewScript();
|
void createNewScript();
|
||||||
void loadScript();
|
void loadScript();
|
||||||
void refreshScripts();
|
bool refreshScripts();
|
||||||
|
void userRefreshScripts();
|
||||||
void removeSelectedScripts();
|
void removeSelectedScripts();
|
||||||
void openSelectedScripts();
|
void openSelectedScripts();
|
||||||
};
|
};
|
||||||
|
|
30
include/ui/divingmappixmapitem.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef DIVINGMAPPIXMAPITEM_H
|
||||||
|
#define DIVINGMAPPIXMAPITEM_H
|
||||||
|
|
||||||
|
#include "mapconnection.h"
|
||||||
|
|
||||||
|
#include <QGraphicsPixmapItem>
|
||||||
|
#include <QPointer>
|
||||||
|
#include <QComboBox>
|
||||||
|
|
||||||
|
class DivingMapPixmapItem : public QObject, public QGraphicsPixmapItem {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
DivingMapPixmapItem(MapConnection *connection, QComboBox *combo);
|
||||||
|
~DivingMapPixmapItem();
|
||||||
|
|
||||||
|
MapConnection* connection() const { return m_connection; }
|
||||||
|
void updatePixmap();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPointer<MapConnection> m_connection;
|
||||||
|
QPointer<QComboBox> m_combo;
|
||||||
|
|
||||||
|
void setComboText(const QString &text);
|
||||||
|
static QPixmap getBasePixmap(MapConnection* connection);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onTargetMapChanged();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DIVINGMAPPIXMAPITEM_H
|
|
@ -24,13 +24,7 @@ public:
|
||||||
updatePosition();
|
updatePosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
Editor *editor = nullptr;
|
|
||||||
Event *event = nullptr;
|
Event *event = nullptr;
|
||||||
QGraphicsItemAnimation *pos_anim = nullptr;
|
|
||||||
|
|
||||||
bool active;
|
|
||||||
int last_x;
|
|
||||||
int last_y;
|
|
||||||
|
|
||||||
void updatePosition();
|
void updatePosition();
|
||||||
void move(int dx, int dy);
|
void move(int dx, int dy);
|
||||||
|
@ -38,6 +32,12 @@ public:
|
||||||
void emitPositionChanged();
|
void emitPositionChanged();
|
||||||
void updatePixmap();
|
void updatePixmap();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Editor *editor = nullptr;
|
||||||
|
QPoint lastPos;
|
||||||
|
bool active = false;
|
||||||
|
bool releaseSelectionQueued = false;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void positionChanged(Event *event);
|
void positionChanged(Event *event);
|
||||||
void xChanged(int);
|
void xChanged(int);
|
||||||
|
|
|
@ -28,7 +28,9 @@ public:
|
||||||
Slot, Group, Species, MinLevel, MaxLevel, EncounterChance, SlotRatio, EncounterRate, Count
|
Slot, Group, Species, MinLevel, MaxLevel, EncounterChance, SlotRatio, EncounterRate, Count
|
||||||
};
|
};
|
||||||
|
|
||||||
WildMonInfo encounterData();
|
WildMonInfo encounterData() const { return this->monInfo; }
|
||||||
|
EncounterField encounterField() const { return this->encounterFields.at(this->fieldIndex); }
|
||||||
|
QList<double> percentages() const { return this->slotPercentages; }
|
||||||
void resize(int rows, int cols);
|
void resize(int rows, int cols);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
28
include/ui/eventfilters.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include <QObject>
|
||||||
|
#include <QEvent>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Prevent wheel scroll
|
||||||
|
class WheelFilter : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
WheelFilter(QObject *parent) : QObject(parent) {}
|
||||||
|
virtual ~WheelFilter() {}
|
||||||
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// Ctrl+Wheel = zoom
|
||||||
|
class MapSceneEventFilter : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
protected:
|
||||||
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||||
|
public:
|
||||||
|
explicit MapSceneEventFilter(QObject *parent = nullptr) : QObject(parent) {}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void wheelZoom(int delta);
|
||||||
|
public slots:
|
||||||
|
};
|
|
@ -9,9 +9,11 @@ class FilterChildrenProxyModel : public QSortFilterProxyModel
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FilterChildrenProxyModel(QObject *parent = nullptr);
|
explicit FilterChildrenProxyModel(QObject *parent = nullptr);
|
||||||
|
void setHideEmpty(bool hidden) { this->hideEmpty = hidden; }
|
||||||
protected:
|
protected:
|
||||||
bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;
|
bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;
|
||||||
|
private:
|
||||||
|
bool hideEmpty = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FILTERCHILDRENPROXYMODEL_H
|
#endif // FILTERCHILDRENPROXYMODEL_H
|
||||||
|
|
|
@ -34,6 +34,7 @@ signals:
|
||||||
|
|
||||||
class Editor;
|
class Editor;
|
||||||
|
|
||||||
|
// TODO: This should just be MapView. It makes map-based assumptions, and no other class inherits GraphicsView.
|
||||||
class GraphicsView : public QGraphicsView
|
class GraphicsView : public QGraphicsView
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -44,10 +45,10 @@ public:
|
||||||
// GraphicsView_Object object;
|
// GraphicsView_Object object;
|
||||||
Editor *editor;
|
Editor *editor;
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *event);
|
virtual void mousePressEvent(QMouseEvent *event) override;
|
||||||
void mouseMoveEvent(QMouseEvent *event);
|
virtual void mouseMoveEvent(QMouseEvent *event) override;
|
||||||
void mouseReleaseEvent(QMouseEvent *event);
|
virtual void mouseReleaseEvent(QMouseEvent *event) override;
|
||||||
void moveEvent(QMoveEvent *event);
|
virtual void moveEvent(QMoveEvent *event) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Q_DECLARE_METATYPE(GraphicsView)
|
//Q_DECLARE_METATYPE(GraphicsView)
|
||||||
|
|
99
include/ui/gridsettings.h
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
#ifndef GRIDSETTINGS_H
|
||||||
|
#define GRIDSETTINGS_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QAbstractButton>
|
||||||
|
|
||||||
|
class GridSettings {
|
||||||
|
public:
|
||||||
|
explicit GridSettings() {};
|
||||||
|
~GridSettings() {};
|
||||||
|
|
||||||
|
enum Style {
|
||||||
|
Solid,
|
||||||
|
LargeDashes,
|
||||||
|
SmallDashes,
|
||||||
|
Crosshairs,
|
||||||
|
Dots,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint width = 16;
|
||||||
|
uint height = 16;
|
||||||
|
int offsetX = 0;
|
||||||
|
int offsetY = 0;
|
||||||
|
Style style = Style::Solid;
|
||||||
|
QColor color = Qt::black;
|
||||||
|
QVector<qreal> getHorizontalDashPattern() const { return this->getDashPattern(this->width); }
|
||||||
|
QVector<qreal> getVerticalDashPattern() const { return this->getDashPattern(this->height); }
|
||||||
|
|
||||||
|
static QString getStyleName(Style style);
|
||||||
|
static GridSettings::Style getStyleFromName(const QString &name);
|
||||||
|
private:
|
||||||
|
static const QMap<Style, QString> styleToName;
|
||||||
|
|
||||||
|
QVector<qreal> getCenteredDashPattern(uint length, qreal dashLength, qreal gapLength) const;
|
||||||
|
QVector<qreal> getDashPattern(uint length) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool operator==(const GridSettings &a, const GridSettings &b) {
|
||||||
|
return a.width == b.width
|
||||||
|
&& a.height == b.height
|
||||||
|
&& a.offsetX == b.offsetX
|
||||||
|
&& a.offsetY == b.offsetY
|
||||||
|
&& a.style == b.style
|
||||||
|
&& a.color == b.color;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool operator!=(const GridSettings &a, const GridSettings &b) {
|
||||||
|
return !(operator==(a, b));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class GridSettingsDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class GridSettingsDialog : public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit GridSettingsDialog(QWidget *parent = nullptr);
|
||||||
|
explicit GridSettingsDialog(GridSettings *settings, QWidget *parent = nullptr);
|
||||||
|
~GridSettingsDialog();
|
||||||
|
|
||||||
|
void setSettings(const GridSettings &settings);
|
||||||
|
GridSettings settings() const { return *m_settings; }
|
||||||
|
|
||||||
|
void setDefaultSettings(const GridSettings &settings);
|
||||||
|
GridSettings defaultSettings() const { return m_defaultSettings; }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void changedGridSettings();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::GridSettingsDialog *ui;
|
||||||
|
GridSettings *const m_settings;
|
||||||
|
const GridSettings m_originalSettings;
|
||||||
|
GridSettings m_defaultSettings;
|
||||||
|
bool m_dimensionsLinked = true;
|
||||||
|
bool m_offsetsLinked = true;
|
||||||
|
bool m_ownedSettings = false;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
void updateInput();
|
||||||
|
void setWidth(int value);
|
||||||
|
void setHeight(int value);
|
||||||
|
void setOffsetX(int value);
|
||||||
|
void setOffsetY(int value);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void dialogButtonClicked(QAbstractButton *button);
|
||||||
|
void on_spinBox_Width_valueChanged(int value);
|
||||||
|
void on_spinBox_Height_valueChanged(int value);
|
||||||
|
void on_spinBox_X_valueChanged(int value);
|
||||||
|
void on_spinBox_Y_valueChanged(int value);
|
||||||
|
void on_comboBox_Style_currentTextChanged(const QString &text);
|
||||||
|
void onColorChanged(QRgb color);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // GRIDSETTINGS_H
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
QImage getCollisionMetatileImage(Block);
|
QImage getCollisionMetatileImage(Block);
|
||||||
QImage getCollisionMetatileImage(int, int);
|
QImage getCollisionMetatileImage(int, int);
|
||||||
QImage getMetatileImage(uint16_t, Tileset*, Tileset*, QList<int>, QList<float>, bool useTruePalettes = false);
|
QImage getMetatileImage(uint16_t, Tileset*, Tileset*, const QList<int>&, const QList<float>&, bool useTruePalettes = false);
|
||||||
QImage getMetatileImage(Metatile*, Tileset*, Tileset*, QList<int>, QList<float>, bool useTruePalettes = false);
|
QImage getMetatileImage(Metatile*, Tileset*, Tileset*, const QList<int>&, const QList<float>&, bool useTruePalettes = false);
|
||||||
QImage getTileImage(uint16_t, Tileset*, Tileset*);
|
QImage getTileImage(uint16_t, Tileset*, Tileset*);
|
||||||
QImage getPalettedTileImage(uint16_t, Tileset*, Tileset*, int, bool useTruePalettes = false);
|
QImage getPalettedTileImage(uint16_t, Tileset*, Tileset*, int, bool useTruePalettes = false);
|
||||||
QImage getGreyscaleTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTileset);
|
QImage getGreyscaleTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTileset);
|
||||||
|
|
|
@ -1,54 +1,58 @@
|
||||||
#ifndef MAPPIXMAPITEM_H
|
#ifndef MAPPIXMAPITEM_H
|
||||||
#define MAPPIXMAPITEM_H
|
#define MAPPIXMAPITEM_H
|
||||||
|
|
||||||
#include "map.h"
|
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
#include <QGraphicsPixmapItem>
|
#include <QGraphicsPixmapItem>
|
||||||
|
|
||||||
class MapPixmapItem : public QObject, public QGraphicsPixmapItem {
|
class Layout;
|
||||||
|
|
||||||
|
class LayoutPixmapItem : public QObject, public QGraphicsPixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using QGraphicsPixmapItem::paint;
|
using QGraphicsPixmapItem::paint;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum class PaintMode {
|
LayoutPixmapItem(Layout *layout, MetatileSelector *metatileSelector, Settings *settings) {
|
||||||
Disabled,
|
this->layout = layout;
|
||||||
Metatiles,
|
// this->map->setMapItem(this);
|
||||||
EventObjects
|
|
||||||
};
|
|
||||||
MapPixmapItem(Map *map_, MetatileSelector *metatileSelector, Settings *settings) {
|
|
||||||
this->map = map_;
|
|
||||||
this->map->setMapItem(this);
|
|
||||||
this->metatileSelector = metatileSelector;
|
this->metatileSelector = metatileSelector;
|
||||||
this->settings = settings;
|
this->settings = settings;
|
||||||
this->paintingMode = PaintMode::Metatiles;
|
this->lockedAxis = LayoutPixmapItem::Axis::None;
|
||||||
this->lockedAxis = MapPixmapItem::Axis::None;
|
|
||||||
this->prevStraightPathState = false;
|
this->prevStraightPathState = false;
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
}
|
}
|
||||||
MapPixmapItem::PaintMode paintingMode;
|
|
||||||
Map *map;
|
Layout *layout;
|
||||||
|
|
||||||
MetatileSelector *metatileSelector;
|
MetatileSelector *metatileSelector;
|
||||||
|
|
||||||
Settings *settings;
|
Settings *settings;
|
||||||
|
|
||||||
bool active;
|
bool active;
|
||||||
bool has_mouse = false;
|
bool has_mouse = false;
|
||||||
bool right_click;
|
bool right_click;
|
||||||
|
|
||||||
int paint_tile_initial_x;
|
int paint_tile_initial_x;
|
||||||
int paint_tile_initial_y;
|
int paint_tile_initial_y;
|
||||||
bool prevStraightPathState;
|
bool prevStraightPathState;
|
||||||
int straight_path_initial_x;
|
int straight_path_initial_x;
|
||||||
int straight_path_initial_y;
|
int straight_path_initial_y;
|
||||||
|
|
||||||
QPoint metatilePos;
|
QPoint metatilePos;
|
||||||
|
|
||||||
enum Axis {
|
enum Axis {
|
||||||
None = 0,
|
None = 0,
|
||||||
X,
|
X,
|
||||||
Y
|
Y
|
||||||
};
|
};
|
||||||
MapPixmapItem::Axis lockedAxis;
|
|
||||||
|
LayoutPixmapItem::Axis lockedAxis;
|
||||||
|
|
||||||
QPoint selection_origin;
|
QPoint selection_origin;
|
||||||
QList<QPoint> selection;
|
QList<QPoint> selection;
|
||||||
|
|
||||||
virtual void paint(QGraphicsSceneMouseEvent*);
|
virtual void paint(QGraphicsSceneMouseEvent*);
|
||||||
virtual void floodFill(QGraphicsSceneMouseEvent*);
|
virtual void floodFill(QGraphicsSceneMouseEvent*);
|
||||||
virtual void magicFill(QGraphicsSceneMouseEvent*);
|
virtual void magicFill(QGraphicsSceneMouseEvent*);
|
||||||
|
@ -70,26 +74,33 @@ public:
|
||||||
QList<CollisionSelectionItem> selectedCollisions,
|
QList<CollisionSelectionItem> selectedCollisions,
|
||||||
bool fromScriptCall = false);
|
bool fromScriptCall = false);
|
||||||
void floodFillSmartPath(int initialX, int initialY, bool fromScriptCall = false);
|
void floodFillSmartPath(int initialX, int initialY, bool fromScriptCall = false);
|
||||||
|
|
||||||
virtual void pick(QGraphicsSceneMouseEvent*);
|
virtual void pick(QGraphicsSceneMouseEvent*);
|
||||||
virtual void select(QGraphicsSceneMouseEvent*);
|
virtual void select(QGraphicsSceneMouseEvent*);
|
||||||
virtual void shift(QGraphicsSceneMouseEvent*);
|
virtual void shift(QGraphicsSceneMouseEvent*);
|
||||||
void shift(int xDelta, int yDelta, bool fromScriptCall = false);
|
void shift(int xDelta, int yDelta, bool fromScriptCall = false);
|
||||||
virtual void draw(bool ignoreCache = false);
|
virtual void draw(bool ignoreCache = false);
|
||||||
|
|
||||||
void updateMetatileSelection(QGraphicsSceneMouseEvent *event);
|
void updateMetatileSelection(QGraphicsSceneMouseEvent *event);
|
||||||
void paintNormal(int x, int y, bool fromScriptCall = false);
|
void paintNormal(int x, int y, bool fromScriptCall = false);
|
||||||
void lockNondominantAxis(QGraphicsSceneMouseEvent *event);
|
void lockNondominantAxis(QGraphicsSceneMouseEvent *event);
|
||||||
QPoint adjustCoords(QPoint pos);
|
QPoint adjustCoords(QPoint pos);
|
||||||
|
|
||||||
|
void setEditsEnabled(bool enabled) { this->editsEnabled = enabled; }
|
||||||
|
bool getEditsEnabled() { return this->editsEnabled; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void paintSmartPath(int x, int y, bool fromScriptCall = false);
|
void paintSmartPath(int x, int y, bool fromScriptCall = false);
|
||||||
static QList<int> smartPathTable;
|
static QList<int> smartPathTable;
|
||||||
|
|
||||||
unsigned actionId_ = 0;
|
unsigned actionId_ = 0;
|
||||||
|
|
||||||
|
bool editsEnabled = true;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void startPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *);
|
void startPaint(QGraphicsSceneMouseEvent *, LayoutPixmapItem *);
|
||||||
void endPaint(QGraphicsSceneMouseEvent *, MapPixmapItem *);
|
void endPaint(QGraphicsSceneMouseEvent *, LayoutPixmapItem *);
|
||||||
void mouseEvent(QGraphicsSceneMouseEvent *, MapPixmapItem *);
|
void mouseEvent(QGraphicsSceneMouseEvent *, LayoutPixmapItem *);
|
||||||
void hoveredMapMetatileChanged(const QPoint &pos);
|
void hoveredMapMetatileChanged(const QPoint &pos);
|
||||||
void hoveredMapMetatileCleared();
|
void hoveredMapMetatileCleared();
|
||||||
|
|
|
@ -16,6 +16,24 @@ enum ImageExporterMode {
|
||||||
Timelapse,
|
Timelapse,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ImageExporterSettings {
|
||||||
|
bool showObjects = false;
|
||||||
|
bool showWarps = false;
|
||||||
|
bool showBGs = false;
|
||||||
|
bool showTriggers = false;
|
||||||
|
bool showHealLocations = false;
|
||||||
|
bool showUpConnections = false;
|
||||||
|
bool showDownConnections = false;
|
||||||
|
bool showLeftConnections = false;
|
||||||
|
bool showRightConnections = false;
|
||||||
|
bool showGrid = false;
|
||||||
|
bool showBorder = false;
|
||||||
|
bool showCollision = false;
|
||||||
|
bool previewActualSize = false;
|
||||||
|
int timelapseSkipAmount = 1;
|
||||||
|
int timelapseDelayMs = 200;
|
||||||
|
};
|
||||||
|
|
||||||
class MapImageExporter : public QDialog
|
class MapImageExporter : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -27,55 +45,51 @@ public:
|
||||||
private:
|
private:
|
||||||
Ui::MapImageExporter *ui;
|
Ui::MapImageExporter *ui;
|
||||||
|
|
||||||
|
Layout *layout = nullptr;
|
||||||
Map *map = nullptr;
|
Map *map = nullptr;
|
||||||
Editor *editor = nullptr;
|
Editor *editor = nullptr;
|
||||||
QGraphicsScene *scene = nullptr;
|
QGraphicsScene *scene = nullptr;
|
||||||
|
|
||||||
QPixmap preview;
|
QPixmap preview;
|
||||||
|
|
||||||
bool showObjects = false;
|
ImageExporterSettings settings;
|
||||||
bool showWarps = false;
|
|
||||||
bool showBGs = false;
|
|
||||||
bool showTriggers = false;
|
|
||||||
bool showHealSpots = false;
|
|
||||||
bool showUpConnections = false;
|
|
||||||
bool showDownConnections = false;
|
|
||||||
bool showLeftConnections = false;
|
|
||||||
bool showRightConnections = false;
|
|
||||||
bool showGrid = false;
|
|
||||||
bool showBorder = false;
|
|
||||||
bool showCollision = false;
|
|
||||||
int timelapseSkipAmount = 1;
|
|
||||||
int timelapseDelayMs = 200;
|
|
||||||
ImageExporterMode mode = ImageExporterMode::Normal;
|
ImageExporterMode mode = ImageExporterMode::Normal;
|
||||||
|
|
||||||
void updatePreview();
|
void updatePreview();
|
||||||
|
void scalePreview();
|
||||||
|
void updateShowBorderState();
|
||||||
void saveImage();
|
void saveImage();
|
||||||
QPixmap getStitchedImage(QProgressDialog *progress, bool includeBorder);
|
QPixmap getStitchedImage(QProgressDialog *progress, bool includeBorder);
|
||||||
QPixmap getFormattedMapPixmap(Map *map, bool ignoreBorder);
|
QPixmap getFormattedMapPixmap(Map *map, bool ignoreBorder = false);
|
||||||
bool historyItemAppliesToFrame(const QUndoCommand *command);
|
bool historyItemAppliesToFrame(const QUndoCommand *command);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void showEvent(QShowEvent *) override;
|
||||||
|
virtual void resizeEvent(QResizeEvent *) override;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_checkBox_Objects_stateChanged(int state);
|
void on_checkBox_Objects_stateChanged(int state);
|
||||||
void on_checkBox_Warps_stateChanged(int state);
|
void on_checkBox_Warps_stateChanged(int state);
|
||||||
void on_checkBox_BGs_stateChanged(int state);
|
void on_checkBox_BGs_stateChanged(int state);
|
||||||
void on_checkBox_Triggers_stateChanged(int state);
|
void on_checkBox_Triggers_stateChanged(int state);
|
||||||
void on_checkBox_HealSpots_stateChanged(int state);
|
void on_checkBox_HealLocations_stateChanged(int state);
|
||||||
|
void on_checkBox_AllEvents_stateChanged(int state);
|
||||||
|
|
||||||
void on_checkBox_ConnectionUp_stateChanged(int state);
|
void on_checkBox_ConnectionUp_stateChanged(int state);
|
||||||
void on_checkBox_ConnectionDown_stateChanged(int state);
|
void on_checkBox_ConnectionDown_stateChanged(int state);
|
||||||
void on_checkBox_ConnectionLeft_stateChanged(int state);
|
void on_checkBox_ConnectionLeft_stateChanged(int state);
|
||||||
void on_checkBox_ConnectionRight_stateChanged(int state);
|
void on_checkBox_ConnectionRight_stateChanged(int state);
|
||||||
|
void on_checkBox_AllConnections_stateChanged(int state);
|
||||||
|
|
||||||
void on_checkBox_Elevation_stateChanged(int state);
|
void on_checkBox_Elevation_stateChanged(int state);
|
||||||
void on_checkBox_Grid_stateChanged(int state);
|
void on_checkBox_Grid_stateChanged(int state);
|
||||||
void on_checkBox_Border_stateChanged(int state);
|
void on_checkBox_Border_stateChanged(int state);
|
||||||
|
|
||||||
void on_pushButton_Save_pressed();
|
|
||||||
void on_pushButton_Reset_pressed();
|
void on_pushButton_Reset_pressed();
|
||||||
void on_pushButton_Cancel_pressed();
|
|
||||||
void on_spinBox_TimelapseDelay_valueChanged(int delayMs);
|
void on_spinBox_TimelapseDelay_valueChanged(int delayMs);
|
||||||
void on_spinBox_FrameSkip_valueChanged(int skip);
|
void on_spinBox_FrameSkip_valueChanged(int skip);
|
||||||
|
|
||||||
|
void on_checkBox_ActualSize_stateChanged(int state);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAPIMAGEEXPORTER_H
|
#endif // MAPIMAGEEXPORTER_H
|
||||||
|
|
208
include/ui/maplistmodels.h
Normal file
|
@ -0,0 +1,208 @@
|
||||||
|
#pragma once
|
||||||
|
#ifndef MAPLISTMODELS_H
|
||||||
|
#define MAPLISTMODELS_H
|
||||||
|
|
||||||
|
#include <QTreeView>
|
||||||
|
#include <QFontDatabase>
|
||||||
|
#include <QStyledItemDelegate>
|
||||||
|
#include <QStandardItemModel>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Project;
|
||||||
|
|
||||||
|
enum MapListUserRoles {
|
||||||
|
GroupRole = Qt::UserRole + 1, // Used to hold the map group number.
|
||||||
|
TypeRole, // Used to differentiate between the different layers of the map list tree view.
|
||||||
|
TypeRole2, // Used for various extra data needed.
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class MapTree : public QTreeView {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
MapTree(QWidget *parent) : QTreeView(parent) {
|
||||||
|
this->setDropIndicatorShown(true);
|
||||||
|
this->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
|
||||||
|
this->setFocusPolicy(Qt::StrongFocus);
|
||||||
|
this->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void keyPressEvent(QKeyEvent *event) override;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void removeSelected();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class GroupNameDelegate : public QStyledItemDelegate {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
GroupNameDelegate(Project *project, QObject *parent = nullptr) : QStyledItemDelegate(parent), project(project) {}
|
||||||
|
|
||||||
|
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
||||||
|
void setEditorData(QWidget *editor, const QModelIndex &index) const override;
|
||||||
|
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;
|
||||||
|
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Project *project = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class QRegularExpressionValidator;
|
||||||
|
|
||||||
|
class MapListModel : public QStandardItemModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MapListModel(QObject *parent = nullptr) : QStandardItemModel(parent) {};
|
||||||
|
~MapListModel() { }
|
||||||
|
|
||||||
|
virtual QModelIndex indexOf(QString id) const = 0;
|
||||||
|
virtual void removeItemAt(const QModelIndex &index);
|
||||||
|
virtual QStandardItem *getItem(const QModelIndex &index) const = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void removeItem(QStandardItem *item) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MapGroupModel : public MapListModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MapGroupModel(Project *project, QObject *parent = nullptr);
|
||||||
|
~MapGroupModel() { }
|
||||||
|
|
||||||
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
|
|
||||||
|
Qt::DropActions supportedDropActions() const override;
|
||||||
|
QStringList mimeTypes() const override;
|
||||||
|
virtual QMimeData *mimeData(const QModelIndexList &indexes) const override;
|
||||||
|
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
|
||||||
|
|
||||||
|
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setMap(QString mapName) { this->openMap = mapName; }
|
||||||
|
|
||||||
|
QStandardItem *createGroupItem(QString groupName, int groupIndex, QStandardItem *fromItem = nullptr);
|
||||||
|
QStandardItem *createMapItem(QString mapName, QStandardItem *fromItem = nullptr);
|
||||||
|
|
||||||
|
QStandardItem *insertGroupItem(QString groupName);
|
||||||
|
QStandardItem *insertMapItem(QString mapName, QString groupName);
|
||||||
|
|
||||||
|
virtual QStandardItem *getItem(const QModelIndex &index) const override;
|
||||||
|
virtual QModelIndex indexOf(QString mapName) const override;
|
||||||
|
|
||||||
|
void initialize();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void removeItem(QStandardItem *item) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class MapTree;
|
||||||
|
void updateProject();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Project *project;
|
||||||
|
QStandardItem *root = nullptr;
|
||||||
|
|
||||||
|
QMap<QString, QStandardItem *> groupItems;
|
||||||
|
QMap<QString, QStandardItem *> mapItems;
|
||||||
|
|
||||||
|
QString openMap;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dragMoveCompleted();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class MapAreaModel : public MapListModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MapAreaModel(Project *project, QObject *parent = nullptr);
|
||||||
|
~MapAreaModel() {}
|
||||||
|
|
||||||
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setMap(QString mapName) { this->openMap = mapName; }
|
||||||
|
|
||||||
|
QStandardItem *createAreaItem(QString areaName);
|
||||||
|
QStandardItem *createMapItem(QString mapName, int areaIndex, int mapIndex);
|
||||||
|
|
||||||
|
QStandardItem *insertAreaItem(QString areaName);
|
||||||
|
QStandardItem *insertMapItem(QString mapName, QString areaName, int groupIndex);
|
||||||
|
|
||||||
|
virtual QStandardItem *getItem(const QModelIndex &index) const override;
|
||||||
|
virtual QModelIndex indexOf(QString mapName) const override;
|
||||||
|
|
||||||
|
void initialize();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void removeItem(QStandardItem *item) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Project *project;
|
||||||
|
QStandardItem *root = nullptr;
|
||||||
|
|
||||||
|
QMap<QString, QStandardItem *> areaItems;
|
||||||
|
QMap<QString, QStandardItem *> mapItems;
|
||||||
|
|
||||||
|
QString openMap;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void edited();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class LayoutTreeModel : public MapListModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
LayoutTreeModel(Project *project, QObject *parent = nullptr);
|
||||||
|
~LayoutTreeModel() {}
|
||||||
|
|
||||||
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setLayout(QString layoutId) { this->openLayout = layoutId; }
|
||||||
|
|
||||||
|
QStandardItem *createLayoutItem(QString layoutId);
|
||||||
|
QStandardItem *createMapItem(QString mapName);
|
||||||
|
|
||||||
|
QStandardItem *insertLayoutItem(QString layoutId);
|
||||||
|
QStandardItem *insertMapItem(QString mapName, QString layoutId);
|
||||||
|
|
||||||
|
virtual QStandardItem *getItem(const QModelIndex &index) const override;
|
||||||
|
virtual QModelIndex indexOf(QString layoutName) const override;
|
||||||
|
|
||||||
|
void initialize();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void removeItem(QStandardItem *item) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Project *project;
|
||||||
|
QStandardItem *root = nullptr;
|
||||||
|
|
||||||
|
QMap<QString, QStandardItem *> layoutItems;
|
||||||
|
QMap<QString, QStandardItem *> mapItems;
|
||||||
|
|
||||||
|
QString openLayout;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void edited();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAPLISTMODELS_H
|
52
include/ui/maplisttoolbar.h
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#ifndef MAPLISTTOOLBAR_H
|
||||||
|
#define MAPLISTTOOLBAR_H
|
||||||
|
|
||||||
|
#include "maplistmodels.h"
|
||||||
|
#include "filterchildrenproxymodel.h"
|
||||||
|
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class MapListToolBar;
|
||||||
|
}
|
||||||
|
|
||||||
|
class MapListToolBar : public QFrame
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit MapListToolBar(QWidget *parent = nullptr);
|
||||||
|
~MapListToolBar();
|
||||||
|
|
||||||
|
MapTree* list() const { return m_list; }
|
||||||
|
void setList(MapTree *list);
|
||||||
|
|
||||||
|
void setEditsAllowedButtonVisible(bool visible);
|
||||||
|
void setEditsAllowed(bool allowed);
|
||||||
|
void toggleEditsAllowed();
|
||||||
|
|
||||||
|
void setEmptyFoldersVisible(bool visible);
|
||||||
|
void toggleEmptyFolders();
|
||||||
|
|
||||||
|
void expandList();
|
||||||
|
void collapseList();
|
||||||
|
|
||||||
|
void applyFilter(const QString &filterText);
|
||||||
|
void clearFilter();
|
||||||
|
void setFilterLocked(bool locked) { m_filterLocked = locked; }
|
||||||
|
bool isFilterLocked() const { return m_filterLocked; }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void filterCleared(MapTree*);
|
||||||
|
void addFolderClicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::MapListToolBar *ui;
|
||||||
|
QPointer<MapTree> m_list;
|
||||||
|
bool m_filterLocked = false;
|
||||||
|
bool m_editsAllowed = false;
|
||||||
|
bool m_emptyFoldersVisible = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAPLISTTOOLBAR_H
|
|
@ -1,19 +0,0 @@
|
||||||
#ifndef MAPSCENEEVENTFILTER_H
|
|
||||||
#define MAPSCENEEVENTFILTER_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
|
|
||||||
class MapSceneEventFilter : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
protected:
|
|
||||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
|
||||||
public:
|
|
||||||
explicit MapSceneEventFilter(QObject *parent = nullptr);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void wheelZoom(int delta);
|
|
||||||
public slots:
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // MAPSCENEEVENTFILTER_H
|
|
|
@ -73,7 +73,8 @@ public:
|
||||||
private:
|
private:
|
||||||
QMap<int, Overlay*> overlayMap;
|
QMap<int, Overlay*> overlayMap;
|
||||||
protected:
|
protected:
|
||||||
void drawForeground(QPainter *painter, const QRectF &rect);
|
virtual void drawForeground(QPainter *painter, const QRectF &rect) override;
|
||||||
|
virtual void keyPressEvent(QKeyEvent*) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GRAPHICSVIEW_H
|
#endif // GRAPHICSVIEW_H
|
||||||
|
|
|
@ -31,13 +31,13 @@ struct MetatileSelection
|
||||||
class MetatileSelector: public SelectablePixmapItem {
|
class MetatileSelector: public SelectablePixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MetatileSelector(int numMetatilesWide, Map *map): SelectablePixmapItem(16, 16) {
|
MetatileSelector(int numMetatilesWide, Layout *layout): SelectablePixmapItem(16, 16) {
|
||||||
this->externalSelection = false;
|
this->externalSelection = false;
|
||||||
this->prefabSelection = false;
|
this->prefabSelection = false;
|
||||||
this->numMetatilesWide = numMetatilesWide;
|
this->numMetatilesWide = numMetatilesWide;
|
||||||
this->map = map;
|
this->layout = layout;
|
||||||
this->primaryTileset = map->layout->tileset_primary;
|
this->primaryTileset = layout->tileset_primary;
|
||||||
this->secondaryTileset = map->layout->tileset_secondary;
|
this->secondaryTileset = layout->tileset_secondary;
|
||||||
this->selection = MetatileSelection{};
|
this->selection = MetatileSelection{};
|
||||||
this->cellPos = QPoint(-1, -1);
|
this->cellPos = QPoint(-1, -1);
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
|
@ -51,7 +51,7 @@ public:
|
||||||
void setPrefabSelection(MetatileSelection selection);
|
void setPrefabSelection(MetatileSelection selection);
|
||||||
void setExternalSelection(int, int, QList<uint16_t>, QList<QPair<uint16_t, uint16_t>>);
|
void setExternalSelection(int, int, QList<uint16_t>, QList<QPair<uint16_t, uint16_t>>);
|
||||||
QPoint getMetatileIdCoordsOnWidget(uint16_t);
|
QPoint getMetatileIdCoordsOnWidget(uint16_t);
|
||||||
void setMap(Map*);
|
void setLayout(Layout *layout);
|
||||||
bool isInternalSelection() const { return (!this->externalSelection && !this->prefabSelection); }
|
bool isInternalSelection() const { return (!this->externalSelection && !this->prefabSelection); }
|
||||||
Tileset *primaryTileset;
|
Tileset *primaryTileset;
|
||||||
Tileset *secondaryTileset;
|
Tileset *secondaryTileset;
|
||||||
|
@ -65,7 +65,7 @@ private:
|
||||||
bool externalSelection;
|
bool externalSelection;
|
||||||
bool prefabSelection;
|
bool prefabSelection;
|
||||||
int numMetatilesWide;
|
int numMetatilesWide;
|
||||||
Map *map;
|
Layout *layout;
|
||||||
int externalSelectionWidth;
|
int externalSelectionWidth;
|
||||||
int externalSelectionHeight;
|
int externalSelectionHeight;
|
||||||
QList<uint16_t> externalSelectedMetatiles;
|
QList<uint16_t> externalSelectedMetatiles;
|
||||||
|
|
|
@ -32,8 +32,6 @@ public slots:
|
||||||
void deactivateTab(int tabIndex);
|
void deactivateTab(int tabIndex);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool eventFilter(QObject *object, QEvent *event);
|
|
||||||
|
|
||||||
void actionCopyTab(int index);
|
void actionCopyTab(int index);
|
||||||
void actionAddDeleteTab(int index);
|
void actionAddDeleteTab(int index);
|
||||||
|
|
||||||
|
|
32
include/ui/newmapconnectiondialog.h
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#ifndef NEWMAPCONNECTIONDIALOG_H
|
||||||
|
#define NEWMAPCONNECTIONDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include "map.h"
|
||||||
|
#include "mapconnection.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class NewMapConnectionDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class NewMapConnectionDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit NewMapConnectionDialog(QWidget *parent, Map* map, const QStringList &mapNames);
|
||||||
|
~NewMapConnectionDialog();
|
||||||
|
|
||||||
|
virtual void accept() override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void accepted(MapConnection *result);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::NewMapConnectionDialog *ui;
|
||||||
|
|
||||||
|
bool mapNameIsValid();
|
||||||
|
void setWarningVisible(bool visible);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NEWMAPCONNECTIONDIALOG_H
|
|
@ -23,8 +23,9 @@ public:
|
||||||
bool importedMap;
|
bool importedMap;
|
||||||
QString layoutId;
|
QString layoutId;
|
||||||
void init();
|
void init();
|
||||||
void init(MapSortOrder type, QVariant data);
|
void initUi();
|
||||||
void init(MapLayout *);
|
void init(int tabIndex, QString data);
|
||||||
|
void init(Layout *);
|
||||||
static void setDefaultSettings(Project *project);
|
static void setDefaultSettings(Project *project);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -37,7 +38,7 @@ private:
|
||||||
bool checkNewMapGroup();
|
bool checkNewMapGroup();
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
void useLayout(QString layoutId);
|
void useLayout(QString layoutId);
|
||||||
void useLayoutSettings(MapLayout *mapLayout);
|
void useLayoutSettings(Layout *mapLayout);
|
||||||
|
|
||||||
struct Settings {
|
struct Settings {
|
||||||
QString group;
|
QString group;
|
||||||
|
@ -60,6 +61,8 @@ private:
|
||||||
static struct Settings settings;
|
static struct Settings settings;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void on_checkBox_UseExistingLayout_stateChanged(int state);
|
||||||
|
void on_comboBox_Layout_currentTextChanged(const QString &text);
|
||||||
void on_pushButton_NewMap_Accept_clicked();
|
void on_pushButton_NewMap_Accept_clicked();
|
||||||
void on_lineEdit_NewMap_Name_textChanged(const QString &);
|
void on_lineEdit_NewMap_Name_textChanged(const QString &);
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,9 +13,15 @@ public:
|
||||||
void setTextItem(const QString &text);
|
void setTextItem(const QString &text);
|
||||||
void setNumberItem(int value);
|
void setNumberItem(int value);
|
||||||
void setHexItem(uint32_t value);
|
void setHexItem(uint32_t value);
|
||||||
|
void setClearButtonEnabled(bool enabled);
|
||||||
|
void setEditable(bool editable);
|
||||||
|
void setLineEdit(QLineEdit *edit);
|
||||||
|
void setFocusedScrollingEnabled(bool enabled);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setItem(int index, const QString &text);
|
void setItem(int index, const QString &text);
|
||||||
|
|
||||||
|
bool focusedScrollingEnabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // NOSCROLLCOMBOBOX_H
|
#endif // NOSCROLLCOMBOBOX_H
|
||||||
|
|
|
@ -50,19 +50,19 @@ private:
|
||||||
QColor fillColor;
|
QColor fillColor;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OverlayImage : public OverlayItem {
|
class OverlayPixmap : public OverlayItem {
|
||||||
public:
|
public:
|
||||||
OverlayImage(int x, int y, QImage image) {
|
OverlayPixmap(int x, int y, QPixmap pixmap) {
|
||||||
this->x = x;
|
this->x = x;
|
||||||
this->y = y;
|
this->y = y;
|
||||||
this->image = image;
|
this->pixmap = pixmap;
|
||||||
}
|
}
|
||||||
~OverlayImage() {}
|
~OverlayPixmap() {}
|
||||||
virtual void render(QPainter *painter);
|
virtual void render(QPainter *painter);
|
||||||
private:
|
private:
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
QImage image;
|
QPixmap pixmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Overlay
|
class Overlay
|
||||||
|
|
|
@ -2,10 +2,8 @@
|
||||||
#define PALETTEEDITOR_H
|
#define PALETTEEDITOR_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QValidator>
|
|
||||||
#include <QSlider>
|
#include "colorinputwidget.h"
|
||||||
#include <QFrame>
|
|
||||||
#include <QLabel>
|
|
||||||
#include "project.h"
|
#include "project.h"
|
||||||
#include "history.h"
|
#include "history.h"
|
||||||
|
|
||||||
|
@ -32,43 +30,27 @@ public:
|
||||||
private:
|
private:
|
||||||
Ui::PaletteEditor *ui;
|
Ui::PaletteEditor *ui;
|
||||||
Project *project = nullptr;
|
Project *project = nullptr;
|
||||||
|
QList<ColorInputWidget*> colorInputs;
|
||||||
QList<QList<QSlider*>> sliders;
|
|
||||||
QList<QList<QSpinBox *>> spinners;
|
|
||||||
QList<QFrame*> frames;
|
|
||||||
QList<QToolButton *> pickButtons;
|
|
||||||
QList<QLineEdit *> hexEdits;
|
|
||||||
|
|
||||||
Tileset *primaryTileset;
|
Tileset *primaryTileset;
|
||||||
Tileset *secondaryTileset;
|
Tileset *secondaryTileset;
|
||||||
|
|
||||||
QList<History<PaletteHistoryItem*>> palettesHistory;
|
QList<History<PaletteHistoryItem*>> palettesHistory;
|
||||||
|
|
||||||
void refreshColorUis();
|
Tileset* getTileset(int paletteId);
|
||||||
void updateColorUi(int index, QRgb color);
|
void refreshColorInputs();
|
||||||
void commitEditHistory(int paletteid);
|
void commitEditHistory();
|
||||||
|
void commitEditHistory(int paletteId);
|
||||||
void restoreWindowState();
|
void restoreWindowState();
|
||||||
void setSignalsEnabled(bool enabled);
|
|
||||||
void setColorsFromHistory(PaletteHistoryItem*, int);
|
|
||||||
void closeEvent(QCloseEvent*);
|
void closeEvent(QCloseEvent*);
|
||||||
void pickColor(int i);
|
|
||||||
|
|
||||||
void setRgb(int index, QRgb rgb);
|
void setRgb(int index, QRgb rgb);
|
||||||
void setRgbFromSliders(int colorIndex);
|
void setPalette(int paletteId, const QList<QRgb> &palette);
|
||||||
void setRgbFromHexEdit(int colorIndex);
|
|
||||||
void setRgbFromSpinners(int colorIndex);
|
|
||||||
|
|
||||||
void setBitDepth(int bits);
|
void setBitDepth(int bits);
|
||||||
int bitDepth = 24;
|
int bitDepth = 24;
|
||||||
|
|
||||||
class HexCodeValidator : public QValidator {
|
static const int numColors = 16;
|
||||||
virtual QValidator::State validate(QString &input, int &) const override {
|
|
||||||
input = input.toUpper();
|
|
||||||
return QValidator::Acceptable;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
HexCodeValidator *hexValidator = nullptr;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void closed();
|
void closed();
|
||||||
|
|
|
@ -20,9 +20,9 @@ struct PrefabItem
|
||||||
class Prefab
|
class Prefab
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void initPrefabUI(MetatileSelector *selector, QWidget *prefabWidget, QLabel *emptyPrefabLabel, Map *map);
|
void initPrefabUI(MetatileSelector *selector, QWidget *prefabWidget, QLabel *emptyPrefabLabel, Layout *layout);
|
||||||
void addPrefab(MetatileSelection selection, Map *map, QString name);
|
void addPrefab(MetatileSelection selection, Layout *layout, QString name);
|
||||||
void updatePrefabUi(Map *map);
|
void updatePrefabUi(Layout *layout);
|
||||||
bool tryImportDefaultPrefabs(QWidget * parent, BaseGameVersion version, QString filepath = "");
|
bool tryImportDefaultPrefabs(QWidget * parent, BaseGameVersion version, QString filepath = "");
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -2,10 +2,11 @@
|
||||||
#define PREFABCREATIONDIALOG_H
|
#define PREFABCREATIONDIALOG_H
|
||||||
|
|
||||||
#include "metatileselector.h"
|
#include "metatileselector.h"
|
||||||
#include "map.h"
|
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
|
class Layout;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class PrefabCreationDialog;
|
class PrefabCreationDialog;
|
||||||
}
|
}
|
||||||
|
@ -15,12 +16,12 @@ class PrefabCreationDialog : public QDialog
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PrefabCreationDialog(QWidget *parent, MetatileSelector *metatileSelector, Map *map);
|
explicit PrefabCreationDialog(QWidget *parent, MetatileSelector *metatileSelector, Layout *layout);
|
||||||
~PrefabCreationDialog();
|
~PrefabCreationDialog();
|
||||||
void savePrefab();
|
void savePrefab();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Map *map;
|
Layout *layout = nullptr;
|
||||||
Ui::PrefabCreationDialog *ui;
|
Ui::PrefabCreationDialog *ui;
|
||||||
MetatileSelection selection;
|
MetatileSelection selection;
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,7 +36,7 @@ private:
|
||||||
bool projectNeedsReload = false;
|
bool projectNeedsReload = false;
|
||||||
bool refreshing = false;
|
bool refreshing = false;
|
||||||
const QString baseDir;
|
const QString baseDir;
|
||||||
QHash<QString, QString> editedPokemonIconPaths;
|
QMap<QString, QString> editedPokemonIconPaths;
|
||||||
QString prevIconSpecies;
|
QString prevIconSpecies;
|
||||||
|
|
||||||
void initUi();
|
void initUi();
|
||||||
|
@ -61,10 +61,12 @@ private:
|
||||||
void chooseImageFile(QLineEdit * filepathEdit);
|
void chooseImageFile(QLineEdit * filepathEdit);
|
||||||
void chooseFile(QLineEdit * filepathEdit, const QString &description, const QString &extensions);
|
void chooseFile(QLineEdit * filepathEdit, const QString &description, const QString &extensions);
|
||||||
QString stripProjectDir(QString s);
|
QString stripProjectDir(QString s);
|
||||||
void disableParsedSetting(QWidget * widget, const QString &name, const QString &filepath);
|
bool disableParsedSetting(QWidget * widget, const QString &identifier, const QString &filepath);
|
||||||
void updateMaskOverlapWarning(QLabel * warning, QList<UIntSpinBox*> masks);
|
void updateMaskOverlapWarning(QLabel * warning, QList<UIntSpinBox*> masks);
|
||||||
QStringList getWarpBehaviorsList();
|
QStringList getWarpBehaviorsList();
|
||||||
void setWarpBehaviorsList(QStringList list);
|
void setWarpBehaviorsList(QStringList list);
|
||||||
|
void openFilesHelp();
|
||||||
|
void openIdentifiersHelp();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void dialogButtonClicked(QAbstractButton *button);
|
void dialogButtonClicked(QAbstractButton *button);
|
||||||
|
|
|
@ -27,6 +27,7 @@ public:
|
||||||
~RegionMapEditor();
|
~RegionMapEditor();
|
||||||
|
|
||||||
bool load(bool silent = false);
|
bool load(bool silent = false);
|
||||||
|
bool setupErrored() const { return setupError; }
|
||||||
|
|
||||||
void onRegionMapTileSelectorSelectedTileChanged(unsigned id);
|
void onRegionMapTileSelectorSelectedTileChanged(unsigned id);
|
||||||
void onRegionMapTileSelectorHoveredTileChanged(unsigned id);
|
void onRegionMapTileSelectorHoveredTileChanged(unsigned id);
|
||||||
|
@ -41,6 +42,8 @@ public:
|
||||||
|
|
||||||
void resizeTilemap(int width, int height);
|
void resizeTilemap(int width, int height);
|
||||||
|
|
||||||
|
bool reconfigure();
|
||||||
|
|
||||||
QObjectList shortcutableObjects() const;
|
QObjectList shortcutableObjects() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -53,9 +56,12 @@ private:
|
||||||
RegionMap *region_map = nullptr;
|
RegionMap *region_map = nullptr;
|
||||||
tsl::ordered_map<QString, RegionMap *> region_maps;
|
tsl::ordered_map<QString, RegionMap *> region_maps;
|
||||||
|
|
||||||
|
QString configFilepath;
|
||||||
|
|
||||||
poryjson::Json rmConfigJson;
|
poryjson::Json rmConfigJson;
|
||||||
|
|
||||||
bool configSaved = false;
|
bool configSaved = false;
|
||||||
|
bool setupError = false;
|
||||||
|
|
||||||
QUndoGroup history;
|
QUndoGroup history;
|
||||||
|
|
||||||
|
@ -89,7 +95,7 @@ private:
|
||||||
void saveConfig();
|
void saveConfig();
|
||||||
bool loadRegionMapEntries();
|
bool loadRegionMapEntries();
|
||||||
bool saveRegionMapEntries();
|
bool saveRegionMapEntries();
|
||||||
tsl::ordered_map<QString, MapSectionEntry> region_map_entries;
|
QMap<QString, MapSectionEntry> region_map_entries;
|
||||||
|
|
||||||
bool buildConfigDialog();
|
bool buildConfigDialog();
|
||||||
poryjson::Json configRegionMapDialog();
|
poryjson::Json configRegionMapDialog();
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
#include "orderedjson.h"
|
#include "orderedjson.h"
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QFileDialog>
|
|
||||||
|
|
||||||
class Project;
|
class Project;
|
||||||
|
|
||||||
|
@ -33,7 +32,7 @@ private:
|
||||||
|
|
||||||
void hideMessages();
|
void hideMessages();
|
||||||
|
|
||||||
QString browse(QString filter, QFileDialog::FileMode mode);
|
QString browse(QString filter);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_browse_tilesetImagePath_clicked();
|
void on_browse_tilesetImagePath_clicked();
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
#include "tileseteditormetatileselector.h"
|
#include "tileseteditormetatileselector.h"
|
||||||
#include "tileseteditortileselector.h"
|
#include "tileseteditortileselector.h"
|
||||||
#include "metatilelayersitem.h"
|
#include "metatilelayersitem.h"
|
||||||
#include "map.h"
|
|
||||||
|
class Layout;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class TilesetEditor;
|
class TilesetEditor;
|
||||||
|
@ -39,10 +40,10 @@ class TilesetEditor : public QMainWindow
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TilesetEditor(Project*, Map*, QWidget *parent = nullptr);
|
explicit TilesetEditor(Project *project, Layout *layout, QWidget *parent = nullptr);
|
||||||
~TilesetEditor();
|
~TilesetEditor();
|
||||||
void update(Map *map, QString primaryTilsetLabel, QString secondaryTilesetLabel);
|
void update(Layout *layout, QString primaryTilsetLabel, QString secondaryTilesetLabel);
|
||||||
void updateMap(Map *map);
|
void updateLayout(Layout *layout);
|
||||||
void updateTilesets(QString primaryTilsetLabel, QString secondaryTilesetLabel);
|
void updateTilesets(QString primaryTilsetLabel, QString secondaryTilesetLabel);
|
||||||
bool selectMetatile(uint16_t metatileId);
|
bool selectMetatile(uint16_t metatileId);
|
||||||
uint16_t getSelectedMetatileId();
|
uint16_t getSelectedMetatileId();
|
||||||
|
@ -87,6 +88,7 @@ private slots:
|
||||||
void on_actionShow_UnusedTiles_toggled(bool checked);
|
void on_actionShow_UnusedTiles_toggled(bool checked);
|
||||||
void on_actionMetatile_Grid_triggered(bool checked);
|
void on_actionMetatile_Grid_triggered(bool checked);
|
||||||
void on_actionLayer_Grid_triggered(bool checked);
|
void on_actionLayer_Grid_triggered(bool checked);
|
||||||
|
void on_actionShow_Tileset_Divider_triggered(bool checked);
|
||||||
|
|
||||||
void on_actionUndo_triggered();
|
void on_actionUndo_triggered();
|
||||||
|
|
||||||
|
@ -155,7 +157,7 @@ private:
|
||||||
MetatileLayersItem *metatileLayersItem = nullptr;
|
MetatileLayersItem *metatileLayersItem = nullptr;
|
||||||
PaletteEditor *paletteEditor = nullptr;
|
PaletteEditor *paletteEditor = nullptr;
|
||||||
Project *project = nullptr;
|
Project *project = nullptr;
|
||||||
Map *map = nullptr;
|
Layout *layout = nullptr;
|
||||||
Metatile *metatile = nullptr;
|
Metatile *metatile = nullptr;
|
||||||
Metatile *copiedMetatile = nullptr;
|
Metatile *copiedMetatile = nullptr;
|
||||||
QString copiedMetatileLabel;
|
QString copiedMetatileLabel;
|
||||||
|
|
|
@ -3,13 +3,14 @@
|
||||||
|
|
||||||
#include "selectablepixmapitem.h"
|
#include "selectablepixmapitem.h"
|
||||||
#include "tileset.h"
|
#include "tileset.h"
|
||||||
#include "map.h"
|
|
||||||
|
class Layout;
|
||||||
|
|
||||||
class TilesetEditorMetatileSelector: public SelectablePixmapItem {
|
class TilesetEditorMetatileSelector: public SelectablePixmapItem {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
TilesetEditorMetatileSelector(Tileset *primaryTileset, Tileset *secondaryTileset, Map *map);
|
TilesetEditorMetatileSelector(Tileset *primaryTileset, Tileset *secondaryTileset, Layout *layout);
|
||||||
Map *map = nullptr;
|
Layout *layout = nullptr;
|
||||||
void draw();
|
void draw();
|
||||||
bool select(uint16_t metatileId);
|
bool select(uint16_t metatileId);
|
||||||
void setTilesets(Tileset*, Tileset*, bool draw = true);
|
void setTilesets(Tileset*, Tileset*, bool draw = true);
|
||||||
|
@ -22,7 +23,8 @@ public:
|
||||||
QVector<uint16_t> usedMetatiles;
|
QVector<uint16_t> usedMetatiles;
|
||||||
bool selectorShowUnused = false;
|
bool selectorShowUnused = false;
|
||||||
bool selectorShowCounts = false;
|
bool selectorShowCounts = false;
|
||||||
bool showGrid;
|
bool showGrid = false;
|
||||||
|
bool showDivider = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
@ -43,6 +45,7 @@ private:
|
||||||
int numRows(int numMetatiles);
|
int numRows(int numMetatiles);
|
||||||
int numRows();
|
int numRows();
|
||||||
void drawGrid();
|
void drawGrid();
|
||||||
|
void drawDivider();
|
||||||
void drawFilters();
|
void drawFilters();
|
||||||
void drawUnused();
|
void drawUnused();
|
||||||
void drawCounts();
|
void drawCounts();
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
|
|
||||||
QVector<uint16_t> usedTiles;
|
QVector<uint16_t> usedTiles;
|
||||||
bool showUnused = false;
|
bool showUnused = false;
|
||||||
|
bool showDivider = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
void mousePressEvent(QGraphicsSceneMouseEvent*);
|
||||||
|
@ -61,6 +62,7 @@ private:
|
||||||
QPoint getTileCoords(uint16_t);
|
QPoint getTileCoords(uint16_t);
|
||||||
QList<QRgb> getCurPaletteTable();
|
QList<QRgb> getCurPaletteTable();
|
||||||
QList<Tile> buildSelectedTiles(int, int, QList<Tile>);
|
QList<Tile> buildSelectedTiles(int, int, QList<Tile>);
|
||||||
|
QImage buildImage(int tileIdStart, int numTiles);
|
||||||
|
|
||||||
void drawUnused();
|
void drawUnused();
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ class UpdatePromoter : public QDialog
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit UpdatePromoter(QWidget *parent, NetworkAccessManager *manager);
|
explicit UpdatePromoter(QWidget *parent, NetworkAccessManager *manager);
|
||||||
~UpdatePromoter() {};
|
~UpdatePromoter();
|
||||||
|
|
||||||
void checkForUpdates();
|
void checkForUpdates();
|
||||||
void updatePreferences();
|
void updatePreferences();
|
||||||
|
|
97
include/ui/wildmonchart.h
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
#ifndef WILDMONCHART_H
|
||||||
|
#define WILDMONCHART_H
|
||||||
|
|
||||||
|
#include "encountertablemodel.h"
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
#if __has_include(<QtCharts>)
|
||||||
|
#include <QtCharts>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class WildMonChart;
|
||||||
|
}
|
||||||
|
|
||||||
|
class WildMonChart : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit WildMonChart(QWidget *parent, const EncounterTableModel *table);
|
||||||
|
~WildMonChart();
|
||||||
|
|
||||||
|
virtual void closeEvent(QCloseEvent *event) override;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setTable(const EncounterTableModel *table);
|
||||||
|
void clearTable();
|
||||||
|
void refresh();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::WildMonChart *ui;
|
||||||
|
const EncounterTableModel *table;
|
||||||
|
|
||||||
|
QStringList groupNames;
|
||||||
|
QStringList groupNamesReversed;
|
||||||
|
QStringList speciesInLegendOrder;
|
||||||
|
QMap<int, QString> tableIndexToGroupName;
|
||||||
|
|
||||||
|
struct LevelRange {
|
||||||
|
int min;
|
||||||
|
int max;
|
||||||
|
};
|
||||||
|
QMap<QString, LevelRange> groupedLevelRanges;
|
||||||
|
|
||||||
|
struct Summary {
|
||||||
|
double speciesFrequency = 0.0;
|
||||||
|
QMap<int, double> levelFrequencies;
|
||||||
|
};
|
||||||
|
typedef QMap<QString, Summary> GroupedData;
|
||||||
|
|
||||||
|
QMap<QString, GroupedData> speciesToGroupedData;
|
||||||
|
QMap<QString, QColor> speciesToColor;
|
||||||
|
|
||||||
|
|
||||||
|
QStringList getSpeciesNamesAlphabetical() const;
|
||||||
|
double getSpeciesFrequency(const QString&, const QString&) const;
|
||||||
|
QMap<int, double> getLevelFrequencies(const QString &, const QString &) const;
|
||||||
|
LevelRange getLevelRange(const QString &, const QString &) const;
|
||||||
|
bool usesGroupLabels() const;
|
||||||
|
|
||||||
|
void clearTableData();
|
||||||
|
void readTable();
|
||||||
|
QChart* createSpeciesDistributionChart();
|
||||||
|
QChart* createLevelDistributionChart();
|
||||||
|
QBarSet* createLevelDistributionBarSet(const QString &, const QString &, bool);
|
||||||
|
void refreshSpeciesDistributionChart();
|
||||||
|
void refreshLevelDistributionChart();
|
||||||
|
|
||||||
|
void saveSpeciesColors(const QList<QBarSet*> &);
|
||||||
|
void applySpeciesColors(const QList<QBarSet*> &);
|
||||||
|
QChart::ChartTheme currentTheme() const;
|
||||||
|
void updateTheme();
|
||||||
|
void limitChartAnimation();
|
||||||
|
|
||||||
|
void showHelpDialog();
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// As of writing our static Qt build for Windows doesn't include the QtCharts module, so we dummy the class out here.
|
||||||
|
// The charts module is additionally excluded from Windows in porymap.pro
|
||||||
|
|
||||||
|
class WildMonChart : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit WildMonChart(QWidget *, const EncounterTableModel *) {};
|
||||||
|
~WildMonChart() {};
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setTable(const EncounterTableModel *) {};
|
||||||
|
void clearTable() {};
|
||||||
|
void refresh() {};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __has_include(<QtCharts>)
|
||||||
|
|
||||||
|
#endif // WILDMONCHART_H
|
57
porymap.pro
|
@ -6,6 +6,12 @@
|
||||||
|
|
||||||
QT += core gui qml network
|
QT += core gui qml network
|
||||||
|
|
||||||
|
qtHaveModule(charts) {
|
||||||
|
QT += charts
|
||||||
|
} else {
|
||||||
|
warning("Qt module 'charts' not found, disabling chart features.")
|
||||||
|
}
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
TARGET = porymap
|
TARGET = porymap
|
||||||
|
@ -14,6 +20,16 @@ RC_ICONS = resources/icons/porymap-icon-2.ico
|
||||||
ICON = resources/icons/porymap.icns
|
ICON = resources/icons/porymap.icns
|
||||||
QMAKE_CXXFLAGS += -std=c++17 -Wall
|
QMAKE_CXXFLAGS += -std=c++17 -Wall
|
||||||
QMAKE_TARGET_BUNDLE_PREFIX = com.pret
|
QMAKE_TARGET_BUNDLE_PREFIX = com.pret
|
||||||
|
|
||||||
|
# Get latest commit hash if we can (to display alongside version information).
|
||||||
|
win32 {
|
||||||
|
LATEST_COMMIT = $$system(git rev-parse --short HEAD 2> nul)
|
||||||
|
} else {
|
||||||
|
LATEST_COMMIT = $$system(git rev-parse --short HEAD 2>/dev/null)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINES += PORYMAP_LATEST_COMMIT=\\\"$$LATEST_COMMIT\\\"
|
||||||
|
|
||||||
VERSION = 5.4.1
|
VERSION = 5.4.1
|
||||||
DEFINES += PORYMAP_VERSION=\\\"$$VERSION\\\"
|
DEFINES += PORYMAP_VERSION=\\\"$$VERSION\\\"
|
||||||
|
|
||||||
|
@ -21,9 +37,11 @@ SOURCES += src/core/block.cpp \
|
||||||
src/core/bitpacker.cpp \
|
src/core/bitpacker.cpp \
|
||||||
src/core/blockdata.cpp \
|
src/core/blockdata.cpp \
|
||||||
src/core/events.cpp \
|
src/core/events.cpp \
|
||||||
|
src/core/filedialog.cpp \
|
||||||
src/core/heallocation.cpp \
|
src/core/heallocation.cpp \
|
||||||
src/core/imageexport.cpp \
|
src/core/imageexport.cpp \
|
||||||
src/core/map.cpp \
|
src/core/map.cpp \
|
||||||
|
src/core/mapconnection.cpp \
|
||||||
src/core/maplayout.cpp \
|
src/core/maplayout.cpp \
|
||||||
src/core/mapparser.cpp \
|
src/core/mapparser.cpp \
|
||||||
src/core/metatile.cpp \
|
src/core/metatile.cpp \
|
||||||
|
@ -38,7 +56,6 @@ SOURCES += src/core/block.cpp \
|
||||||
src/core/editcommands.cpp \
|
src/core/editcommands.cpp \
|
||||||
src/lib/fex/lexer.cpp \
|
src/lib/fex/lexer.cpp \
|
||||||
src/lib/fex/parser.cpp \
|
src/lib/fex/parser.cpp \
|
||||||
src/lib/fex/parser_util.cpp \
|
|
||||||
src/lib/orderedjson.cpp \
|
src/lib/orderedjson.cpp \
|
||||||
src/core/regionmapeditcommands.cpp \
|
src/core/regionmapeditcommands.cpp \
|
||||||
src/scriptapi/apimap.cpp \
|
src/scriptapi/apimap.cpp \
|
||||||
|
@ -46,13 +63,18 @@ SOURCES += src/core/block.cpp \
|
||||||
src/scriptapi/apiutility.cpp \
|
src/scriptapi/apiutility.cpp \
|
||||||
src/scriptapi/scripting.cpp \
|
src/scriptapi/scripting.cpp \
|
||||||
src/ui/aboutporymap.cpp \
|
src/ui/aboutporymap.cpp \
|
||||||
|
src/ui/colorinputwidget.cpp \
|
||||||
|
src/ui/connectionslistitem.cpp \
|
||||||
src/ui/customscriptseditor.cpp \
|
src/ui/customscriptseditor.cpp \
|
||||||
src/ui/customscriptslistitem.cpp \
|
src/ui/customscriptslistitem.cpp \
|
||||||
|
src/ui/divingmappixmapitem.cpp \
|
||||||
src/ui/draggablepixmapitem.cpp \
|
src/ui/draggablepixmapitem.cpp \
|
||||||
src/ui/bordermetatilespixmapitem.cpp \
|
src/ui/bordermetatilespixmapitem.cpp \
|
||||||
src/ui/collisionpixmapitem.cpp \
|
src/ui/collisionpixmapitem.cpp \
|
||||||
src/ui/connectionpixmapitem.cpp \
|
src/ui/connectionpixmapitem.cpp \
|
||||||
src/ui/currentselectedmetatilespixmapitem.cpp \
|
src/ui/currentselectedmetatilespixmapitem.cpp \
|
||||||
|
src/ui/gridsettings.cpp \
|
||||||
|
src/ui/newmapconnectiondialog.cpp \
|
||||||
src/ui/overlay.cpp \
|
src/ui/overlay.cpp \
|
||||||
src/ui/prefab.cpp \
|
src/ui/prefab.cpp \
|
||||||
src/ui/projectsettingseditor.cpp \
|
src/ui/projectsettingseditor.cpp \
|
||||||
|
@ -61,14 +83,16 @@ SOURCES += src/core/block.cpp \
|
||||||
src/ui/cursortilerect.cpp \
|
src/ui/cursortilerect.cpp \
|
||||||
src/ui/customattributestable.cpp \
|
src/ui/customattributestable.cpp \
|
||||||
src/ui/eventframes.cpp \
|
src/ui/eventframes.cpp \
|
||||||
|
src/ui/eventfilters.cpp \
|
||||||
src/ui/filterchildrenproxymodel.cpp \
|
src/ui/filterchildrenproxymodel.cpp \
|
||||||
|
src/ui/maplistmodels.cpp \
|
||||||
|
src/ui/maplisttoolbar.cpp \
|
||||||
src/ui/graphicsview.cpp \
|
src/ui/graphicsview.cpp \
|
||||||
src/ui/imageproviders.cpp \
|
src/ui/imageproviders.cpp \
|
||||||
src/ui/mappixmapitem.cpp \
|
src/ui/layoutpixmapitem.cpp \
|
||||||
src/ui/prefabcreationdialog.cpp \
|
src/ui/prefabcreationdialog.cpp \
|
||||||
src/ui/regionmappixmapitem.cpp \
|
src/ui/regionmappixmapitem.cpp \
|
||||||
src/ui/citymappixmapitem.cpp \
|
src/ui/citymappixmapitem.cpp \
|
||||||
src/ui/mapsceneeventfilter.cpp \
|
|
||||||
src/ui/metatilelayersitem.cpp \
|
src/ui/metatilelayersitem.cpp \
|
||||||
src/ui/metatileselector.cpp \
|
src/ui/metatileselector.cpp \
|
||||||
src/ui/movablerect.cpp \
|
src/ui/movablerect.cpp \
|
||||||
|
@ -106,12 +130,14 @@ SOURCES += src/core/block.cpp \
|
||||||
src/settings.cpp \
|
src/settings.cpp \
|
||||||
src/log.cpp \
|
src/log.cpp \
|
||||||
src/ui/uintspinbox.cpp \
|
src/ui/uintspinbox.cpp \
|
||||||
src/ui/updatepromoter.cpp
|
src/ui/updatepromoter.cpp \
|
||||||
|
src/ui/wildmonchart.cpp
|
||||||
|
|
||||||
HEADERS += include/core/block.h \
|
HEADERS += include/core/block.h \
|
||||||
include/core/bitpacker.h \
|
include/core/bitpacker.h \
|
||||||
include/core/blockdata.h \
|
include/core/blockdata.h \
|
||||||
include/core/events.h \
|
include/core/events.h \
|
||||||
|
include/core/filedialog.h \
|
||||||
include/core/heallocation.h \
|
include/core/heallocation.h \
|
||||||
include/core/history.h \
|
include/core/history.h \
|
||||||
include/core/imageexport.h \
|
include/core/imageexport.h \
|
||||||
|
@ -135,17 +161,20 @@ HEADERS += include/core/block.h \
|
||||||
include/lib/fex/define_statement.h \
|
include/lib/fex/define_statement.h \
|
||||||
include/lib/fex/lexer.h \
|
include/lib/fex/lexer.h \
|
||||||
include/lib/fex/parser.h \
|
include/lib/fex/parser.h \
|
||||||
include/lib/fex/parser_util.h \
|
|
||||||
include/lib/orderedmap.h \
|
include/lib/orderedmap.h \
|
||||||
include/lib/orderedjson.h \
|
include/lib/orderedjson.h \
|
||||||
include/ui/aboutporymap.h \
|
include/ui/aboutporymap.h \
|
||||||
|
include/ui/connectionslistitem.h \
|
||||||
include/ui/customscriptseditor.h \
|
include/ui/customscriptseditor.h \
|
||||||
include/ui/customscriptslistitem.h \
|
include/ui/customscriptslistitem.h \
|
||||||
|
include/ui/divingmappixmapitem.h \
|
||||||
include/ui/draggablepixmapitem.h \
|
include/ui/draggablepixmapitem.h \
|
||||||
include/ui/bordermetatilespixmapitem.h \
|
include/ui/bordermetatilespixmapitem.h \
|
||||||
include/ui/collisionpixmapitem.h \
|
include/ui/collisionpixmapitem.h \
|
||||||
include/ui/connectionpixmapitem.h \
|
include/ui/connectionpixmapitem.h \
|
||||||
include/ui/currentselectedmetatilespixmapitem.h \
|
include/ui/currentselectedmetatilespixmapitem.h \
|
||||||
|
include/ui/gridsettings.h \
|
||||||
|
include/ui/newmapconnectiondialog.h \
|
||||||
include/ui/prefabframe.h \
|
include/ui/prefabframe.h \
|
||||||
include/ui/projectsettingseditor.h \
|
include/ui/projectsettingseditor.h \
|
||||||
include/ui/regionmaplayoutpixmapitem.h \
|
include/ui/regionmaplayoutpixmapitem.h \
|
||||||
|
@ -153,15 +182,18 @@ HEADERS += include/core/block.h \
|
||||||
include/ui/cursortilerect.h \
|
include/ui/cursortilerect.h \
|
||||||
include/ui/customattributestable.h \
|
include/ui/customattributestable.h \
|
||||||
include/ui/eventframes.h \
|
include/ui/eventframes.h \
|
||||||
|
include/ui/eventfilters.h \
|
||||||
include/ui/filterchildrenproxymodel.h \
|
include/ui/filterchildrenproxymodel.h \
|
||||||
|
include/ui/maplistmodels.h \
|
||||||
|
include/ui/maplisttoolbar.h \
|
||||||
include/ui/graphicsview.h \
|
include/ui/graphicsview.h \
|
||||||
include/ui/imageproviders.h \
|
include/ui/imageproviders.h \
|
||||||
include/ui/mappixmapitem.h \
|
include/ui/layoutpixmapitem.h \
|
||||||
include/ui/mapview.h \
|
include/ui/mapview.h \
|
||||||
include/ui/prefabcreationdialog.h \
|
include/ui/prefabcreationdialog.h \
|
||||||
include/ui/regionmappixmapitem.h \
|
include/ui/regionmappixmapitem.h \
|
||||||
include/ui/citymappixmapitem.h \
|
include/ui/citymappixmapitem.h \
|
||||||
include/ui/mapsceneeventfilter.h \
|
include/ui/colorinputwidget.h \
|
||||||
include/ui/metatilelayersitem.h \
|
include/ui/metatilelayersitem.h \
|
||||||
include/ui/metatileselector.h \
|
include/ui/metatileselector.h \
|
||||||
include/ui/movablerect.h \
|
include/ui/movablerect.h \
|
||||||
|
@ -202,9 +234,15 @@ HEADERS += include/core/block.h \
|
||||||
include/settings.h \
|
include/settings.h \
|
||||||
include/log.h \
|
include/log.h \
|
||||||
include/ui/uintspinbox.h \
|
include/ui/uintspinbox.h \
|
||||||
include/ui/updatepromoter.h
|
include/ui/updatepromoter.h \
|
||||||
|
include/ui/wildmonchart.h
|
||||||
|
|
||||||
FORMS += forms/mainwindow.ui \
|
FORMS += forms/mainwindow.ui \
|
||||||
|
forms/colorinputwidget.ui \
|
||||||
|
forms/connectionslistitem.ui \
|
||||||
|
forms/gridsettingsdialog.ui \
|
||||||
|
forms/maplisttoolbar.ui \
|
||||||
|
forms/newmapconnectiondialog.ui \
|
||||||
forms/prefabcreationdialog.ui \
|
forms/prefabcreationdialog.ui \
|
||||||
forms/prefabframe.ui \
|
forms/prefabframe.ui \
|
||||||
forms/tileseteditor.ui \
|
forms/tileseteditor.ui \
|
||||||
|
@ -221,7 +259,8 @@ FORMS += forms/mainwindow.ui \
|
||||||
forms/projectsettingseditor.ui \
|
forms/projectsettingseditor.ui \
|
||||||
forms/customscriptseditor.ui \
|
forms/customscriptseditor.ui \
|
||||||
forms/customscriptslistitem.ui \
|
forms/customscriptslistitem.ui \
|
||||||
forms/updatepromoter.ui
|
forms/updatepromoter.ui \
|
||||||
|
forms/wildmonchart.ui
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
resources/images.qrc \
|
resources/images.qrc \
|
||||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
resources/icons/chart_bar.ico
Executable file
After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 1.8 KiB |
BIN
resources/icons/connections.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 2.1 KiB |
BIN
resources/icons/folder_add.ico
Executable file
After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
resources/icons/folder_eye_closed.ico
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
resources/icons/folder_eye_open.ico
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
resources/icons/help.ico
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/icons/link.ico
Executable file
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/icons/link_broken.ico
Executable file
After Width: | Height: | Size: 2 KiB |
BIN
resources/icons/lock_edit.ico
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
resources/icons/map_go.ico
Executable file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/icons/map_grayed.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |