* Replace foreach
* Replace QRegExp with QRegularExpression
* Replace QApplication::fontMetrics
* Replace QColor::isValidColor
* Replace canConvert(QVariant)
* Replace QString::midRef and QCharRef
* Add TODO for replacing QDesktopWidget for Qt 6
* Add TODO for replacing QTextCodec for Qt 6
* Fix QWidget::enterEvent for Qt 6
* qRegisterMetaTypeStreamOperators done automatically in Qt 6
* Fix QWidget::mapToGlobal for Qt 6
* Migrate QDesktopWidget replacement from old qt6 branch
* Drop Qt 5 support
* Add error handling functions to ConfigHandler
Refurbished functions setValue and value which were previously unused.
These functions now set/get a setting with error handling.
Currently recognizes only errors recognizable by QSettings.
* Make use of value and setValue in ConfigHandler
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add checker for unrecognized general options
Extraneous config options in [General] will be reported as errors.
Added some placeholder functions to be implemented in future commits.
* Introduce keysFromGroup function
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Check shortcut names for duplicates
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix notification spam
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Implement shortcut conflict checking
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix reading of fallbacks on error
If there is a config error, some values would not be loaded correctly.
Using the newly implemented function ConfigHandler::contains instead of
QSettings::contains solves this issue.
These changes reveal u bug that causes a crash on startup.
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix crashes introduced in previous commit
Because ConfigHandler is a dependency of most other classes,
calling functions from those classes inside ConfigHandler caused
infinite recursions in some cases.
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add config file watcher
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add missing config options
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix bug in shortcut conflict detection
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add error resolved notification
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add GUI error message overlay
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add indicator in config window
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Use ConfigHandler::fileChanged in ConfigWindow
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix watcher sometimes not firing
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Improve config file watching performance
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add new way to handle config
This is only a fundamental implementation. Future commits will replace
everything with this new paradigm.
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix getButtons and related functions
Also refactored related code to use QList instead of QVector because
QSettings does not work well with QVector.
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Make good use of the new way
* Implement proper checking for basic types
Everything is covered, apart from KeySequence.
* Move fallback path to ExistingDir value handler
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Use consistent naming scheme in ConfigHandler
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Implement config getters/setters via macro
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Surround text with tr and clang-format
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix colors being saved obfuscated
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add ValueHandler::represenation
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Move ValueHandler to separate files
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* confighandler.cpp: rename macro CUSTOM to OPTION
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix bug with shortcut conflict checker
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Update docs and fix setAllTheButtons
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Handle filenamePattern properly
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix failing build due to wrong function name
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix QSet error due to Qt version mismatch
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Replace QSharedPointer::get with data for older Qt versions
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix failing build on MacOS and ubuntu 18.04
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add column headers to recognizedGeneralOptions map
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix ubuntu 18.04 error
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix false positive when shortcuts empty
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix wrong shortcut group prefix
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Implement proper shortcut checking
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add shortcut map in ConfigHandler
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Move ConfigShortcuts functions to ShortcutsWidget
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix minor bugs
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add fallback scheme: Pictures, HOME, TMP
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add config --check CLI option
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Add config error log to GUI
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Rename ValueHandler::description to expected
* Convert Qt's #AARRGGBB to #RRGGBBAA and vice versa
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Remove obsolete `saveAfterCopyPath`
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix errors in example config
Also added an additional ; in front of actual comments to differentiate
them from commented options.
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Allow special value 'picker' in userColors
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Allow only name, #RRGGBB, and #RRGGBBAA color formats
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Implement changing tool size by keyboard
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Fix very poor performance when changing thickness
* Make thickness get saved to config
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Don't show buttons if selection is inactive
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Move tool creates new selection if not visible
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Make thickness adjustment methods uniform
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Hide cursor while changing thickness
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
* Code refactoring - rename deleteToolwidgetOrClose to deleteToolWidgetOrClose
(cherry picked from commit cc9d71c660fd335e484b8c2c5a4c9ac939a5b643)
* Code refactoring - move part of code from CaptureWidget::paintEvent function into showInitialMessage
(cherry picked from commit 377b716dc4cdc460e385e9a953850c377283db73)
* Code refactoring - move part of code from CaptureWidget::paintEvent function into showInitialMessage
(cherry picked from commit 377b716dc4cdc460e385e9a953850c377283db73)
* Code refactoring - move part of code from CaptureWidget::paintEvent function into drawInactiveRegion, rename showInitialMessage -> drawInitialMessage
(cherry picked from commit 39bf83588db52b9e5b40fddb2b7a9939a64bd19b)
* Re-implement undo/redo feature with a future ability to work with it as with history with access by index (remove/edit not just for a last item)
(cherry picked from commit d6c6cf51c38b8dd8f51f443f3dcb162e96796a66)
* fix - No bubble border for CircleCountTool
(cherry picked from commit 6ef81efd91d9d8d169c1dafd2801fffd2a722ee8)
* fix - Restore Pen and Brush after the rectangle tool (effects Circle tool without it)
(cherry picked from commit 5239925fa5cf69b6755004f3ab8443d091d731c1)
* Tool objects history (undo) list on Utility Panel - added icon to the items
(cherry picked from commit 4181990f2677a9c8b62c844546f4ac708ecac076)
* Update Ukrainian and Russian translations
(cherry picked from commit eae2fe0f5826eda4d44d1616bbd12ff53a9254dd)
* Feature - remove any created object on CaptureWidget
(cherry picked from commit ed2073fa7c2d4e9067668d5a262a067d3ccf9c9a)
* Search tool object on CaptureWidget on mouse click and select it in UtilityPanel
(cherry picked from commit 5a997dd5608d0bf72af1b50bcfa1779336b842ac)
* Optimize tool object search on CaptureWidget
(cherry picked from commit 7cd4872cb4adb29e847c5e3adfdb3a24a240982b)
* Move selection with Ctrl modificator key only, set correct mouse cursor for dragging and selecting tool objects
(cherry picked from commit bf8e47ccbef33bc765820fe64c12168587117ea6)
* Move tool objects based on AbstractTwoPointTool class
(cherry picked from commit 3f041b76d2da9326f099b7109984b75a4ce0df28)
* Move Text tool objects on CaptureWidget
(cherry picked from commit b71b6db9e1a4c64e19a045096bd7df0d5a3f4b8f)
* Move Pencil tool objects on CaptureWidget
(cherry picked from commit 3a269a57bb38bdfea0596f2a8310de6bd5bdb119)
* Code refactoring - clean up unused and some refactoring
(cherry picked from commit af667f1e25c7c363a42952b20580620c0e6d7925)
* Remove - duplicate 'at' class member with int and uint types
(cherry picked from commit 4b5b2f7a75ce568bd23d170b8d8731f630d1bf48)
* Search for an active object BLUR/PIXELATE and activate it on mouse click
(cherry picked from commit 04cbbdd352e41e23edb4ae596173a6d3971ecdb5)
* Increase search radius for text objects
(cherry picked from commit 4f189bc40b71b82d0e1e5d3ff06e6641616abb8c)
* Code refactoring - remove old unused undo/redo backupPixmap
(cherry picked from commit 1b15b9acf514fce854d5e0f467c10a6e14a333a0)
* Add object selection arownd the object on select for tools based on AbstractTwoPointTool
(cherry picked from commit 26fab8ff365ed0d7ff3eee1191d48248e8a05dcd)
* Add object selection arownd the object on select for tools based on AbstractPathTool
(cherry picked from commit bbf53e4c35a58d313d0cd94b24b86c15f5841483)
* Add object selection arownd the object on select for the TextTool
(cherry picked from commit ec5780b5c1ec59fd8924834f67563df36590c0a6)
* Edit color for any selected object
(cherry picked from commit 465a183978f8e8ff0df0e2c5cf77ec3d3115fccc)
* Code refactoring - fix some missprints in MacOS CI
(cherry picked from commit 99ef8a55d4ca812b6217bd15934c276a2ed5aa57)
* Text object selection has wrong size
(cherry picked from commit cd365060f1bc607ee53a77482af50f71d5ffe674)
* Make more noticeable object selection for TwoPoints and Path tools (except arrows)
(cherry picked from commit 67e304474fd116d95ae6138a50c719186b71bf9a)
* Make more noticeable object selection for Arrows
(cherry picked from commit 066ff0a425ebfc2c235ef756057c086cd75a863f)
* Make more noticeable object selection for Text
(cherry picked from commit e5e0afd5853ae2e8169209a0d9a3a6b1ce42f6e1)
* fix - Make more noticeable object selection for Arrow tool
(cherry picked from commit e1028c7c786d7d8b92b2bd7561193ed5be9066c8)
* fix - add '#include <cmath>' for round function
(cherry picked from commit a043036627587d78bbc916a4590e4e0cb9a6173d)
* Add hotkey for removing objects
(cherry picked from commit 13059461d550fbdd7f43d157c3a87fad43989742)
* Add hotkey for removing objects
(cherry picked from commit 13059461d550fbdd7f43d157c3a87fad43989742)
* Code refactoring - remove outdated parts of undo/redo, some optimisation
(cherry picked from commit 8e08cea690dcbadb61efbab4139b4bd43a9dd91a)
* Add operator = for tool objects to be able to implement undo/redo stack based on the concept of full state saving for each step (just objects, not generated images and layers)
(cherry picked from commit 7ffc850883ea97d807514a15d89ac5dd0e45c9f5)
* Implement basic Undo/Redo step based on QUndoStack (without move and change color steps), some other fixes
(cherry picked from commit 818f3d2939fbe5153787612824e40b3b1997297b)
* Add undo/redo stack for changing color
(cherry picked from commit 2b8a4ffc4f5e39d8531611f516a222288f54224b)
* fix - save objects state before color update for undo/redo stack and do not save state until mouse release event
(cherry picked from commit 4ba79d6b96d89a3010f14d0d9759ff98ae407fd1)
* Add object movement to the undo/redo stack
(cherry picked from commit 1eacc35a15487a815a68db6b7ad5daf8bac7adcf)
* fix - undo/redo from first to the latest item (still with a brutal hack)
(cherry picked from commit 421f43ff5361da1d215465e133b52b407829340c)
* Do not close CaptureWidget if some tool object or selection is active
(cherry picked from commit 17fc95e167dd7ac3c17c8ed39c4bbde03301ea9b)
* Don't change color if right click is not in the object selection area
(cherry picked from commit d8ecead647ca0804c5e7555c8ffa3117abc8f3d1)
* Edit thickness for the existing objects
(cherry picked from commit 9ab45497e60b1316bf50d67ca7d29b84cd70f515)
* fix - restore CaptureWidget thickness on object select
(cherry picked from commit 9ff9de5a915eec65bed66a74e3a5ec7f1bee2719)
* Code refactoring - move repeated code to the function 'activeToolObject'
(cherry picked from commit c388d8c8ec2844c2426148a437f6aaad2a1f7923)
* Code refactoring - remove unused lines and many fixes based on Clang-Tidy
(cherry picked from commit 7e19019dbaa185387b90fe9f45c8a65f057cd582)
* Code refactoring - remove unused lines and many fixes based on Clang-Tidy
(cherry picked from commit 7e19019dbaa185387b90fe9f45c8a65f057cd582)
* fix - Circle Counter Bubble numeration can skip some items if CPU is high loaded at that moment
(cherry picked from commit 6242fe8620bd5a46a7291de41ea8ce5465950664)
* Code refactoring - make m_thickness variable in tool objects private and work with it as get/set methods
(cherry picked from commit f36e823864c1af35aa94809515f786a45915e180)
* fix - CircleTool doesn't place on CaptureWidget without mouse move
Code refactoring - make number of variables private for AbstractTwoPointTool and work with them as get/set methods
(cherry picked from commit 874ebc3afd3da77fcb954e83429e88016518cbca)
* CircleCount - make circles more contrast and mouse preview opaque
(cherry picked from commit cebf3b831cf5751cb0b4b9b83f6f63d60b18dc8c)
* fix - CircleCount selection and changing color for existing object
(cherry picked from commit 477c230194b57af9223a3d68c4ac4f5c1bf3566c)
* fix - Move selection area tool cannot be selected
(cherry picked from commit 38662ff86e6a858c02050de1caa37295bb25d574)
* fix - Selection area disappears on click on existing tool out of area
(cherry picked from commit e98c60e226c9883558718f1278879339dc528973)
* Change MacOS hotkey Command+Backspace -> Backspace
(cherry picked from commit aa96b956348a0192179f03a43a0ce5712ce1a965)
* Make rectangle tool with rounded borders (not cut), Make selection tool without rounded edges
(cherry picked from commit 2fd9c2ad9f5d00dcb9204b09989a66309b43f472)
* fix - Thickness doesn't changed for existing object on changing it in side panel
(cherry picked from commit 271731c89185b982a86bb27e3a7bc441a2942c10)
* fix - Sync selection on CaptureWidget when clicking on tool in panel
(cherry picked from commit 9db0c75ec0e92d5fad5bc3856f46f5ed87c6aefd)
* Change selection on mouse down instead of mouse up event
(cherry picked from commit 3e09778b701498498c144c5e5516f746f1c9088a)
* Code refactoring - remove variable m_rightClick from CaptureWidget, use another existing trigger to detect it
(cherry picked from commit 1abc595ce352b8445a943504a7c359cd0830a640)
* fix - Rectangle preview and final objects are not the same
(cherry picked from commit b31905892a60228cae5c8bcde1f71699eca63447)
* fix - Doesn't save image if the 'use fixed path' checkbox is checked
(cherry picked from commit 1470859aa2c4f28f2c45581891534f3fa4bd6f0a)
* fix - Latest Uploads max size value doesn't restore after reset/import settings
(cherry picked from commit fa72bacfc0bb12313dd351ee246dd567dfc3f3c8)
* fix - impossible to disable the keyboard shortcut by clicking Delete button
(cherry picked from commit 74d36e4b3a333cb81ffb4ad93a2bd5465e79cb94)
* fix - MacOS - Increase and Decrease Size tool icon colors are not changed (dark/light) when changing main tool background color
(cherry picked from commit e48b685c900540a9cd353f71290be04491621fc7)
* fix - Selected region control points cannot be dragged on the screen corners
(cherry picked from commit 08bf02b5ee096c14d10c15853543749d58c51ef4)
* fix - Object selects if mouse pointer above any object when TextTool is active
(cherry picked from commit b7a6a7efc8c3a77c55039721ab0cf388973c25d5)
* fix - Test Tool doesn't close editor on next text item, you can see two editors and one of them will be never closed
(cherry picked from commit eb12f76fd7121d1917659485673305684de523c8)
* Code refactoring - remove function in the CaptureToolObjects class with the same functional
(cherry picked from commit 1a108f7be48d5b4d89960ac4a5f4e82c03762cbc)
* Code refactoring - CaptureWidget::mousePressEvent function is split into a few, code became more readable
(cherry picked from commit dc850b3daa00fa173126d86403c35f3c67c448e6)
* optimization - remove unnecessary calls of CaptureWidget::drawToolsData
(cherry picked from commit c2432bd5602657233ee9506e84a7806bafeb6f68)
* fix - Move tool doesn't work if any object is selected
fix - Active tool stays active if existing object is selected in the Tool Settings panel
(cherry picked from commit 6154feba575f79a06082f72b5c45a869c8d08f42)
* fix - App freezes for a while when changing thickness of the pixelate to the minimal value
(cherry picked from commit 3a1c519c8309b831e4cc4f11b9014b1a9599ba93)
* fix - Text Tool doubles on press ESC when text editing field is active
(cherry picked from commit 00bdebff75a0178a46f38606eec4921fdf2f5917)
* fix - Image is pinned/saved with object selection frame if there is one
(cherry picked from commit 81871860720fa0527f8dcabe1b274b3f03818b7c)
* fix - Object line thickness changes according to previously modified object when switching between objects via object list
(cherry picked from commit a4a367d30e18a743f0df849e7db1aa2dc20af2a6)
* fix - Configuration: Filename doesn't set default value on clear
(cherry picked from commit 289663c0c85f4bae98c1a19a7a05fb1029738c12)
* Update README.md - Global shortcut for Ubuntu 20.04
(cherry picked from commit 3bee0aa0ac937c00113f2bcca818a9a57e6c5530)
* fix - Saved screenshot has selection if some object is selected on Save
(cherry picked from commit e53bb33e804cc7de1102a1ab3069bfb849174b73)
* fix - Saved screenshot has selection if some object is selected on Upload
* fix - Rename "Reset" to "Restore" in file settings for restoring saved file name rules in the configuration widget
(cherry picked from commit d2ac5a330fca902b832fce163e4f5f138dbbcc6b)
* Update Ukrainian and Russian translations
* fix - Shapes are displayed as semi-empty at the very beginning of drawing if the line is thick
(cherry picked from commit d8b09c5d5233fefe3181a69f5200198815bc3ec1)
* fix - MacOS - Button "Tool Settings" is not visible on some displays if displays are vertically aligned
(cherry picked from commit 6af590a859b2708177c34c3ff37725905f4c3bec)
* fix - Incorrect selection border for Rectangle/Pixelate tool
(cherry picked from commit c908d3b67c5d8e2188d2699ac11951110493b756)
* Code refactoring - replace magic numbers
(cherry picked from commit c8e1ce345adb1646659e4e90d314916532d5e67a)
* fix merge conflicts for Internationalization files
* fix - thickness shouldn't be less than one
(cherry picked from commit d8ea8a0db7fffcec601dd3139c57198ba15b64b7)
* Update copyright info
Co-authored-by: Yuriy Puchkov <yuriy.puchkov@namecheap.com>
closes: #1374 .
Use SPDX short-form identifiers instead of lengthy copyright
header to document per-file license and copyright.
This commit updates all files under src/ directory where applicable
as well as org.flameshot.Flameshot.metainfo.xml.
More flexible tool API
Minor code format fixes
Clipboard freeze fixed(?)
Arrow correcly growing close to the start point
Improve maintainability
Add undo/redo stack