45 Commits

Author SHA1 Message Date
Nyall Dawson
a5a3bf9ee8 Fix some more causes of warnings when building PyQGIS docs 2024-08-30 12:19:29 +10:00
Nyall Dawson
16e05a207b [feature] Add 'Custom Expression' numeric format
This numeric format allows users to craft a custom QGIS expression
to format numbers. The expression can use the @value variable
to retrieve the value to be formatted, and then use any standard
QGIS expression function to format this as desired.

It can be used anywhere QgsNumericFormat is accepted, eg layout
scalebars, elevation plots, layout tables, and color ramp
legends

Sponsored by the Swiss QGIS User Group
2024-08-29 13:27:23 +10:00
Julien Cabieces
3b7a3c0060 style(ColorWidgets): Rename Raw enum to Scaled0to255 2024-08-22 09:58:55 +02:00
Julien Cabieces
a24779fdeb fix(ColorWidget): Run sipify since new static wrapper 2024-08-21 13:46:45 +02:00
Julien Cabieces
bdb835d164 fix(ColorWidget): Add missing Q_ENUM 2024-08-21 10:06:30 +02:00
Julien Cabieces
5deb18f91c ui(ColorWidget): Display CMYK components as percent 2024-08-21 10:06:30 +02:00
Julien Cabieces
6cd3e14d5a fix(ColorWidget): update sip files since new sipify 2024-08-21 05:20:48 +10:00
Julien Cabieces
35dad9a7fe fix(ColorWidget): fix sip and missing deprecated 2024-08-21 05:20:48 +10:00
Nyall Dawson
1128c909ee Move all gui map tools files into maptools/ subfolder
Previously only a few were in this subfolder, which made it
confusing to find the others...
2024-08-20 16:38:45 +02:00
Nyall Dawson
3f481b568e Record header subfolders as __group__ attribute in PyQGIS classes
This will allow us to logically create subgroups for PyQGIS modules
in the API reference guide
2024-08-17 20:13:12 +10:00
Nyall Dawson
428a1cd405 Add missing files 2024-08-16 07:28:29 +10:00
Nyall Dawson
989e62a80f Handle docstrings for c++ structs
sip doesn't support the docstring directive for structs (only classes),
so patch these back in via sipify magic
2024-08-16 07:28:29 +10:00
Nyall Dawson
02d9cc2af2 Sipify 2024-08-15 06:25:08 +10:00
Nyall Dawson
1f27fc627a [pyqgis] Wrap unambiguously static methods in staticmethod
sip doesn't use the standard Python staticmethod type for defining
static methods, which means that standard means of testing
for a static method (like `isinstance(..., staticmethod)`) fail
with any PyQGIS static methods.

This causes issues with lint tools, which incorrectly flag
calls to QGIS static methods as missing self arguments. It also
breaks detection of static methods in the sphinx PyQGIS docs,
so all static methods are shown as non-static.

Work around this in sipify, by wrapping unambiguously static
methods in staticmethod wrappers.
2024-08-14 22:08:41 +10:00
Nyall Dawson
dc68f03f88 Be tolerant against optional sip modules 2024-08-14 13:05:46 +10:00
Nyall Dawson
ed19d996b2 Collect attribute docstrings for PyQGIS documentation 2024-08-14 13:05:46 +10:00
Nyall Dawson
e7b26478e2 Valid fixes 2024-08-13 20:28:55 +10:00
Nyall Dawson
6d8ba6e2cf Support saving/loading cloud storage connections from XML 2024-07-10 04:07:12 +10:00
Alexander Bruy
f0db0f247b address review 2024-07-04 07:30:51 +10:00
Alexander Bruy
d5605a3321 update QGIS version in the doxygen comments 2024-07-04 07:30:51 +10:00
Alexander Bruy
709253a27a integrate favorite log into toolbox model and view 2024-07-04 07:30:51 +10:00
Julien Cabieces
eaa0261c5d
Merge pull request #57361 from troopa81/cmyk_colorwidget
[ColorWidget] Add CMYK support
2024-05-23 18:03:52 +02:00
Julien Cabieces
4bd56fa0f8 feat(ColorWidget) : Add CMYK support
A new setting activeCmykComponent has been introduced, while the old
one activeComponent refers now only to the Rgb/Hsv part
2024-05-22 19:39:55 +02:00
Nyall Dawson
a34669e784 Add code editor color scheme option for search match highlight color 2024-05-10 06:11:36 +10:00
Nyall Dawson
e59c0df8a8 Port decorated scrollbar widget class from QtCreator
Allows decorating scrollbars with colored highlight bars
2024-05-10 06:10:59 +10:00
Nyall Dawson
a095dc5e4e Hide settings which don't apply for heatmap legends 2024-05-10 06:09:56 +10:00
Nyall Dawson
2357d80d25 Avoid sip property code for old api compatibility
This causes crashes on Qt6. Use Python monkey patching instead.
2024-02-17 05:38:14 +10:00
Nyall Dawson
926d6f90bd Support load/save sensor things connections 2024-02-15 12:39:11 +10:00
Nyall Dawson
0096246afe Sipify 2024-02-13 20:51:03 +10:00
Nyall Dawson
09dc6838a7 Upgrade another enum to get filtering working in processing toolbox 2024-02-10 17:25:22 +10:00
Nyall Dawson
ac2f1179c8 More item data role enum to enum class conversions 2024-02-06 21:04:43 +10:00
Nyall Dawson
f1e3ba9e2d Use correct sip method
And use INDENT-OFF annotations to avoid astyle messing up
formatting of enum with inline macros
2024-01-31 13:48:49 +10:00
Nyall Dawson
23f3af4290 Use enum classes for QgsProperty property keys
Should fix usage on Qt 6 builds
2024-01-31 13:48:49 +10:00
Nyall Dawson
b85db241c7 Sipify 2024-01-30 19:10:43 +10:00
Nyall Dawson
38cff47c9e Fix flags bool operator on qt6 2024-01-30 14:49:54 +10:00
Nyall Dawson
c1a47b2aa9 Sipify 2024-01-29 04:23:44 +10:00
Nyall Dawson
85b7a2c411 [sipify] Patch support for int based enum operations on non-enum class ints
sip6 converts all enums to python Enums, but ONLY creates
Enums with IntFlags types when the c++ type is an enum class : int.
Accordingly we need to patch back in all the operations which treat
enum values as ints, like |, &, bool, etc.

The long term solution here is to move all our c++ enums to enum
class, but that's not always straightforward and can break API
for plugins if it involves the signature of virtual methods.
2024-01-29 04:23:44 +10:00
Nyall Dawson
9f877df4d6 Use proper model for recent CRS in QgsProjectionSelectionTreeWidget
This ensures that we correctly apply filters to recent projections
too, eg so that a widget showing only vertical crs will ONLY show
recent VERTICAL crs, not every recent crs.
2024-01-20 12:11:30 +10:00
Nyall Dawson
3e05a423d5 Refactor QgsProjectionSelectionWidget
Cleanup QgsProjectionSelectionWidget to use proper models to
drive the combo box. This removes a bunch of very fragile
logic regarding showing and hiding entries on demand, as it
allows us to move all the filtering logic to a single place
in a QSortFilterProxyModel subclass.

This has a few side benefits:
- The combos now dynamically respond to changes like recent
CRS being used in other places in QGIS
- The widget correctly respects horizontal/vertical crs filters
for all entries, including recent crs
2024-01-18 09:35:09 +10:00
Nyall Dawson
e53e078bca Add proxy model for recent crs model 2024-01-17 10:16:32 +10:00
Nyall Dawson
7fcfd2b391 Create a basic model for recent coordinate reference systems 2024-01-17 10:16:32 +10:00
Nyall Dawson
fb1d3cc4bb Move all projection related gui files to src/gui/proj 2024-01-17 10:16:32 +10:00
Julien Cabieces
e8093a8ce5 Only mock non class enums 2023-12-13 05:36:44 +10:00
Julien Cabieces
7f586d8742 PyQt6 sip files 2023-12-13 05:36:44 +10:00
Julien Cabieces
bb3c36a69b Initialize sip bindings for PyQt6
use exactly the ones from PyQt5 so we can study the difference when
generating for PyQt6
2023-12-08 03:38:42 +10:00