diff --git a/.github/workflows/MacOS-pack.yml b/.github/workflows/MacOS-pack.yml index 39722878..0ae8e523 100644 --- a/.github/workflows/MacOS-pack.yml +++ b/.github/workflows/MacOS-pack.yml @@ -53,7 +53,7 @@ jobs: - name: Configure run: | mkdir -p "${DIR_BULD}" - cd build + cd "${DIR_BULD}" rm -rf ./src/flameshot.dmg ./src/flameshot.app/ cmake .. -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5 @@ -70,7 +70,7 @@ jobs: - name: Build dmg package run: | cd "${DIR_PKG}" - ${HELPERS_SCRIPTS_PATH}/siqn_qtapp.sh flameshot + ${HELPERS_SCRIPTS_PATH}/sign_qtapp.sh flameshot - name: Upload dmg package shell: bash diff --git a/README.md b/README.md index 42f237be..96b3c30e 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,7 @@ Steps for using the configuration: 6. Now the Flameshot entry should appear in the list. Click _Apply_ to apply the changes. 7. If you want to change the defaults, you can expand the entry, select the appropriate action and modify it as you wish; the process is pretty mush self-explanatory. -#### On Ubuntu (Tested on 18.04) +#### On Ubuntu (Tested on 18.04, 20.04) To use Flameshot instead of the default screenshot application in Ubuntu we need to remove the binding on Prt Sc key, and then create a new binding for `/usr/bin/flameshot gui` ([adaptated](https://askubuntu.com/posts/1039949/revisions) from [Pavel's answer on AskUbuntu](https://askubuntu.com/revisions/1036473/1)). @@ -254,7 +254,8 @@ To use Flameshot instead of the default screenshot application in Ubuntu we need gsettings set org.gnome.settings-daemon.plugins.media-keys screenshot '[]' ``` -2. Go to Settings > Device > Keyboard and press the '+' button at the bottom. +2. Ubuntu 18.04: Go to Settings > Device > Keyboard and press the '+' button at the bottom. + Ubuntu 20.04: Go to Settings > Keyboard and press the '+' button at the bottom. 3. Name the command as you like it, e.g. `flameshot`. And in the command insert `/usr/bin/flameshot gui`. diff --git a/data/img/material/black/minus.svg b/data/img/material/black/minus.svg index 65418b43..93634796 100644 --- a/data/img/material/black/minus.svg +++ b/data/img/material/black/minus.svg @@ -52,6 +52,6 @@ style="stroke-width:1.65234;fill:#000000" sodipodi:nodetypes="ccccc" id="path2" - fill="#ffffff" + fill="#000000" d="m 21.914037,10.34766 v 3.30468 c -7.15882,0 -15.2248669,0 -19.8280741,0 v -3.30468 c 6.609358,0 13.2187161,0 19.8280741,0 z" /> diff --git a/data/img/material/black/plus.svg b/data/img/material/black/plus.svg index 98a97af7..0c31d278 100644 --- a/data/img/material/black/plus.svg +++ b/data/img/material/black/plus.svg @@ -50,7 +50,7 @@ inkscape:current-layer="svg4" /> diff --git a/data/translations/Internationalization_ca.ts b/data/translations/Internationalization_ca.ts index d24ee510..34643565 100644 --- a/data/translations/Internationalization_ca.ts +++ b/data/translations/Internationalization_ca.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher Llançador d'aplicacions - + Choose an app to open the capture Trieu una aplicació per obrir la captura @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With Obrir Amb - + Launch in terminal Llança a la terminal - + Keep open after selection Mantén obert després d'una selecció - - + + Error Error - + Unable to launch in terminal. No s'ha pogut iniciar a la terminal. - + Unable to write in No es pot escriure a @@ -51,12 +51,12 @@ ArrowTool - + Arrow Fletxa - + Set the Arrow as the paint tool Estableix la fletxa com a eina de dibuix @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>Mode de captura</b> - + Rectangular Region Regió rectangular - + Full Screen (Current Display) Pantalla completa (monitor actual) - + Full Screen (All Monitors) Pantalla completa (tots els monitors) - + No Delay Sense demora - + second segon - + seconds segons - + Take new screenshot Fes una nova captura de pantalla - + Area: Àrea: - + Delay: Demora: @@ -128,13 +128,13 @@ CaptureWidget - + Unable to capture screen Impossible capturar la pantalla Impossible capturar la pantalla - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -147,7 +147,7 @@ Gireu la rodeta del ratolí per canviar el gruix de l'eina de dibuix. Premeu Espai per obrir el calaix lateral. - + Tool Settings Ajustaments de l'eina @@ -155,12 +155,12 @@ Premeu Espai per obrir el calaix lateral. CircleCountTool - + Circle Counter Comptador circular - + Add an autoincrementing counter bubble Afegeix-hi un comptador automàtic @@ -168,12 +168,12 @@ Premeu Espai per obrir el calaix lateral. CircleTool - + Circle Cercle - + Set the Circle as the paint tool Estableix el cercle com a eina de dibuix @@ -181,27 +181,27 @@ Premeu Espai per obrir el calaix lateral. ConfigWindow - + Configuration Ajustaments - + Interface Interfície - + Filename Editor Editor de noms de fitxer - + General General - + Shortcuts Dreceres @@ -209,52 +209,52 @@ Premeu Espai per obrir el calaix lateral. Controller - + New version %1 is available La nova versió %1 ja és disponible - + You have the latest version Teniu la versió més recent - + Failed to get information about the latest version. Error a l'intentar obtenir informació sobre actualitzacions. - + Error Error - + Unable to close active modal widgets No s'han pogut tancar els widgets modals actius - + &Open Launcher &Obre el llançador d'aplicacions - + &Configuration &Ajustaments - + &About &Quant a - + Check for updates Comprova si hi ha actualitzacions disponibles - + &Latest Uploads &Últimes càrregues @@ -263,12 +263,12 @@ Premeu Espai per obrir el calaix lateral. &Informació - + &Quit &Surt - + &Take Screenshot &Captura @@ -276,12 +276,12 @@ Premeu Espai per obrir el calaix lateral. CopyTool - + Copy Copia - + Copy the selection into the clipboard Copia la selecció al porta-retalls @@ -289,7 +289,7 @@ Premeu Espai per obrir el calaix lateral. DBusUtils - + Unable to connect via DBus No s'ha pogut connectar mitjançant DBus @@ -297,12 +297,12 @@ Premeu Espai per obrir el calaix lateral. ExitTool - + Exit Surt - + Leave the capture screen Surt de la pantalla de captura @@ -310,47 +310,51 @@ Premeu Espai per obrir el calaix lateral. FileNameEditor - + Edit the name of your captures: Editeu el nom de les vostres captures: - + Edit: Edita: - + Preview: Previsualització: - + Save Desa - + Saves the pattern Desa el patró - - Reset - Reinicialitza + + Restore + - + Reset + Reinicialitza + + + Restores the saved pattern Restaura el patró desat - + Clear Neteja - + Deletes the name Elimina el nom @@ -425,178 +429,183 @@ Premeu Espai per obrir el calaix lateral. GeneralConf - - + + Import Importa - - - - + + + + Error Error - + Unable to read file. No s'ha pogut llegir el fitxer. - - + + Unable to write file. No s'ha pogut escriure al fitxer. - + Save File Desa l'arxiu - + Confirm Reset Confirma la reinicialització - + Are you sure you want to reset the configuration? Esteu segur de voler reinicialitzar els ajustaments? - + Show help message Mostra el missatge d'ajuda - + Show the help message at the beginning in the capture mode. Mostra el missatge d'ajuda en iniciar el mode de captura. - + Show the side panel button Mostra el botó del calaix lateral - + Show the side panel toggle button in the capture mode. Mostra el botó del calaix lateral en el mode de captura. - - + + Show desktop notifications Mostra les notificacions d'escriptori - + Show tray icon Mostra la icona a la barra de tasques - + Show the systemtray icon Mostra la icona a la barra de tasques del sistema - - + + Confirmation required to delete screenshot from the latest uploads Es requereix confirmació per esborrar la captura de pantalla de les darreres càrregues - + Configuration File Fitxer d'Ajustaments - + Export Exporta - + Reset Reinicialitza - - + + Automatic check for updates Comprova les actualitzacions de forma automàtica - + Launch at startup Llança a l'inici - - + + Launch Flameshot Inicia el Flameshot - + Show welcome message on launch Mostra el missatge de benvinguda a l'inici - + Copy URL after upload Copia l'URL després de la càrrega - + Copy URL and close window after upload Copia la URL i tanca la finestra després de la càrrega - + Save image after copy Desa la imatge després d'haver-la copiat - + Save image file after copying it Desa el fitxer d'imatge després d'haver-lo copiat - + Save Path Desa el camí - + Change... Canvia... - + Use fixed path for screenshots to save Fes servir un camí fixat per desar-hi les captures de pantalla - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) Fes servir el format JPG per les imatges del porta-retalls (per defecte és PNG) - - + + Copy file path after save Copia el camí a l'arxiu després d'haver-lo desat - + Choose a Folder Escull una carpeta - + Unable to write to directory. No s'ha pogut escriure al directori. @@ -609,32 +618,32 @@ Premeu Espai per obrir el calaix lateral. Últimes càrregues - + Screenshots history is empty L'historial de captures de pantalla és buit - + Copy URL Copia l'URL - + URL copied to clipboard. L'URL s'ha copiat al porta-retalls. - + Open in browser Obre al navegador - + Confirm to delete Confirmeu per esborrar - + Are you sure you want to delete a screenshot from the latest uploads and server? Esteu segur de voler esborrar la captura de les últimes càrregues i del servidor? @@ -660,6 +669,10 @@ Premeu Espai per obrir el calaix lateral. Uploading Image S'està pujant la imatge + + Delete image + Esborra la imatge + Unable to open the URL. No es pot obrir l'URL. @@ -688,48 +701,48 @@ Premeu Espai per obrir el calaix lateral. ImgurUploader - + Upload to Imgur Puja a Imgur - + Uploading Image S'està pujant la imatge - + Copy URL Copia l'URL - + Open URL Obre l'URL - + Delete image Esborra la imatge - + Image to Clipboard. Imatge al porta-retalls. + - Unable to open the URL. No s'ha pogut obrir l'URL. - + URL copied to clipboard. L'URL s'ha copiat al porta-retalls. - + Screenshot copied to clipboard. La captura s'ha copiat al porta-retalls. @@ -737,12 +750,12 @@ Premeu Espai per obrir el calaix lateral. ImgurUploaderTool - + Image Uploader Puja la imatge - + Upload the selection to Imgur Puja la selecció a Imgur @@ -750,7 +763,7 @@ Premeu Espai per obrir el calaix lateral. InfoWindow - + About Quant a @@ -803,12 +816,12 @@ Premeu Espai per obrir el calaix lateral. Descripció - + <u><b>License</b></u> <u><b>Llicència</b></u> - + <u><b>Version</b></u> <u><b>Versió</b></u> @@ -824,12 +837,12 @@ Premeu Espai per obrir el calaix lateral. LineTool - + Line Línia - + Set the Line as the paint tool Estableix la línia com a eina de dibuix @@ -837,12 +850,12 @@ Premeu Espai per obrir el calaix lateral. MarkerTool - + Marker Marcador - + Set the Marker as the paint tool Estableix el marcador com a eina de dibuix @@ -850,12 +863,12 @@ Premeu Espai per obrir el calaix lateral. MoveTool - + Move Mou - + Move the selection area Mou la selecció @@ -863,12 +876,12 @@ Premeu Espai per obrir el calaix lateral. PencilTool - + Pencil Llapis - + Set the Pencil as the paint tool Estableix el llapis com a eina de dibuix @@ -876,12 +889,12 @@ Premeu Espai per obrir el calaix lateral. PinTool - + Pin Tool Ancora l'eina - + Pin image on the desktop Ancora l'imatge a l'escriptori @@ -889,12 +902,12 @@ Premeu Espai per obrir el calaix lateral. PixelateTool - + Pixelate Pixel·la - + Set Pixelate as the paint tool Estableix l'eina de pixel·lament com a eina de dibuix @@ -902,171 +915,179 @@ Premeu Espai per obrir el calaix lateral. QHotkey - Failed to register %1. Error: %2 - No s'ha pogut registrar %1. Error: %2 + No s'ha pogut registrar %1. Error: %2 - Failed to unregister %1. Error: %2 - No s'ha pogut desregistrar %1. Error: %2 + No s'ha pogut desregistrar %1. Error: %2 QObject - + Capture saved to clipboard. Captura copiada al porta-retalls. - + Error while saving to clipboard S'ha produït un error mentre es copiava al porta-retalls - + Save screenshot Desa la captura - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as La captura serà desada i copiada al porta-retalls com a - + Save Error S'ha produït un error en guardar - - + + Capture saved as Anomena i guarda la captura - - + + Error trying to save as S'ha produït un error en anomenar i guardar - - - - - + + + + + Unable to connect via DBus No es pot connectar mitjançant DBus - + Powerful yet simple to use screenshot software. Un programa de captures complert i versàtil. - + See Vegeu - + Capture the entire desktop. Captureu l'escriptori sencer. - + Open the capture launcher. Obriu el llançador de captures. - + Start a manual capture in GUI mode. Comença una captura manual en mode d'interfície. - + Configure Ajustaments del - + Capture a single screen. Captura una sola pantalla. - + Path where the capture will be saved Camí on es desarà la captura - + Save the capture to the clipboard Desa la captura al porta-retalls - + Delay time in milliseconds Temps de demora en mil·lisegons - + Set the filename pattern Estableix el patró de camins - + Enable or disable the trayicon - + Enable or disable run at startup - + Show the help message in the capture mode - + Define the main UI color - + Define the contrast UI color - + Print raw PNG capture - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified - + Define the screen to capture - + default: screen containing the cursor - + Screen number - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1077,78 +1098,78 @@ You may need to escape the '#' sign as in '\#FFF' - + Invalid delay, it must be higher than 0 - + Invalid screen number, it must be non negative - + Invalid path, it must be a real path in the system - + Invalid value, it must be defined as 'true' or 'false' - + Error Error - + Unable to write in No es pot escriure a - - + + Capture saved to clipboard - + URL copied to clipboard. L'URL s'ha copiat al porta-retalls. - + Options - + Arguments - + arguments - + Usage - + options - + Per default runs Flameshot in the background and adds a tray icon for configuration. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1208,29 +1229,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Ix de la captura - - + + Screenshot history - - + + Capture screen - + Show color picker Mostra el selector de color - + Change the tool's thickness Canvia el gruix de l'eina @@ -1238,12 +1265,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Rectangle - + Set the Rectangle as the paint tool Estableix el rectangle com a eina de dibuix @@ -1251,12 +1278,12 @@ You may need to escape the '#' sign as in '\#FFF' RedoTool - + Redo - + Redo the next modification @@ -1264,12 +1291,12 @@ You may need to escape the '#' sign as in '\#FFF' SaveTool - + Save Guarda - + Save the capture Guarda la captura @@ -1277,7 +1304,7 @@ You may need to escape the '#' sign as in '\#FFF' ScreenGrabber - + Unable to capture screen Imposible capturar la pantalla @@ -1285,12 +1312,12 @@ You may need to escape the '#' sign as in '\#FFF' SelectionTool - + Rectangular Selection Selecció rectangular - + Set Selection as the paint tool Estableix la selecció com a eina de dibuix @@ -1298,17 +1325,22 @@ You may need to escape the '#' sign as in '\#FFF' SetShortcutDialog - + Set Shortcut - + Enter new shortcut to change - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1316,22 +1348,22 @@ You may need to escape the '#' sign as in '\#FFF' ShortcutsWidget - + Hot Keys - + Available shortcuts in the screen capture mode. Dreceres disponibles en el mode de captura de pantalla. - + Description Descripció - + Key Tecla @@ -1339,35 +1371,61 @@ You may need to escape the '#' sign as in '\#FFF' SidePanelWidget - + Active thickness: - + Active color: - + Press ESC to cancel - + Grab Color + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator Indicador de mida de selecció - + Show the dimensions of the selection (X Y) Mostra les mides de la selecció (X Y) @@ -1375,107 +1433,107 @@ You may need to escape the '#' sign as in '\#FFF' StrftimeChooserWidget - + Century (00-99) Segle (00-99) - + Year (00-99) Any (00-99) - + Year (2000) Any (2000) - + Month Name (jan) Nom del mes (jul) - + Month Name (january) Nom del mes (juliol) - + Month (01-12) Mes (01-12) - + Week Day (1-7) Dia de la setmana (1-7) - + Week (01-53) Setmana (01-53) - + Day Name (mon) Nom del dia (dg) - + Day Name (monday) Nom del dia (diumenge) - + Day (01-31) Dia (01-31) - + Day of Month (1-31) Dia del mes (1-31) - + Day (001-366) Dia (001-366) - + Hour (00-23) Hora (00-23) - + Hour (01-12) Hora (01-12) - + Minute (00-59) Minut (00-59) - + Second (00-59) Segon (00-59) - + Full Date (%m/%d/%y) Data (%m/%d/%y) - + Full Date (%Y-%m-%d) Data (%Y-%m-%d) - + Time (%H-%M-%S) - + Time (%H-%M) @@ -1491,22 +1549,22 @@ You may need to escape the '#' sign as in '\#FFF' TextConfig - + StrikeOut - + Underline - + Bold - + Italic @@ -1514,12 +1572,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text - + Add text to your capture @@ -1527,37 +1585,37 @@ You may need to escape the '#' sign as in '\#FFF' UIcolorEditor - + UI Color Editor Editor de color de la interfície - + Change the color moving the selectors and see the changes in the preview buttons. Canvieu el color movent els selectors i observeu els canvis en els botons de previsualització. - + Select a Button to modify it Seleccioneu un botó per a modificar-lo - + Main Color Color principal - + Click on this button to set the edition mode of the main color. Feu clic en aquest botó per a aplicar el mode d'edició per al color principal. - + Contrast Color Color de contrast - + Click on this button to set the edition mode of the contrast color. Feu clic en aquest botó per a aplicar el mode d'edició per al color de contrast. @@ -1565,12 +1623,12 @@ You may need to escape the '#' sign as in '\#FFF' UndoTool - + Undo Desfés - + Undo the last modification Desfés l'última modificació @@ -1601,25 +1659,30 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: Opacitat de la zona fora de la selecció: - + Button Selection Selecció de botó - + Select All Selecciona-ho tot diff --git a/data/translations/Internationalization_cs.ts b/data/translations/Internationalization_cs.ts index c81d56ca..b3b90058 100644 --- a/data/translations/Internationalization_cs.ts +++ b/data/translations/Internationalization_cs.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Šipka - + Set the Arrow as the paint tool Nastavit šipku jako malovací nástroj @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Nelze zachytit obrazovku - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Použijte kolečko myši pro změnu tloušťky nástroje. Stiskněte mezerník pro otevření postranního panelu. - + Tool Settings Nastavení nástrojů @@ -154,12 +154,12 @@ Stiskněte mezerník pro otevření postranního panelu. CircleCountTool - + Circle Counter Kruhové počítadlo - + Add an autoincrementing counter bubble Přidá bublinu s číslem (vždy zvýšeným o jednotku) @@ -208,57 +208,57 @@ Stiskněte mezerník pro otevření postranního panelu. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Chyba - + Unable to close active modal widgets - + &Take Screenshot &Zachytit obrazovku - + &Open Launcher &Otevřít spouštěč - + &Configuration &Nastavení - + &About O &programu - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Stiskněte mezerník pro otevření postranního panelu. &Informace - + &Quit &Ukončit @@ -335,8 +335,12 @@ Stiskněte mezerník pro otevření postranního panelu. + Restore + + + Reset - Nastavit znovu + Nastavit znovu @@ -349,7 +353,7 @@ Stiskněte mezerník pro otevření postranního panelu. Vyprázdnit - + Deletes the name Smaže název @@ -476,183 +480,183 @@ Stiskněte mezerník pro otevření postranního panelu. GeneralConf - - + + Import Zavést - - - - + + + + Error Chyba - + Unable to read file. Nelze přečíst soubor. - - + + Unable to write file. Nelze zapsat soubor. - + Save File Uložit soubor - + Confirm Reset Potvrdit vrácení na výchozí - + Are you sure you want to reset the configuration? Opravdu chcete nastavení vrátit do výchozího stavu? - + Show help message Ukázat zprávu s nápovědou - + Show the help message at the beginning in the capture mode. Ukázat zprávu s nápovědou na začátku v režimu zachytávání. - + Show the side panel button Ukázat tlačítko na postranním panelu - + Show the side panel toggle button in the capture mode. V režimu zachytávání ukazovat tlačítko na postranním panelu. - - + + Show desktop notifications Ukázat oznámení - + Show tray icon Ukázat ikonu v oznamovací oblasti panelu - + Show the systemtray icon Ukázat ikonu v oznamovací oblasti panelu - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Soubor s nastavením - + Export Vyvést - + Reset Nastavit znovu - - + + Automatic check for updates - + Launch at startup Spustit při spuštění - - + + Launch Flameshot Spustit Flameshot - + Show welcome message on launch - + Copy URL after upload Kopírovat adresu (URL) po nahrání - + Copy URL and close window after upload Po nahrání zkopírovat URL a zavřít okno - + Save image after copy Uložit obrázek po kopírování - + Save image file after copying it Uložit obrázek se souborem po jeho zkopírování - + Save Path Cesta pro ukládání - + Change... Změnit... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder Vyberte složku - + Unable to write to directory. Nelze zapsat do adresáře. @@ -892,12 +896,12 @@ Stiskněte mezerník pro otevření postranního panelu. LineTool - + Line Čára - + Set the Line as the paint tool Nastavit čáru jako malovací nástroj @@ -931,12 +935,12 @@ Stiskněte mezerník pro otevření postranního panelu. PencilTool - + Pencil Tužka - + Set the Pencil as the paint tool Nastavit tužku jako malovací nástroj @@ -967,29 +971,16 @@ Stiskněte mezerník pro otevření postranního panelu. Nastaviť rozčtverečkování jako nástroj pro úpravy - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Chyba při ukládání - + Capture saved as Zachycená obrazovka uložena jako @@ -1011,17 +1002,27 @@ Stiskněte mezerník pro otevření postranního panelu. - + Error trying to save as Chyba při ukládání jako - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1226,7 +1227,7 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, Adresa (URL) zkopírována do schránky. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1286,29 +1287,35 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, - + + + Delete current tool + + + + Quit capture Ukončit zachytávání obrazovky - - + + Screenshot history - - + + Capture screen - + Show color picker Ukázat volič barev - + Change the tool's thickness Změnit tloušťku nástroje @@ -1316,12 +1323,12 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, RectangleTool - + Rectangle Obdélník - + Set the Rectangle as the paint tool Nastavit obdélník jako malovací nástroj @@ -1387,6 +1394,11 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1618,12 +1630,12 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, TextTool - + Text Text - + Add text to your capture Přidat text do zachyceného @@ -1705,10 +1717,15 @@ Možná budete muset napsat před '#' opačné (obrácené) lomítko, UtilityPanel - + Close Zavřít + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_de_DE.ts b/data/translations/Internationalization_de_DE.ts index 24d81220..c6a1a68e 100644 --- a/data/translations/Internationalization_de_DE.ts +++ b/data/translations/Internationalization_de_DE.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Pfeil - + Set the Arrow as the paint tool Wähle den Pfeil als Werkzeug @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Bereich kann nicht erfasst werden - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Benutze das Mausrad um die Dicke des Werkzeugs auszuwählen. Drücke die Leertaste um das Seitenmenü zu öffnen. - + Tool Settings Wekzeugeinstellungen @@ -154,13 +154,13 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. CircleCountTool - + Circle Counter I know it's not ideal, but don't have a better idea how to say it :/ Kreiszähler - + Add an autoincrementing counter bubble Eine automatisch hochzählende Zählerblase hinzufügen @@ -209,57 +209,57 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. Controller - + New version %1 is available Neue version %1 ist verfügbar - + You have the latest version Die neueste Version ist installiert - + Failed to get information about the latest version. Das Laden der Versionsinformationen ist fehlgeschlagen. - + Error Fehler - + Unable to close active modal widgets Kann aktive Widgets nicht schließen - + &Take Screenshot &Bildschirmaufnahme anfertigen - + &Open Launcher Applauncher &Oeffnen - + &Configuration &Einstellungen - + &About Über Fl&ameshot - + Check for updates Auf Updates überprüfen - + &Latest Uploads zu&letzt Hochgeladenes @@ -268,7 +268,7 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. &Informationen - + &Quit &Beenden @@ -336,8 +336,12 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. + Restore + + + Reset - Zurücksetzen + Zurücksetzen @@ -350,7 +354,7 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. Löschen - + Deletes the name Löscht den Namen @@ -429,183 +433,183 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. GeneralConf - - + + Import Importieren - - - - + + + + Error Fehler - + Unable to read file. Datei konnte nicht gelesen werden. - - + + Unable to write file. Datei kann nicht geschrieben werden. - + Save File Datei speichern - + Confirm Reset Zurücksetzen bestätigen - + Are you sure you want to reset the configuration? Sind Sie sicher, dass Sie die Konfiguration zurücksetzen wollen? - + Show help message Hilfetext anzeigen - + Show the help message at the beginning in the capture mode. Hilfetext zu Beginn der Aufnahme anzeigen. - + Show the side panel button Den Seitenpanelknopf anzeigen - + Show the side panel toggle button in the capture mode. Den Knopf zum Umschalten des Seitenpanels im Aufnahmemodus anzeigen. - - + + Show desktop notifications Zeige Desktopbenachrichtigungen - + Show tray icon Taskleistensymbol zeigen - + Show the systemtray icon Zeigt das Taskleistensymbol - - + + Confirmation required to delete screenshot from the latest uploads Bestätigung nötig zum Entfernen von Screenshots aus den letzten Uploads - + Configuration File Konfigurationsdatei - + Export Exportieren - + Reset Zurücksetzen - - + + Automatic check for updates Automatisch auf Updates prüfen - + Launch at startup Automatisch starten - - + + Launch Flameshot Starte Flameshot - + Show welcome message on launch Zeige Willkommensnachricht beim Start - + Copy URL after upload URL nach Upload in Zwischenablage kopieren - + Copy URL and close window after upload URL nach Upload in Zwischenablage kopieren und Fenster schließen - + Save image after copy Bild nach dem Kopieren speichern - + Save image file after copying it Bild nach dem Kopieren in Datei abspeichern - + Save Path Speicherpfad - + Change... Anpassen... - + Use fixed path for screenshots to save Festen Pfad für das Speichern von Aufnahmen verwenden - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) Benutze JPG-Format für die Zwischenablage (Standardmäßig PNG) - - + + Copy file path after save Dateipfad nach dem Speichern kopieren - + Choose a Folder Wähle ein Verzeichnis - + Unable to write to directory. Kann nicht in Verzeichnis schreiben. @@ -845,12 +849,12 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. LineTool - + Line Linie - + Set the Line as the paint tool Wähle Linie als Werkzeug @@ -884,12 +888,12 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. PencilTool - + Pencil Stift - + Set the Pencil as the paint tool Wähle den Stift als Werkzeug @@ -920,29 +924,16 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. Verpixeln als Werkzeug wählen - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Speicherfehler - + Capture saved as Aufnahme gespeichert als @@ -964,17 +955,27 @@ Drücke die Leertaste um das Seitenmenü zu öffnen. - + Error trying to save as Fehler beim Speichern unter - + Save screenshot Aufnahme speichern - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as Aufnahme in Zwischenablage kopiert und gespeichert unter @@ -1175,7 +1176,7 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werdenURL in Zwischenablage kopiert. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Hallo, hier bin ich! Auf das Symbol in der Taskleiste linksklicken, um eine Aufnahme zu starten, oder rechtsklicken für mehr Optionen. @@ -1235,29 +1236,35 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werdenText in Textbereich übernehmen - + + + Delete current tool + + + + Quit capture Aufnahme verlassen - - + + Screenshot history Letzte Bildschirmaufnahmen - - + + Capture screen Bildschrim aufnehmen - + Show color picker Zeige Farbauswahl - + Change the tool's thickness Ändere die Dicke des Werkzeugs @@ -1265,12 +1272,12 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werden RectangleTool - + Rectangle Rechteck - + Set the Rectangle as the paint tool Wähle ausgefülltes Rechteck als Werkzeug @@ -1336,6 +1343,11 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werden + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Zum Deaktivieren des Tastenkürzels ESC oder die Backspacetaste drücken. @@ -1567,12 +1579,12 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werden TextTool - + Text Text - + Add text to your capture Füge Text zur Auswahl hinzu @@ -1654,10 +1666,15 @@ Eventuell muss das '#' Zeichen als '\#FFF' maskiert werden UtilityPanel - + Close Schließen + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_el.ts b/data/translations/Internationalization_el.ts index 79b16508..1eff0423 100644 --- a/data/translations/Internationalization_el.ts +++ b/data/translations/Internationalization_el.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher Εκκινητής Εφαρμογής - + Choose an app to open the capture Επιλέξτε μια εφαρμογή για να ανοίξετε την λήψη @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With Άνοιγμα Με - + Launch in terminal Άνοιγμα στο τερματικό - + Keep open after selection Να παραμείνει ανοικτό μετά την επιλογή - - + + Error Σφάλμα - + Unable to launch in terminal. Δεν μπόρεσε αν ανοίξει στο τερματικό. - + Unable to write in Δεν κατάφερε να γράψει στο @@ -51,12 +51,12 @@ ArrowTool - + Arrow Βέλος - + Set the Arrow as the paint tool Ορίζει το Βέλος ως το εργαλείο σχεδιασμού @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>Τρόπος Λήψης</b> - + Rectangular Region Ορθογώνια Περιοχή - + Full Screen (Current Display) Πλήρη Οθόνη (Τρέχουσα Οθόνη) - + Full Screen (All Monitors) Πλήρη Οθόνη (Όλες οι οθόνες) - + No Delay Χωρίς Καθυστέρηση - + second δευτερόλεπτο - + seconds δευτερόλεπτα - + Take new screenshot Δημιουργία νέου στιγμιότυπου - + Area: Περιοχή: - + Delay: Καθυστέρηση: @@ -128,13 +128,13 @@ CaptureWidget - + Unable to capture screen Impossible capturar la pantalla Δεν κατάφερε να κάνει λήψη από την οθόνη - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -147,7 +147,7 @@ Press Space to open the side panel. Πατήστε καινό για να ανοίξετε τον πλευρικό πίνακα. - + Tool Settings Ρυθμίσεις Εργαλείου @@ -155,12 +155,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter Μετρητής Φυσαλίδων - + Add an autoincrementing counter bubble Προσθέτει ένα αυτόματα αυξανόμενο μετρητή φυσαλίδων @@ -168,12 +168,12 @@ Press Space to open the side panel. CircleTool - + Circle - + Set the Circle as the paint tool @@ -181,27 +181,27 @@ Press Space to open the side panel. ConfigWindow - + Configuration - + Interface - + Filename Editor - + General - + Shortcuts @@ -209,52 +209,52 @@ Press Space to open the side panel. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error - + Unable to close active modal widgets - + &Open Launcher - + &Configuration - + &About - + Check for updates - + &Latest Uploads @@ -263,12 +263,12 @@ Press Space to open the side panel. &Informació - + &Quit - + &Take Screenshot @@ -276,12 +276,12 @@ Press Space to open the side panel. CopyTool - + Copy - + Copy the selection into the clipboard @@ -289,7 +289,7 @@ Press Space to open the side panel. DBusUtils - + Unable to connect via DBus @@ -297,12 +297,12 @@ Press Space to open the side panel. ExitTool - + Exit - + Leave the capture screen @@ -310,47 +310,47 @@ Press Space to open the side panel. FileNameEditor - + Edit the name of your captures: - + Edit: - + Preview: - + Save - + Saves the pattern - - Reset + + Restore - + Restores the saved pattern - + Clear - + Deletes the name @@ -425,178 +425,183 @@ Press Space to open the side panel. GeneralConf - - + + Import - + Importar - - - - + + + + Error - + Unable to read file. - + Impossible llegir el fitxer. - - + + Unable to write file. - + Impossible escriure al fitxer. - + Save File - + Guardar Arxiu - + Confirm Reset - + Confirmar Reset - + Are you sure you want to reset the configuration? - + Esteu segur que voleu reiniciar la configuració? - + Show help message - + Mostra el missatge d'ajuda - + Show the help message at the beginning in the capture mode. - + Mostra el missatge d'ajuda en iniciar el mode de captura. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications - + Mostra les notificacions d'escriptori - + Show tray icon - + Mostra la icona en la barra de tasques - + Show the systemtray icon - + Mostra la icona en la barra de tasques - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File - + Fitxer de Configuració - + Export - + Exportar - - Reset - - - - + Reset + Reset + + + + Automatic check for updates - + Launch at startup - + Llançament a l'inici - - + + Launch Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -609,32 +614,32 @@ Press Space to open the side panel. - + Screenshots history is empty - + Copy URL - + Copia l'URL - + URL copied to clipboard. - + L'URL s'ha copiat al porta-retalls. - + Open in browser - + Confirm to delete - + Are you sure you want to delete a screenshot from the latest uploads and server? @@ -688,61 +693,61 @@ Press Space to open the side panel. ImgurUploader - + Upload to Imgur - + Uploading Image - + S'està pujant la imatge - + Copy URL - + Copia l'URL - + Open URL - + Obri l'URL - + Delete image - + Image to Clipboard. - + Imatge al porta-retalls. + - Unable to open the URL. - + No es pot obrir l'URL. + + + + URL copied to clipboard. + L'URL s'ha copiat al porta-retalls. - URL copied to clipboard. - - - - Screenshot copied to clipboard. - + La captura s'ha copiat al porta-retalls. ImgurUploaderTool - + Image Uploader - + Upload the selection to Imgur @@ -750,7 +755,7 @@ Press Space to open the side panel. InfoWindow - + About @@ -803,12 +808,12 @@ Press Space to open the side panel. Descripció - + <u><b>License</b></u> - + <u><b>Version</b></u> @@ -824,12 +829,12 @@ Press Space to open the side panel. LineTool - + Line - + Set the Line as the paint tool @@ -837,12 +842,12 @@ Press Space to open the side panel. MarkerTool - + Marker - + Set the Marker as the paint tool @@ -850,12 +855,12 @@ Press Space to open the side panel. MoveTool - + Move - + Move the selection area @@ -863,12 +868,12 @@ Press Space to open the side panel. PencilTool - + Pencil - + Set the Pencil as the paint tool @@ -876,12 +881,12 @@ Press Space to open the side panel. PinTool - + Pin Tool - + Pin image on the desktop @@ -889,184 +894,181 @@ Press Space to open the side panel. PixelateTool - + Pixelate - + Set Pixelate as the paint tool - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Capture saved to clipboard. - + Error while saving to clipboard - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as - + Save Error - - + + Capture saved as - - + + Error trying to save as - - - - - + + + + + Unable to connect via DBus - + Powerful yet simple to use screenshot software. - + See - + Capture the entire desktop. - + Open the capture launcher. - + Start a manual capture in GUI mode. - + Configure - + Capture a single screen. - + Path where the capture will be saved - + Save the capture to the clipboard - + Delay time in milliseconds - + Set the filename pattern - + Enable or disable the trayicon - + Enable or disable run at startup - + Show the help message in the capture mode - + Define the main UI color - + Define the contrast UI color - + Print raw PNG capture - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified - + Define the screen to capture - + default: screen containing the cursor - + Screen number - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1077,78 +1079,78 @@ You may need to escape the '#' sign as in '\#FFF' - + Invalid delay, it must be higher than 0 - + Invalid screen number, it must be non negative - + Invalid path, it must be a real path in the system - + Invalid value, it must be defined as 'true' or 'false' - + Error - + Unable to write in - + Δεν κατάφερε να γράψει στο - - + + Capture saved to clipboard - + URL copied to clipboard. - + L'URL s'ha copiat al porta-retalls. - + Options - + Arguments - + arguments - + Usage - + options - + Per default runs Flameshot in the background and adds a tray icon for configuration. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1208,42 +1210,48 @@ You may need to escape the '#' sign as in '\#FFF' - - Quit capture + + + Delete current tool - - + + Quit capture + Ix de la captura + + + + Screenshot history - - + + Capture screen - + Show color picker - + Mostra el selector de color - + Change the tool's thickness - + Canvia el gruix de l'eina RectangleTool - + Rectangle - + Set the Rectangle as the paint tool @@ -1251,12 +1259,12 @@ You may need to escape the '#' sign as in '\#FFF' RedoTool - + Redo - + Redo the next modification @@ -1264,12 +1272,12 @@ You may need to escape the '#' sign as in '\#FFF' SaveTool - + Save - + Save the capture @@ -1277,20 +1285,20 @@ You may need to escape the '#' sign as in '\#FFF' ScreenGrabber - + Unable to capture screen - + Δεν κατάφερε να κάνει λήψη από την οθόνη SelectionTool - + Rectangular Selection - + Set Selection as the paint tool @@ -1298,17 +1306,22 @@ You may need to escape the '#' sign as in '\#FFF' SetShortcutDialog - + Set Shortcut - + Enter new shortcut to change - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1316,58 +1329,84 @@ You may need to escape the '#' sign as in '\#FFF' ShortcutsWidget - + Hot Keys - + Available shortcuts in the screen capture mode. - + Dreceres disponibles en el mode de captura de pantalla. - + Description - + Descripció - + Key - + Tecla SidePanelWidget - + Active thickness: - + Active color: - + Press ESC to cancel - + Grab Color + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator - + Show the dimensions of the selection (X Y) @@ -1375,107 +1414,107 @@ You may need to escape the '#' sign as in '\#FFF' StrftimeChooserWidget - + Century (00-99) - + Year (00-99) - + Year (2000) - + Month Name (jan) - + Month Name (january) - + Month (01-12) - + Week Day (1-7) - + Week (01-53) - + Day Name (mon) - + Day Name (monday) - + Day (01-31) - + Day of Month (1-31) - + Day (001-366) - + Hour (00-23) - + Hour (01-12) - + Minute (00-59) - + Second (00-59) - + Full Date (%m/%d/%y) - + Full Date (%Y-%m-%d) - + Time (%H-%M-%S) - + Time (%H-%M) @@ -1491,22 +1530,22 @@ You may need to escape the '#' sign as in '\#FFF' TextConfig - + StrikeOut - + Underline - + Bold - + Italic @@ -1514,12 +1553,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text - + Add text to your capture @@ -1527,37 +1566,37 @@ You may need to escape the '#' sign as in '\#FFF' UIcolorEditor - + UI Color Editor - + Change the color moving the selectors and see the changes in the preview buttons. - + Select a Button to modify it - + Main Color - + Click on this button to set the edition mode of the main color. - + Contrast Color - + Click on this button to set the edition mode of the contrast color. @@ -1565,14 +1604,14 @@ You may need to escape the '#' sign as in '\#FFF' UndoTool - + Undo - + Undo the last modification - + Desfés l'última modificació @@ -1601,25 +1640,30 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: - + Button Selection - + Select All diff --git a/data/translations/Internationalization_es.ts b/data/translations/Internationalization_es.ts index e39ea07e..56e055a4 100644 --- a/data/translations/Internationalization_es.ts +++ b/data/translations/Internationalization_es.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Flecha - + Set the Arrow as the paint tool Establece la Flecha como herramienta de dibujo @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Imposible capturar la pantalla - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Usa la rueda del ratón para cambiar el grosor de la herramienta. Presiona Espacio para abrir el panel lateral. - + Tool Settings @@ -154,12 +154,12 @@ Presiona Espacio para abrir el panel lateral. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -208,57 +208,57 @@ Presiona Espacio para abrir el panel lateral. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Error - + Unable to close active modal widgets - + &Take Screenshot &Tomar captura de pantalla - + &Open Launcher - + &Configuration &Configuración - + &About - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Presiona Espacio para abrir el panel lateral. &Información - + &Quit &Salir @@ -335,8 +335,12 @@ Presiona Espacio para abrir el panel lateral. + Restore + + + Reset - Reiniciar + Reiniciar @@ -349,7 +353,7 @@ Presiona Espacio para abrir el panel lateral. Limpiar - + Deletes the name Borra el patrón @@ -428,183 +432,183 @@ Presiona Espacio para abrir el panel lateral. GeneralConf - - + + Import Importar - - - - + + + + Error Error - + Unable to read file. Imposible leer el archivo. - - + + Unable to write file. Imposible escribir el archivo. - + Save File Guardar Archivo - + Confirm Reset Confirmar Reset - + Are you sure you want to reset the configuration? ¿Estás seguro de que quieres reiniciar la configuración? - + Show help message Mostrar mensaje de ayuda - + Show the help message at the beginning in the capture mode. Muestra el mensaje de ayuda al iniciar el modo de captura. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications Mostrar notificaciones del escritorio - + Show tray icon Mostrar icono en la barra de tareas - + Show the systemtray icon Mostrar el icono en la barra de tareas - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Archivo de Configuración - + Export Exportar - + Reset - - + + Automatic check for updates - + Launch at startup Lanzar en el arranque - - + + Launch Flameshot Lanzar Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -840,12 +844,12 @@ Presiona Espacio para abrir el panel lateral. LineTool - + Line Línea - + Set the Line as the paint tool Establece la Línea como herramienta de dibujo @@ -879,12 +883,12 @@ Presiona Espacio para abrir el panel lateral. PencilTool - + Pencil Lápiz - + Set the Pencil as the paint tool Establece el Lápiz como herramienta de dibujo @@ -915,29 +919,16 @@ Presiona Espacio para abrir el panel lateral. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Error al Guardar - + Capture saved as Captura guardada como @@ -959,17 +950,27 @@ Presiona Espacio para abrir el panel lateral. - + Error trying to save as Error intentando guardar como - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1164,7 +1165,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1224,29 +1225,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Salir de la captura - - + + Screenshot history - - + + Capture screen - + Show color picker Mostrar el selector de color - + Change the tool's thickness Cambiar el grosor de la herramienta @@ -1254,12 +1261,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Rectángulo - + Set the Rectangle as the paint tool Establece el Rectángulo como herramienta de dibujo @@ -1325,6 +1332,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1556,12 +1568,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Texto - + Add text to your capture Agregar texto a la captura @@ -1643,10 +1655,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_eu.ts b/data/translations/Internationalization_eu.ts index 0718fa30..f08abd6b 100644 --- a/data/translations/Internationalization_eu.ts +++ b/data/translations/Internationalization_eu.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher Aplikazioen abiarazlea - + Choose an app to open the capture Hautatu pantaila-argazkia irekitzeko aplikazio bat @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With Ireki honekin - + Launch in terminal Abiarazi terminalean - + Keep open after selection Mantendu irekita hautapenaren ostean - - + + Error Errorea - + Unable to write in Ezin da hemen idatzi: - + Unable to launch in terminal. Ezin da terminalean abiarazi. @@ -51,12 +51,12 @@ ArrowTool - + Arrow Gezia - + Set the Arrow as the paint tool Ezarri Gezia margotzeko tresna gisa @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>Argazki-modua</b> - + Rectangular Region Eremu laukizuzena - + Full Screen (Current Display) Pantaila osoa (uneko pantaila) - + Full Screen (All Monitors) Pantaila osoa (pantaila guztiak) - + No Delay Atzerapenik ez - + second segundo - + seconds segundo - + Take new screenshot Egin pantaila-argazki berria - + Area: Eremua: - + Delay: Atzerapena: @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Ezin da pantailaren argazkia egin - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Erabili saguaren gurpila hautatutako tresnaren lodiera aldatzeko. Sakatu Zuriunea alboko panela irekitzeko. - + Tool Settings Tresna-aukerak @@ -154,12 +154,12 @@ Sakatu Zuriunea alboko panela irekitzeko. CircleCountTool - + Circle Counter Kontagailu biribildua - + Add an autoincrementing counter bubble Gehitu bere kabuz hazten den kontagailu-burbuila @@ -167,12 +167,12 @@ Sakatu Zuriunea alboko panela irekitzeko. CircleTool - + Circle Zirkulua - + Set the Circle as the paint tool Ezarri Zirkulua margotzeko tresna gisa @@ -180,27 +180,27 @@ Sakatu Zuriunea alboko panela irekitzeko. ConfigWindow - + Configuration Ezarpenak - + Interface Interfazea - + Filename Editor Fitxategi-izenaren editorea - + General Orokorra - + Shortcuts Laster-teklak @@ -208,57 +208,57 @@ Sakatu Zuriunea alboko panela irekitzeko. Controller - + New version %1 is available %1 bertsio berria eskuragarri dago - + You have the latest version Azken bertsioa duzu - + Failed to get information about the latest version. Ezin izan da azken bertsioari buruzko informazioa lortu. - + Error Errorea - + Unable to close active modal widgets Ezin dira itxi widget modal aktiboak - + &Take Screenshot &Pantaila-argazkia egin - + &Open Launcher &Abiarazlea ireki - + &Configuration &Ezarpenak - + &About &Honi buruz - + Check for updates Bilatu eguneraketak - + &Latest Uploads &Azken igoerak @@ -267,7 +267,7 @@ Sakatu Zuriunea alboko panela irekitzeko. &Informazioa - + &Quit &Irten @@ -275,12 +275,12 @@ Sakatu Zuriunea alboko panela irekitzeko. CopyTool - + Copy Kopiatu - + Copy the selection into the clipboard Kopiatu hautapena arbelean @@ -288,7 +288,7 @@ Sakatu Zuriunea alboko panela irekitzeko. DBusUtils - + Unable to connect via DBus Ezin da DBus bidez konektatu @@ -296,12 +296,12 @@ Sakatu Zuriunea alboko panela irekitzeko. ExitTool - + Exit Irten - + Leave the capture screen Irten argazki-hartze pantailatik @@ -309,47 +309,51 @@ Sakatu Zuriunea alboko panela irekitzeko. FileNameEditor - + Edit the name of your captures: Aldatu zure pantaila-argazkien izenak: - + Edit: Editatu: - + Preview: Aurreikuspena: - + Save Gorde - + Saves the pattern Gorde txantiloia - - Reset - Berrezarri + + Restore + - + Reset + Berrezarri + + + Restores the saved pattern Gordetako txantiloia berrezartzen du - + Clear Garbitu - + Deletes the name Izena ezabatzen du @@ -476,178 +480,183 @@ Sakatu Zuriunea alboko panela irekitzeko. GeneralConf - - + + Import Inportatu - - - - + + + + Error Errorea - + Unable to read file. Ezin da fitxategia irakurri. - - + + Unable to write file. Ezin da fitxategian idatzi. - + Save File Gorde fitxategia - + Confirm Reset Berretsi berrezartzea - + Are you sure you want to reset the configuration? Ziur ezarpenak berrezarri nahi dituzula? - + Show help message Bistaratu laguntza-mezua - + Show the help message at the beginning in the capture mode. Bistaratu laguntza-mezua argazki-hartze modua irekitzean. - + Show the side panel button Bistaratu aldeko paneleko botoia - + Show the side panel toggle button in the capture mode. Bistaratu aldeko panela erakusteko botoia argazki-hartze moduan. - - + + Show desktop notifications Bistaratu mahaigaineko jakinarazpenak - + Show tray icon Bistaratu ikonoa erretiluan - + Show the systemtray icon Bistaratu ikonoa sistemako erretiluan - - + + Confirmation required to delete screenshot from the latest uploads Berrespena behar da pantaila-argazkia azken igoeretatik ezabatzeko - + Configuration File Konfigurazio-fitxategia - + Export Esportatu - + Reset Berrezarri - - + + Automatic check for updates Automatikoki bilatu eguneraketak - + Launch at startup Abiarazi saio-hasieran - - + + Launch Flameshot Abiarazi Flameshot - + Show welcome message on launch Bistaratu ongietorri-mezua abioan - + Copy URL after upload Kopiatu URLa argazkia igo ostean - + Copy URL and close window after upload Kopiatu URLa eta itxi leihoa argazkia igo ostean - + Save image after copy Gorde argazkia berbera kopiatu ostean - + Save image file after copying it Gorde argazkia fitxategian berbera kopiatu ostean - + Save Path Gordetzeko bidea - + Change... Aldatu... - + Use fixed path for screenshots to save Erabili bide finkoa pantaila-argazkiak gordetzeko - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) Erabili JPG formatua arbelean kopiatzeko (PNG lehenetsia) - - + + Copy file path after save Kopiatu fitxategiaren bidea berbera gorde ostean - + Choose a Folder Aukeratu karpeta - + Unable to write to directory. Ezin da direktorioan idatzi. @@ -660,32 +669,32 @@ Sakatu Zuriunea alboko panela irekitzeko. Azken igoerak - + Screenshots history is empty Pantaila-argazkien erregistroa hutsik dago - + Copy URL Kopiatu URLa - + URL copied to clipboard. Arbelean kopiatu da URLa. - + Open in browser Ireki nabigatzailean - + Confirm to delete Berretsi ezabatzeko - + Are you sure you want to delete a screenshot from the latest uploads and server? Ziur pantaila-argazkia azken igoeretatik eta zerbitzaritik ezabatu nahi duzula? @@ -743,48 +752,48 @@ Sakatu Zuriunea alboko panela irekitzeko. ImgurUploader - + Upload to Imgur Igo Imgur-era - + Uploading Image Irudia igotzen - + Copy URL Kopiatu URLa - + Open URL Ireki URLa - + Delete image Ezabatu irudia - + Image to Clipboard. Irudia arbelera. + - Unable to open the URL. Ezin da ireki URLa. - + URL copied to clipboard. Arbelean kopiatu da URLa. - + Screenshot copied to clipboard. Arbelean kopiatu da pantaila-argazkia. @@ -792,12 +801,12 @@ Sakatu Zuriunea alboko panela irekitzeko. ImgurUploaderTool - + Image Uploader Irudi igotzailea - + Upload the selection to Imgur Igo hautapena Imgur-era @@ -805,7 +814,7 @@ Sakatu Zuriunea alboko panela irekitzeko. InfoWindow - + About Honi buruz @@ -870,12 +879,12 @@ Sakatu Zuriunea alboko panela irekitzeko. Deskribapena - + <u><b>License</b></u> <u><b>Lizentzia</b></u> - + <u><b>Version</b></u> <u><b>Bertsioa</b></u> @@ -887,12 +896,12 @@ Sakatu Zuriunea alboko panela irekitzeko. LineTool - + Line Lerroa - + Set the Line as the paint tool Ezarri Lerroa margotzeko tresna gisa @@ -900,12 +909,12 @@ Sakatu Zuriunea alboko panela irekitzeko. MarkerTool - + Marker Errotuladorea - + Set the Marker as the paint tool Ezarri Errotuladorea margotzeko tresna gisa @@ -913,12 +922,12 @@ Sakatu Zuriunea alboko panela irekitzeko. MoveTool - + Move Mugitu - + Move the selection area Mugitu hautapena @@ -926,12 +935,12 @@ Sakatu Zuriunea alboko panela irekitzeko. PencilTool - + Pencil Lápiz - + Set the Pencil as the paint tool Establece el Lápiz como herramienta de dibujo @@ -939,12 +948,12 @@ Sakatu Zuriunea alboko panela irekitzeko. PinTool - + Pin Tool Txintxeta - + Pin image on the desktop Finkatu irudia mahaigainan @@ -952,12 +961,12 @@ Sakatu Zuriunea alboko panela irekitzeko. PixelateTool - + Pixelate Pixelatu - + Set Pixelate as the paint tool Ezarri Pixelatu margotzeko tresna gisa @@ -965,177 +974,185 @@ Sakatu Zuriunea alboko panela irekitzeko. QHotkey - Failed to register %1. Error: %2 - Ezin izan da %1 erregistratu. Errorea: %2 + Ezin izan da %1 erregistratu. Errorea: %2 - Failed to unregister %1. Error: %2 - Ezin izan da %1 erregistrotik kendu. Errorea: %2 + Ezin izan da %1 erregistrotik kendu. Errorea: %2 QObject - + Save Error Errorea gordetzean - - + + Capture saved as Argazkia honela gorde da: - + Capture saved to clipboard. Argazkia arbelean gorde da. - - + + Capture saved to clipboard Argazkia arbelean gorde da - + Error while saving to clipboard Errorea arbelean gordetzerakoan - - + + Error trying to save as Errorea honela gordetzean: - + Save screenshot Gorde pantaila-argazkia - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as Pantaila-argazkia izen honekin gorde eta kopiatzen da arbelean: - - - - - + + + + + Unable to connect via DBus Ezin da DBus bidez konektatu - + Powerful yet simple to use screenshot software. Pantaila-argazki software ahaltsu baina sinplea. - + See Ikusi - + Capture the entire desktop. Pantaila osoaren argazkia egin. - + Open the capture launcher. Ireki argazki-hartze abiarazlea. - + Start a manual capture in GUI mode. Hasi eskuzko argazki-hartzea interfaze moduan. - + Configure Konfiguratu - + Capture a single screen. Leiho bakar baten argazkia egin. - + Path where the capture will be saved Argazkia gordeko den bidea - + Save the capture to the clipboard Gorde argazkia arbelean - + Delay time in milliseconds Atzerapen tartea milisegundotan - + Set the filename pattern Ezarri fitxategi-izenaren txantiloia - + Enable or disable the trayicon Gaitu/Desgaitu erretilu ikonoa - + Enable or disable run at startup Gaitu/Desgaitu saio hasieran abiaraztea - + Show the help message in the capture mode Bistaratu laguntza mezua argazki-hartze moduan - + Define the main UI color Zehaztu interfazearen kolore nagusia - + Define the contrast UI color Zehaztu interfazearen kontraste kolore - + Print raw PNG capture Gorde argazkia PNG gordin gisa - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified Inprimatu hautapenaren geometria W H X Y formatuan (Zabalera, Altuera, X ardatza, Y ardatza). Ez du ezer egiten jatorrizkoa zehazten bada - + Define the screen to capture Zehaztu argazkia egingo zaion leihoa - + default: screen containing the cursor lehenetsia: kurtsorea gainean duen leihoa - + Screen number Leiho kopurua - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1152,67 +1169,67 @@ You may need to escape the '#' sign as in '\#FFF' Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bezala - + Invalid delay, it must be higher than 0 Atzerapen baliogabea, 0 baino handiagoa izan behar du - + Invalid screen number, it must be non negative Leiho kopuru baliogabe, ezin du negatiboa izan - + Invalid path, it must be a real path in the system Bide baliogabe, sisteman existitzen den bide bat behar du izan - + Invalid value, it must be defined as 'true' or 'false' Balio baliogabea, 'true' (egi) edo 'false' (faltsu) gisa definitu behar da - + Error Errorea - + Unable to write in Ezin da hemen idatzi: - + URL copied to clipboard. Arbelean kopiatu da URLa. - + Options Aukerak - + Arguments Argumentuak - + arguments argumentuak - + Usage Erabilera - + options aukerak - + Per default runs Flameshot in the background and adds a tray icon for configuration. Lehenetsita, Flameshot atzealdean abiarazten du eta erretiluko ikono bat bistaratzen du, konfiguratzeko. @@ -1221,7 +1238,7 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez Lehenetsita Flameshot atzealdean abiarazten du eta erretilu ikono bat gehitzen du ezarpenetarako. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Kaixo, hemen nago! Egin klik erretiluko ikonoan pantaila-argazkia hartzeko edo egin klik eskuineko botoiaz aukera gehiago ikusteko. @@ -1281,29 +1298,35 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez Idatzi testu-eremuan - + + + Delete current tool + + + + Quit capture Irten argazki-hartzetik - - + + Screenshot history Pantaila-argazkien erregistroa - - + + Capture screen Egin pantailaren argazkia - + Show color picker Bistaratu kolore hautagailua - + Change the tool's thickness Aldatu tresnaren lodiera @@ -1311,12 +1334,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez RectangleTool - + Rectangle Laukizuzena - + Set the Rectangle as the paint tool Ezarri Laukizuzena margotzeko tresna gisa @@ -1324,12 +1347,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez RedoTool - + Redo Berregin - + Redo the next modification Berregin azken aldaketa @@ -1337,12 +1360,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez SaveTool - + Save Gorde - + Save the capture Gorde argazkia @@ -1350,7 +1373,7 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez ScreenGrabber - + Unable to capture screen Ezin da pantailaren argazkia egin @@ -1358,12 +1381,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez SelectionTool - + Rectangular Selection Hautapen laukizuzena - + Set Selection as the paint tool Ezarri Hautapena margotzeko tresna gisa @@ -1371,17 +1394,22 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez SetShortcutDialog - + Set Shortcut Ezarri laster-tekla - + Enter new shortcut to change Sakatu laster-tekla berria aldatzeko - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Sakatu Esc irteteko edo Atzera tekla hutsik uzteko. @@ -1389,22 +1417,22 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez ShortcutsWidget - + Hot Keys Laster-teklak - + Available shortcuts in the screen capture mode. Argazki-hartze moduan erabili daitezken laster-teklak. - + Description Deskribapena - + Key Tekla @@ -1412,35 +1440,61 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez SidePanelWidget - + Active thickness: Uneko lodiera: - + Active color: Uneko kolorea: - + Press ESC to cancel Sakatu IHES uzteko - + Grab Color Hartu kolorea + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator Hautapenaren tamaina-adierazlea - + Show the dimensions of the selection (X Y) Bistaratu hautapenaren dimentsioak (X Y) @@ -1448,107 +1502,107 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez StrftimeChooserWidget - + Century (00-99) Mendea (00-99) - + Year (00-99) Urtea (00-99) - + Year (2000) Urtea (2000) - + Month Name (jan) Hilabetearen izena (ira) - + Month Name (january) Hilabetearen izena (iraila) - + Month (01-12) Hilabetea (01-12) - + Week Day (1-7) Asteko eguna (1-7) - + Week (01-53) Astea (01-53) - + Day Name (mon) Egunaren izena (ar.) - + Day Name (monday) Egunaren izena (asteartea) - + Day (01-31) Eguna (01-31) - + Day of Month (1-31) Hilabeteko eguna (1-31) - + Day (001-366) Urteko eguna (001-366) - + Time (%H-%M-%S) Ordua (%H-%M-%S) - + Time (%H-%M) Ordua (%H-%M) - + Hour (00-23) Eguneko ordua (00-23) - + Hour (01-12) Eguneko ordua (01-12) - + Minute (00-59) Minutua (00-59) - + Second (00-59) Segundoa (00-59) - + Full Date (%m/%d/%y) Data (%h/%e/%u) - + Full Date (%Y-%m-%d) Data (%U-%h-%e) @@ -1564,22 +1618,22 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez TextConfig - + StrikeOut Marratua - + Underline Azpimarratua - + Bold Lodia - + Italic Etzana @@ -1587,12 +1641,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez TextTool - + Text Testua - + Add text to your capture Gehitu testua zure argazkian @@ -1600,37 +1654,37 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez UIcolorEditor - + UI Color Editor Interfaze-kolorearen editorea - + Change the color moving the selectors and see the changes in the preview buttons. Aldatu kolorea hautagailuak mugituz eta ikusi aldaketak aurrebistako botoietan. - + Select a Button to modify it Aukeratu botoi bat berbera aldatzeko - + Main Color Kolore nagusia - + Click on this button to set the edition mode of the main color. Sakatu botoi hau kolore nagusia aldatzeko. - + Contrast Color Kontraste kolorea - + Click on this button to set the edition mode of the contrast color. Sakatu botoi hau kontraste kolorea aldatzeko. @@ -1638,12 +1692,12 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez UndoTool - + Undo Desegin - + Undo the last modification Desegin azken aldaketa @@ -1674,25 +1728,30 @@ Baliteke '#' karakterea ihes egin behar izatea, '\#FFF'n bez UtilityPanel - + Close Itxi + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: Hautapenaren kanpoko eremuaren opakutasuna : - + Button Selection Botoi-hautapena - + Select All Hautatu guztiak diff --git a/data/translations/Internationalization_fr.ts b/data/translations/Internationalization_fr.ts index 1108a809..90e7d873 100644 --- a/data/translations/Internationalization_fr.ts +++ b/data/translations/Internationalization_fr.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Flèche - + Set the Arrow as the paint tool Sélectionner l'outil Flèche @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Impossible de capturer l'écran - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Utiliser la molette de la souris pour changer l'épaisseur de l'outil. Appuyer sur Espace pour ouvrir le panneau latéral. - + Tool Settings Réglages des outils @@ -154,12 +154,12 @@ Appuyer sur Espace pour ouvrir le panneau latéral. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -208,57 +208,57 @@ Appuyer sur Espace pour ouvrir le panneau latéral. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Erreur - + Unable to close active modal widgets - + &Take Screenshot &Capturer l'écran - + &Open Launcher - + &Configuration &Configuration - + &About - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Appuyer sur Espace pour ouvrir le panneau latéral. &Informations - + &Quit &Quitter @@ -335,8 +335,12 @@ Appuyer sur Espace pour ouvrir le panneau latéral. + Restore + + + Reset - Réinitialiser + Réinitialiser @@ -349,7 +353,7 @@ Appuyer sur Espace pour ouvrir le panneau latéral. Purger - + Deletes the name Supprime le nom @@ -436,183 +440,183 @@ Appuyer sur Espace pour ouvrir le panneau latéral. GeneralConf - - + + Import Importer - - - - + + + + Error Erreur - + Unable to read file. Impossible de lire le fichier. - - + + Unable to write file. Impossible d'écrire le fichier. - + Save File Sauvegarder le fichier - + Confirm Reset Confirmer la Réinitialisation - + Are you sure you want to reset the configuration? Êtes-vous sûr de vouloir réinitialiser la configuration ? - + Show help message Montrer le message d'aide - + Show the help message at the beginning in the capture mode. Afficher ce message au lancement du mode capture. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications Afficher les notifications du bureau - + Show tray icon Afficher les icones de la barre d'état - + Show the systemtray icon Afficher l'icône dans la barre de tâches - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Fichier de Configuration - + Export Exporter - + Reset Réinitialiser - - + + Automatic check for updates - + Launch at startup Lancer au démarrage - - + + Launch Flameshot Démarrer Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -840,12 +844,12 @@ Appuyer sur Espace pour ouvrir le panneau latéral. LineTool - + Line Ligne - + Set the Line as the paint tool Sélectionner l'outil Ligne @@ -879,12 +883,12 @@ Appuyer sur Espace pour ouvrir le panneau latéral. PencilTool - + Pencil Crayon - + Set the Pencil as the paint tool Sélectionner l'outil Crayon @@ -915,29 +919,16 @@ Appuyer sur Espace pour ouvrir le panneau latéral. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Erreur lors de la sauvegarde - + Capture saved as Capture d'écran sauvegardée sous @@ -959,17 +950,27 @@ Appuyer sur Espace pour ouvrir le panneau latéral. - + Error trying to save as Erreur lors de la sauvegarde sous - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1164,7 +1165,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1224,29 +1225,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Quitter la capture d'écran - - + + Screenshot history - - + + Capture screen - + Show color picker Afficher la palette de couleurs - + Change the tool's thickness Changer l'épaisseur des outils @@ -1254,12 +1261,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Rectangle plein - + Set the Rectangle as the paint tool Sélectionner l'outil Rectangle plein @@ -1325,6 +1332,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1556,12 +1568,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Texte - + Add text to your capture Ajouter du texte à la capture @@ -1643,10 +1655,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close Fermer + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_hu.ts b/data/translations/Internationalization_hu.ts index cc2f3217..c707156d 100644 --- a/data/translations/Internationalization_hu.ts +++ b/data/translations/Internationalization_hu.ts @@ -294,7 +294,7 @@ Nyomd meg a Space billentyűt, hogy megnyisd az oldalsó panelt. Reset - Visszaállítás + Visszaállítás Restores the saved pattern @@ -308,6 +308,10 @@ Nyomd meg a Space billentyűt, hogy megnyisd az oldalsó panelt. Deletes the name Törli a nevet + + Restore + + FileNameHandler @@ -528,6 +532,10 @@ Nyomd meg a Space billentyűt, hogy megnyisd az oldalsó panelt. Use JPG format for clipboard (PNG default) JPG formátum használata vágolapra másoláskor (PNG az alapértelmezett) + + Latest Uploads Max Size + + HistoryWidget @@ -605,6 +613,10 @@ Nyomd meg a Space billentyűt, hogy megnyisd az oldalsó panelt. Image to Clipboard. Kép a vágolapra. + + Delete image + Kép törlése + ImgurUploader @@ -797,11 +809,11 @@ Nyomd meg a Space billentyűt, hogy megnyisd az oldalsó panelt. QHotkey Failed to register %1. Error: %2 - Nem sikerült %1 rögzítése. %2 Hiba + Nem sikerült %1 rögzítése. %2 Hiba Failed to unregister %1. Error: %2 - Sikertelen rögzítés törlés %1 -nél. %2 Hiba + Sikertelen rögzítés törlés %1 -nél. %2 Hiba @@ -1063,6 +1075,18 @@ Lehet, hogy meg kepp adnod egy '\' karaktert a '#' karakter Error while saving to clipboard Hiba a vágolapra másolás közben + + Delete current tool + + + + Saving canceled + + + + Save canceled + + RectangleTool @@ -1129,6 +1153,10 @@ Lehet, hogy meg kepp adnod egy '\' karaktert a '#' karakter Press Esc to cancel or Backspace to disable the keyboard shortcut. Nyomd meg az Esc billentyűt a kilépéshet vagy a Backspace-t a gyorsbillentyűk kikapcsolásához. + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + ShortcutsWidget @@ -1168,6 +1196,28 @@ Lehet, hogy meg kepp adnod egy '\' karaktert a '#' karakter Szín választása + + SizeDecreaseTool + + Decrease Tool Size + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + Increase Tool Size + + + + Increase the size of the other tools + + + SizeIndicatorTool @@ -1378,6 +1428,10 @@ Lehet, hogy meg kepp adnod egy '\' karaktert a '#' karakter Close Bezárás + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_it_IT.ts b/data/translations/Internationalization_it_IT.ts index 46c3c4dc..b8524fee 100644 --- a/data/translations/Internationalization_it_IT.ts +++ b/data/translations/Internationalization_it_IT.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Freccia - + Set the Arrow as the paint tool Imposta la freccia come strumento di disegno @@ -117,12 +117,12 @@ CaptureWidget - + Unable to capture screen Impossibile acquisire lo schermo - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -135,7 +135,7 @@ Usa la rotellina del mouse per modificare lo spessore del tuo strumento. Premi la barra spaziatrice per aprire il pannello laterale. - + Tool Settings Impostazioni Strumento @@ -143,12 +143,12 @@ Premi la barra spaziatrice per aprire il pannello laterale. CircleCountTool - + Circle Counter Contatore circolare - + Add an autoincrementing counter bubble Aggiungi un contatore a bolla autoincrementante @@ -197,62 +197,62 @@ Premi la barra spaziatrice per aprire il pannello laterale. Controller - + New version %1 is available È disponibile la nuova versione %1 - + You have the latest version Hai l'ultima versione - + Failed to get information about the latest version. Impossibile ottenere informazioni sull'ultima versione. - + Error Errore - + Unable to close active modal widgets Impossibile chiudere i widget modali attivi - + &Take Screenshot &Acquisisci screenshot - + &Open Launcher &Apri Launcher - + &Configuration &Configurazione - + &About &Informazioni - + Check for updates Verifica la disponibilità di aggiornamenti - + &Quit &Esci - + &Latest Uploads &Ultimi Uploads @@ -320,8 +320,12 @@ Premi la barra spaziatrice per aprire il pannello laterale. + Restore + + + Reset - Ripristina + Ripristina @@ -334,7 +338,7 @@ Premi la barra spaziatrice per aprire il pannello laterale. Pulisci - + Deletes the name Elimina il nome @@ -342,183 +346,183 @@ Premi la barra spaziatrice per aprire il pannello laterale. GeneralConf - - + + Import Importa - - - - + + + + Error Errore - + Unable to read file. Impossibile leggere il file. - - + + Unable to write file. Impossibile scrivere il file. - + Save File Salva File - + Confirm Reset Conferma il ripristino - + Are you sure you want to reset the configuration? Sei sicuro di voler ripristinare la configurazione? - + Show help message Mostra messaggio di aiuto - + Show the help message at the beginning in the capture mode. Mostra il messaggio di aiuto all'inizio nella modalità di acquisizione. - + Show the side panel button Mostra il pulsante del pannello laterale - + Show the side panel toggle button in the capture mode. Mostra il pulsante di attivazione/disattivazione del pannello laterale nella modalità di acquisizione. - - + + Show desktop notifications Mostra notifiche desktop - + Show tray icon Mostra icona nella barra delle applicazioni - + Show the systemtray icon Mostra l'icona sulla barra delle applicazioni - - + + Confirmation required to delete screenshot from the latest uploads Conferma richiesta per eliminare screenshot dagli ultimi caricamenti - + Configuration File File di Configurazione - + Export Esporta - + Reset Ripristina - - + + Automatic check for updates Controllo automatico degli aggiornamenti - + Launch at startup Esegui all'avvio - - + + Launch Flameshot Esegui Flameshot - + Show welcome message on launch Mostra il messaggio di benvenuto all'avvio - + Copy URL after upload Copia l'URL dopo il caricamento - + Copy URL and close window after upload Copia l'URL e chiudi la finestra dopo il caricamento - + Save image after copy Salva l'immagine dopo la copia - + Save image file after copying it Salva il file immagine dopo averlo copiato - + Save Path Salva Percorso - + Change... Cambia... - + Use fixed path for screenshots to save Usa percorso fisso per salvare gli screenshot - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) Usa il formato JPG per gli appunti (impostazione predefinita PNG) - - + + Copy file path after save Copia il percorso del file dopo il salvataggio - + Choose a Folder Scegli una Cartella - + Unable to write to directory. Impossibile scrivere nella directory. @@ -561,6 +565,48 @@ Premi la barra spaziatrice per aprire il pannello laterale. Sei sicuro di voler eliminare un screenshot dagli ultimi caricamenti e dal server? + + ImgS3Uploader + + URL copied to clipboard. + URL copiato negli appunti. + + + Error + Errore + + + + ImgUploader + + Delete image + Elimina immagine + + + Unable to open the URL. + Impossibile aprire l'URL. + + + URL copied to clipboard. + URL copiato negli appunti. + + + Screenshot copied to clipboard. + Screenshot copiato negli appunti. + + + Copy URL + Copia URL + + + Open URL + Apri URL + + + Image to Clipboard. + Immagine negli Appunti. + + ImgurUploader @@ -644,12 +690,12 @@ Premi la barra spaziatrice per aprire il pannello laterale. LineTool - + Line Linea - + Set the Line as the paint tool Imposta la Linea come strumento di disegno @@ -683,12 +729,12 @@ Premi la barra spaziatrice per aprire il pannello laterale. PencilTool - + Pencil Matita - + Set the Pencil as the paint tool Imposta la matita come strumento di pittura @@ -722,14 +768,12 @@ Premi la barra spaziatrice per aprire il pannello laterale. QHotkey - Failed to register %1. Error: %2 - Impossibile registrare %1. Errore: %2 + Impossibile registrare %1. Errore: %2 - Failed to unregister %1. Error: %2 - Impossibile annullare la registrazione di %1. Errore: %2 + Impossibile annullare la registrazione di %1. Errore: %2 @@ -948,33 +992,43 @@ You may need to escape the '#' sign as in '\#FFF' - + Capture saved as Cattura salvata come - + Error trying to save as Errore durante il tentativo di salvare come - + Save screenshot Salva screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as L'acquisizione viene salvata e copiata negli appunti come - + Save Error Salva errore - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Ciao sono qui! Fare clic sull'icona nella barra delle applicazioni per acquisire uno screenshot o fare clic con il pulsante destro per visualizzare più opzioni. @@ -1034,29 +1088,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Esci dalla cattura - - + + Screenshot history Cronologia degli screenshot - - + + Capture screen Cattura schermo - + Show color picker Mostra selettore colore - + Change the tool's thickness Cambia lo spessore dello strumento @@ -1064,12 +1124,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Rettangolo - + Set the Rectangle as the paint tool Imposta il rettangolo come strumento di disegno @@ -1135,6 +1195,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Premi Esc per annullare o Backspace per disabilitare la scorciatoia da tastiera. @@ -1366,12 +1431,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Testo - + Add text to your capture Aggiungi testo alla tua cattura @@ -1453,10 +1518,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close Chiudi + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_ja.ts b/data/translations/Internationalization_ja.ts index e79e82da..19b94a71 100644 --- a/data/translations/Internationalization_ja.ts +++ b/data/translations/Internationalization_ja.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher アプリケーションランチャー - + Choose an app to open the capture キャプチャーを開くアプリケーションを選択する @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With 次で開く - + Launch in terminal 端末内で起動する - + Keep open after selection 選択後も開いたままにする - - + + Error エラー - + Unable to launch in terminal. 端末内で起動できません。 - + Unable to write in 書き込めません: @@ -51,12 +51,12 @@ ArrowTool - + Arrow 矢印 - + Set the Arrow as the paint tool ペイントツールとして「矢印」をセットする @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>キャプチャーモード</b> - + Rectangular Region 四角形選択 - + Full Screen (Current Display) 全画面(このディスプレイ) - + Full Screen (All Monitors) 全画面(すべてのディスプレイ) - + No Delay ディレイなし - + second - + seconds - + Take new screenshot 新しいキャプチャー - + Area: 選択タイプ: - + Delay: ディレイ: @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen 画面をキャプチャーできません - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Enter を押すと画面をキャプチャー。 スペースを押すとサイドパネルを開く。 - + Tool Settings ツール設定 @@ -154,12 +154,12 @@ Enter を押すと画面をキャプチャー。 CircleCountTool - + Circle Counter 丸カウンター - + Add an autoincrementing counter bubble 自動的に増加する丸カウンターを追加する @@ -167,12 +167,12 @@ Enter を押すと画面をキャプチャー。 CircleTool - + Circle 円形 - + Set the Circle as the paint tool ペイントツールとして「円形」をセットする @@ -180,27 +180,27 @@ Enter を押すと画面をキャプチャー。 ConfigWindow - + Configuration 設定 - + Interface インターフェース - + Filename Editor ファイル名エディター - + General 全般 - + Shortcuts ショートカット @@ -208,57 +208,57 @@ Enter を押すと画面をキャプチャー。 Controller - + New version %1 is available 新しいバージョン%1が公開されました - + You have the latest version 最新バージョンです - + Failed to get information about the latest version. 最新バージョン情報を取得に失敗しました。 - + Error エラー - + Unable to close active modal widgets アクティブなモーダルを閉じることができません - + &Take Screenshot スクリーンショットを撮る(&T) - + &Open Launcher ランチャーを開く(&O) - + &Configuration 設定(&C) - + &About ついて(&A) - + Check for updates 更新をチェックする - + &Latest Uploads 最新アップロード(&L) @@ -267,7 +267,7 @@ Enter を押すと画面をキャプチャー。 情報(&I) - + &Quit 終了(&Q) @@ -275,12 +275,12 @@ Enter を押すと画面をキャプチャー。 CopyTool - + Copy コピー - + Copy the selection into the clipboard 選択範囲をクリップボードにコピーする @@ -288,7 +288,7 @@ Enter を押すと画面をキャプチャー。 DBusUtils - + Unable to connect via DBus DBus に接続できません @@ -296,12 +296,12 @@ Enter を押すと画面をキャプチャー。 ExitTool - + Exit 終了 - + Leave the capture screen 画面キャプチャーを終了する @@ -309,47 +309,51 @@ Enter を押すと画面をキャプチャー。 FileNameEditor - + Edit the name of your captures: キャプチャー名の編集: - + Edit: 編集: - + Preview: プレビュー: - + Save 保存 - + Saves the pattern パターンを保存する - - Reset - リセット + + Restore + - + Reset + リセット + + + Restores the saved pattern 保存されたパターンに戻す - + Clear 消去 - + Deletes the name 名前を削除する @@ -428,178 +432,183 @@ Enter を押すと画面をキャプチャー。 GeneralConf - - + + Import インポート - - - - + + + + Error エラー - + Unable to read file. ファイルを読み込みに失敗しました。 - - + + Unable to write file. ファイルを書き込みに失敗しました。 - + Save File ファイルを保存する - + Confirm Reset よろしい - + Are you sure you want to reset the configuration? 設定をリセットしてよろしいですか? - + Show help message ヘルプメッセージを表示する - + Show the help message at the beginning in the capture mode. キャプチャーモード開始時にヘルプメッセージを表示する。 - + Show the side panel button サイドパネルのボタンを表示する - + Show the side panel toggle button in the capture mode. キャプチャーモードでサイドパネルのトグルボタンを表示する。 - - + + Show desktop notifications デスクトップ通知を表示する - + Show tray icon トレイアイコンを表示する - + Show the systemtray icon システムトレイにアプリアイコンを表示する - - + + Confirmation required to delete screenshot from the latest uploads 最新アップロードからのキャプチャーを削除する前に確認が必要 - + Configuration File 設定ファイル - + Export エクスポート - + Reset リセット - - + + Automatic check for updates 自動的に更新を検索する - + Launch at startup システム起動時に起動する - - + + Launch Flameshot Flameshotを起動する - + Show welcome message on launch 起動時にようこそメッセージを表示する - + Copy URL after upload アップロードあとでURLをコピーする - + Copy URL and close window after upload アップロードあとでURLをコピーしてウィンドウを閉じる - + Save image after copy コピーあとで画像を保存する - + Save image file after copying it コピーあとで、画像ファイルを保存する - + Save Path パスを保存する - + Change... 変更… - + Use fixed path for screenshots to save 一定なパスにキャプチャーを保存する - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) JPEGフォーマットでクリップボードにコピーする(PNG規定) - - + + Copy file path after save 保存するあとでファイルパスをコピーする - + Choose a Folder フォルダーを選択 - + Unable to write to directory. フォルダーで書き込みに失敗しました。 @@ -612,32 +621,32 @@ Enter を押すと画面をキャプチャー。 最新のアップロード - + Screenshots history is empty キャプチャー歴史がない - + Copy URL URL をコピーする - + URL copied to clipboard. URL がクリップボードにコピーされました。 - + Open in browser ブラウザーで開く - + Confirm to delete よろしい - + Are you sure you want to delete a screenshot from the latest uploads and server? サーバーとローカルからのキャプチャーを削除してよろしいですか? @@ -695,48 +704,48 @@ Enter を押すと画面をキャプチャー。 ImgurUploader - + Upload to Imgur Imgur にアップロード - + Uploading Image 画像をアップロード中 - + Copy URL URL をコピー - + Open URL URL を開く - + Delete image 画像を削除 - + Image to Clipboard. 画像をクリップボードへ。 + - Unable to open the URL. URL を開けません。 - + URL copied to clipboard. URL をクリップボードにコピーしました。 - + Screenshot copied to clipboard. スクリーンショットをクリップボードにコピーしました。 @@ -744,12 +753,12 @@ Enter を押すと画面をキャプチャー。 ImgurUploaderTool - + Image Uploader 画像アップローダー - + Upload the selection to Imgur Imgur に選択範囲をアップロードする @@ -757,7 +766,7 @@ Enter を押すと画面をキャプチャー。 InfoWindow - + About このアプリケーションについて @@ -810,12 +819,12 @@ Enter を押すと画面をキャプチャー。 説明 - + <u><b>License</b></u> <u><b>ライセンス</b></u> - + <u><b>Version</b></u> <u><b>バージョン</b></u> @@ -831,12 +840,12 @@ Enter を押すと画面をキャプチャー。 LineTool - + Line 直線 - + Set the Line as the paint tool ペイントツールとして「直線」をセットする @@ -844,12 +853,12 @@ Enter を押すと画面をキャプチャー。 MarkerTool - + Marker マーカー - + Set the Marker as the paint tool ペイントツールとして「マーカー」をセットする @@ -857,12 +866,12 @@ Enter を押すと画面をキャプチャー。 MoveTool - + Move 移動 - + Move the selection area 選択範囲を移動する @@ -870,12 +879,12 @@ Enter を押すと画面をキャプチャー。 PencilTool - + Pencil 鉛筆 - + Set the Pencil as the paint tool ペイントツールとして「鉛筆」をセットする @@ -883,12 +892,12 @@ Enter を押すと画面をキャプチャー。 PinTool - + Pin Tool 固定ツール - + Pin image on the desktop 選択範囲をデスクトップ上に配置する @@ -896,12 +905,12 @@ Enter を押すと画面をキャプチャー。 PixelateTool - + Pixelate ピクセル化する - + Set Pixelate as the paint tool ピクセル化がペイントツールとして設定する @@ -909,177 +918,185 @@ Enter を押すと画面をキャプチャー。 QHotkey - Failed to register %1. Error: %2 - ショートカット%1を設定に失敗しました。エラー%2 + ショートカット%1を設定に失敗しました。エラー%2 - Failed to unregister %1. Error: %2 - ショートカット%1を削除に失敗しました。エラー%2 + ショートカット%1を削除に失敗しました。エラー%2 QObject - + Save Error 保存エラー - - + + Capture saved as キャプチャーを保存しました: - + Capture saved to clipboard. キャプチャーがクリップボードにコピーされました。 - - + + Capture saved to clipboard キャプチャーをクリップボードに保存しました - + Error while saving to clipboard コピーに失敗しました - - + + Error trying to save as 保存時にエラーが発生しました: - + Save screenshot キャプチャーを保存する - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as キャプチャーがコピーされて として保存されました - - - - - + + + + + Unable to connect via DBus DBus に接続できません - + Powerful yet simple to use screenshot software. - + See 見る - + Capture the entire desktop. デスクトップをキャプチャー。 - + Open the capture launcher. キャプチャーランチャーを開く。 - + Start a manual capture in GUI mode. 手動的にGUIキャプチャーを開始する。 - + Configure 設定 - + Capture a single screen. 単一のディスプレイをキャプチャー。 - + Path where the capture will be saved キャプチャーの保存パス - + Save the capture to the clipboard キャプチャーがクリップボードにコピーする - + Delay time in milliseconds ミリ秒でディレイ時間 - + Set the filename pattern ファイル名のパターンを設定する - + Enable or disable the trayicon トレイアイコンを無効・有効 - + Enable or disable run at startup スタートアップに起動を無効・有効 - + Show the help message in the capture mode キャプチャーでヘルプメッセージを表示 - + Define the main UI color マインのUI色を設定する - + Define the contrast UI color コントラストのUI色を設定する - + Print raw PNG capture PNGのキャプチャーを印刷する - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified - + Define the screen to capture - + default: screen containing the cursor - + Screen number - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1090,72 +1107,72 @@ You may need to escape the '#' sign as in '\#FFF' - + Invalid delay, it must be higher than 0 - + Invalid screen number, it must be non negative - + Invalid path, it must be a real path in the system - + Invalid value, it must be defined as 'true' or 'false' - + Error エラー - + Unable to write in 書き込めません: - + URL copied to clipboard. URL をクリップボードにコピーしました。 - + Options - + Arguments - + arguments - + Usage - + options - + Per default runs Flameshot in the background and adds a tray icon for configuration. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1215,29 +1232,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture キャプチャーを終了する - - + + Screenshot history - - + + Capture screen - + Show color picker カラーピッカーを表示する - + Change the tool's thickness ツールの値 (太さや濃さ) を変更する @@ -1245,12 +1268,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle 矩形 - + Set the Rectangle as the paint tool ペイントツールとして「矩形」をセットする @@ -1258,12 +1281,12 @@ You may need to escape the '#' sign as in '\#FFF' RedoTool - + Redo やり直し - + Redo the next modification 次の変更にやり直す @@ -1271,12 +1294,12 @@ You may need to escape the '#' sign as in '\#FFF' SaveTool - + Save 保存 - + Save the capture キャプチャーを保存する @@ -1284,7 +1307,7 @@ You may need to escape the '#' sign as in '\#FFF' ScreenGrabber - + Unable to capture screen 画面をキャプチャーできません @@ -1292,12 +1315,12 @@ You may need to escape the '#' sign as in '\#FFF' SelectionTool - + Rectangular Selection 矩形選択 - + Set Selection as the paint tool ペイントツールとして「矩形選択」をセットする @@ -1305,17 +1328,22 @@ You may need to escape the '#' sign as in '\#FFF' SetShortcutDialog - + Set Shortcut - + Enter new shortcut to change - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1323,22 +1351,22 @@ You may need to escape the '#' sign as in '\#FFF' ShortcutsWidget - + Hot Keys - + Available shortcuts in the screen capture mode. スクリーンキャプチャーモードで利用可能なショートカット。 - + Description 説明 - + Key キー @@ -1346,35 +1374,61 @@ You may need to escape the '#' sign as in '\#FFF' SidePanelWidget - + Active thickness: - + Active color: アクティブな色: - + Press ESC to cancel ESC でキャンセル - + Grab Color 色の取得 + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator 選択サイズインジケーター - + Show the dimensions of the selection (X Y) 選択範囲の寸法 (X Y) を表示する @@ -1382,107 +1436,107 @@ You may need to escape the '#' sign as in '\#FFF' StrftimeChooserWidget - + Century (00-99) 世紀 (00-99) - + Year (00-99) 年 (00-99) - + Year (2000) 年 (2000) - + Month Name (jan) 月 (jan) - + Month Name (january) 月 (january) - + Month (01-12) 月 (01-12) - + Week Day (1-7) 週日 (1-7) - + Week (01-53) 週 (01-53) - + Day Name (mon) 曜日 (月) - + Day Name (monday) 曜日 (月曜日) - + Day (01-31) 日 (01-31) - + Day of Month (1-31) 日 (1-31) - + Day (001-366) 日 (001-366) - + Time (%H-%M-%S) 時刻 (%H-%M-%S) - + Time (%H-%M) 時刻 (%H-%M) - + Hour (00-23) 時 (00-23) - + Hour (01-12) 時 (01-12) - + Minute (00-59) 分 (00-59) - + Second (00-59) 秒 (00-59) - + Full Date (%m/%d/%y) 年月日 (%m/%d/%y) - + Full Date (%Y-%m-%d) 年月日 (%Y-%m-%d) @@ -1498,22 +1552,22 @@ You may need to escape the '#' sign as in '\#FFF' TextConfig - + StrikeOut 取り消し線 - + Underline 下線 - + Bold 太字 - + Italic 斜体 @@ -1521,12 +1575,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text テキスト - + Add text to your capture キャプチャーにテキストを追加する @@ -1534,37 +1588,37 @@ You may need to escape the '#' sign as in '\#FFF' UIcolorEditor - + UI Color Editor UI カラーエディター - + Change the color moving the selectors and see the changes in the preview buttons. セレクターを動かして色を変更し、プレビューボタンの色がどう変化するか確認してください。 - + Select a Button to modify it 変更するボタンを選択してください - + Main Color メインカラー - + Click on this button to set the edition mode of the main color. このボタンをクリックすると、メインカラーの編集モードをセットします。 - + Contrast Color コントラストカラー - + Click on this button to set the edition mode of the contrast color. このボタンをクリックすると、コントラストカラーの編集モードをセットします。 @@ -1572,12 +1626,12 @@ You may need to escape the '#' sign as in '\#FFF' UndoTool - + Undo 元に戻す - + Undo the last modification 最後の変更を元に戻す @@ -1608,25 +1662,30 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: 選択範囲外の不透明度: - + Button Selection ボタンの選択 - + Select All すべて選択 diff --git a/data/translations/Internationalization_ka.ts b/data/translations/Internationalization_ka.ts index d2cba5e8..116ca8b0 100644 --- a/data/translations/Internationalization_ka.ts +++ b/data/translations/Internationalization_ka.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow ისარი - + Set the Arrow as the paint tool ისრის ხელსაწყოს არჩევა სახატავად @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen ეკრანის გადაღება ვერ მოხერხდა - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -142,7 +142,7 @@ Press Space to open the side panel. - + Tool Settings @@ -150,12 +150,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -204,57 +204,57 @@ Press Space to open the side panel. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error შეცდომა - + Unable to close active modal widgets - + &Take Screenshot - + &Open Launcher - + &Configuration &პარამეტრები - + &About - + Check for updates - + &Latest Uploads @@ -263,7 +263,7 @@ Press Space to open the side panel. &ინფორმაცია - + &Quit &გამოსვლა @@ -331,8 +331,12 @@ Press Space to open the side panel. + Restore + + + Reset - განულება + განულება @@ -345,7 +349,7 @@ Press Space to open the side panel. გაწმენდა - + Deletes the name სახელის წაშლა @@ -420,183 +424,183 @@ Press Space to open the side panel. GeneralConf - - + + Import იმპორტირება - - - - + + + + Error შეცდომა - + Unable to read file. ფაილის წაკითხვა ვერ მოხერხდა. - - + + Unable to write file. ფაილის ჩაწერა ვერ მოხერხდა. - + Save File ფაილის შენახვა - + Confirm Reset განულების დადასტურება - + Are you sure you want to reset the configuration? დარწმუნებული ხართ, რომ გსურთ პარამეტრების განულება? - + Show help message დახმარების შეტყობინების ნახვა - + Show the help message at the beginning in the capture mode. დახმარების შეტყობინების ნახვა გადაღების რეჟიმის დაწყებისას. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications ცნობების ჩვენება სამუშაო მაგიდაზე - + Show tray icon ხატულის ჩვენება სისტემურ პანელზე - + Show the systemtray icon ხატულის ჩვენება სისტემურ პანელზე - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File პარამეტრების ფაილი - + Export ექსპორტირება - + Reset განულება - - + + Automatic check for updates - + Launch at startup გაშვება სისტემის ჩატვირთვისას - - + + Launch Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -824,12 +828,12 @@ Press Space to open the side panel. LineTool - + Line ხაზი - + Set the Line as the paint tool ხაზის ხელსაწყოს არჩევა სახატავად @@ -863,12 +867,12 @@ Press Space to open the side panel. PencilTool - + Pencil ფანქარი - + Set the Pencil as the paint tool ფანქრის ხელსაწყოს არჩევა სახატავად @@ -899,29 +903,16 @@ Press Space to open the side panel. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error შეცდომა შენახვისას - + Capture saved as სურათი შენახულია როგორც: @@ -943,17 +934,27 @@ Press Space to open the side panel. - + Error trying to save as შეცდომა მცდელობისას შენახულიყო როგორც: - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1148,7 +1149,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1208,29 +1209,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture გადაღებიდან გამოსვლა - - + + Screenshot history - - + + Capture screen - + Show color picker ფერის შესარჩევის ჩვენება - + Change the tool's thickness ხელსაწყოს სისქის შეცვლა @@ -1238,12 +1245,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle მართკუთხედი - + Set the Rectangle as the paint tool მართკუთხედის ხელსაწყოს არჩევა სახატავად @@ -1309,6 +1316,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1540,12 +1552,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text - + Add text to your capture @@ -1627,10 +1639,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_ko.ts b/data/translations/Internationalization_ko.ts index 1756c42e..f021d368 100644 --- a/data/translations/Internationalization_ko.ts +++ b/data/translations/Internationalization_ko.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow 화살표 - + Set the Arrow as the paint tool 페인트 도구를 화살표로 설정 @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen 화면을 캡처할 수 없습니다 - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Enter로 눌러 화면을 캡처합니다. Space로 사이드 패널을 엽니다. - + Tool Settings @@ -154,12 +154,12 @@ Space로 사이드 패널을 엽니다. CircleCountTool - + Circle Counter 원형 카운터 - + Add an autoincrementing counter bubble @@ -208,57 +208,57 @@ Space로 사이드 패널을 엽니다. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error 오류 - + Unable to close active modal widgets - + &Take Screenshot 스크린샷 촬영(&T) - + &Open Launcher 런처 열기(&O) - + &Configuration 설정(&C) - + &About - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Space로 사이드 패널을 엽니다. 정보(&I) - + &Quit 종료(&Q) @@ -335,8 +335,12 @@ Space로 사이드 패널을 엽니다. + Restore + + + Reset - 초기화 + 초기화 @@ -349,7 +353,7 @@ Space로 사이드 패널을 엽니다. 지우기 - + Deletes the name 이름을 삭제하다 @@ -445,183 +449,183 @@ Space로 사이드 패널을 엽니다. GeneralConf - - + + Import 불러오기 - - - - + + + + Error 오류 - + Unable to read file. 파일을 읽을 수 없습니다. - - + + Unable to write file. 파일을 작성할 수 없습니다. - + Save File 파일을 저장 - + Confirm Reset 초기화 확인 - + Are you sure you want to reset the configuration? 설정을 초기화해도 괜찮습니까? - + Show help message 도움 메세지 보기 - + Show the help message at the beginning in the capture mode. 캡처 모드 시작에 도움 메세지 보기. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications 데스크톱 알림 사용 - + Show tray icon 트레이 아이콘 보기 - + Show the systemtray icon 시스템 트레이 아이콘 보기 - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File 설정 파일 - + Export 내보내기 - + Reset 초기화 - - + + Automatic check for updates - + Launch at startup 컴퓨터를 시작할 때 실행 - - + + Launch Flameshot Flameshot을 실행 - + Show welcome message on launch - + Copy URL after upload 업로드 이후 URL 복사 - + Copy URL and close window after upload 업로드 이후 URL을 복사하고 창 닫기 - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -664,6 +668,48 @@ Space로 사이드 패널을 엽니다. + + ImgS3Uploader + + URL copied to clipboard. + URL을 클립보드에 복사했습니다. + + + Error + 오류 + + + + ImgUploader + + Delete image + 이미지를 삭제 + + + Unable to open the URL. + URL을 열 수 없습니다. + + + URL copied to clipboard. + URL을 클립보드에 복사했습니다. + + + Screenshot copied to clipboard. + 스크린샷을 클립보드에 복사했습니다. + + + Copy URL + URL을 복사 + + + Open URL + URL 열기 + + + Image to Clipboard. + 이미지를 클립보드로. + + ImgurUploader @@ -811,12 +857,12 @@ Space로 사이드 패널을 엽니다. LineTool - + Line 직선 - + Set the Line as the paint tool 페인트 도구로 직선을 설정 @@ -850,12 +896,12 @@ Space로 사이드 패널을 엽니다. PencilTool - + Pencil 연필 - + Set the Pencil as the paint tool 페인트 도구로 연필을 설정 @@ -886,29 +932,16 @@ Space로 사이드 패널을 엽니다. 페인트 도구로 픽셀화를 설정 - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error 저장 오류 - + Capture saved as 캡처를 저장했습니다: @@ -930,17 +963,27 @@ Space로 사이드 패널을 엽니다. - + Error trying to save as 저장에 오류가 발생했습니다: - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1190,34 +1233,40 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture 캡처를 종료 - - + + Screenshot history - - + + Capture screen - + Show color picker 색상 선택기를 표시 - + Change the tool's thickness 도구 두께 변경 - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1225,12 +1274,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle 직사각형 - + Set the Rectangle as the paint tool 페인트 도구로 직사각형을 설정 @@ -1297,6 +1346,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1528,12 +1582,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text 텍스트 - + Add text to your capture 캡처에 텍스트를 추가 @@ -1615,10 +1669,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_nb_NO.ts b/data/translations/Internationalization_nb_NO.ts index 5d067b98..4fbef7b7 100644 --- a/data/translations/Internationalization_nb_NO.ts +++ b/data/translations/Internationalization_nb_NO.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow - + Set the Arrow as the paint tool @@ -128,13 +128,13 @@ CaptureWidget - + Unable to capture screen Impossible capturar la pantalla - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -143,7 +143,7 @@ Press Space to open the side panel. - + Tool Settings @@ -151,12 +151,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -205,52 +205,52 @@ Press Space to open the side panel. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Error - + Unable to close active modal widgets - + &Open Launcher - + &Configuration - + &About - + Check for updates - + &Latest Uploads @@ -259,12 +259,12 @@ Press Space to open the side panel. &Informació - + &Quit - + &Take Screenshot @@ -332,8 +332,12 @@ Press Space to open the side panel. + Restore + + + Reset - Reset + Reset @@ -346,7 +350,7 @@ Press Space to open the side panel. - + Deletes the name @@ -421,183 +425,183 @@ Press Space to open the side panel. GeneralConf - - + + Import Importar - - - - + + + + Error Error - + Unable to read file. Impossible llegir el fitxer. - - + + Unable to write file. Impossible escriure al fitxer. - + Save File Guardar Arxiu - + Confirm Reset Confirmar Reset - + Are you sure you want to reset the configuration? Esteu segur que voleu reiniciar la configuració? - + Show help message Mostra el missatge d'ajuda - + Show the help message at the beginning in the capture mode. Mostra el missatge d'ajuda en iniciar el mode de captura. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications Mostra les notificacions d'escriptori - + Show tray icon Mostra la icona en la barra de tasques - + Show the systemtray icon Mostra la icona en la barra de tasques - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Fitxer de Configuració - + Export Exportar - + Reset Reset - - + + Automatic check for updates - + Launch at startup Llançament a l'inici - - + + Launch Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -825,12 +829,12 @@ Press Space to open the side panel. LineTool - + Line - + Set the Line as the paint tool @@ -864,12 +868,12 @@ Press Space to open the side panel. PencilTool - + Pencil - + Set the Pencil as the paint tool @@ -900,19 +904,6 @@ Press Space to open the side panel. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject @@ -926,29 +917,39 @@ Press Space to open the side panel. - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as - + Save Error - + Capture saved as - + Error trying to save as @@ -1149,7 +1150,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1209,29 +1210,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Ix de la captura - - + + Screenshot history - - + + Capture screen - + Show color picker Mostra el selector de color - + Change the tool's thickness Canvia el gruix de l'eina @@ -1239,12 +1246,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle - + Set the Rectangle as the paint tool @@ -1310,6 +1317,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1541,12 +1553,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text - + Add text to your capture @@ -1628,10 +1640,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_nl.ts b/data/translations/Internationalization_nl.ts index 6d548892..37273ff4 100644 --- a/data/translations/Internationalization_nl.ts +++ b/data/translations/Internationalization_nl.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Cursor - + Set the Arrow as the paint tool Cursor instellen als verfgereedschap @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Kan scherm niet vastleggen - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Gebruik het muiswiel om de gereedschapsdikte aan te passen. Druk op spatie om het zijpaneel te openen. - + Tool Settings Gereedschapsinstellingen @@ -154,12 +154,12 @@ Druk op spatie om het zijpaneel te openen. CircleCountTool - + Circle Counter Cirkelteller - + Add an autoincrementing counter bubble Voeg een automatisch verhogende cirkelvormige teller toe @@ -208,57 +208,57 @@ Druk op spatie om het zijpaneel te openen. Controller - + New version %1 is available Er is een nieuwe versie beschikbaar: %1 - + You have the latest version Je beschikt over de nieuwste versie - + Failed to get information about the latest version. Er kan geen versie-informatie worden opgehaald. - + Error Foutmelding - + Unable to close active modal widgets De actieve, modale widgets kunnen niet worden gesloten - + &Take Screenshot Schermafdruk &maken - + &Open Launcher Starter &openen - + &Configuration &Configuratie - + &About &Over - + Check for updates Controleren op updates - + &Latest Uploads Recentste up&loads @@ -267,7 +267,7 @@ Druk op spatie om het zijpaneel te openen. &Informatie - + &Quit &Afsluiten @@ -335,8 +335,12 @@ Druk op spatie om het zijpaneel te openen. + Restore + + + Reset - Standaardwaarden + Standaardwaarden @@ -349,7 +353,7 @@ Druk op spatie om het zijpaneel te openen. Wissen - + Deletes the name Wist de naam @@ -428,183 +432,183 @@ Druk op spatie om het zijpaneel te openen. GeneralConf - - + + Import Importeren - - - - + + + + Error Foutmelding - + Unable to read file. Kan bestand niet uitlezen. - - + + Unable to write file. Kan bestand niet wegschrijven. - + Save File Bestand opslaan - + Confirm Reset Herstellen bevestigen - + Are you sure you want to reset the configuration? Weet je zeker dat je de standwaardwaarden van de configuratie wilt herstellen? - + Show help message Uitleg tonen - + Show the help message at the beginning in the capture mode. Toont een bericht met uitleg bij het openen van de vastlegmodus. - + Show the side panel button Zijpaneelknop tonen - + Show the side panel toggle button in the capture mode. Toont de zijpaneelknop in de vastlegmodus. - - + + Show desktop notifications Bureaubladmeldingen tonen - + Show tray icon Systeemvakpictogram tonen - + Show the systemtray icon Toont het systeemvakpictogram - - + + Confirmation required to delete screenshot from the latest uploads Schermfoto verwijderen uit recentste uploads bevestigen - + Configuration File Configuratiebestand - + Export Exporteren - + Reset Standaardwaarden - - + + Automatic check for updates Automatisch controleren op updates - + Launch at startup Automatisch opstarten - - + + Launch Flameshot Flameshot openen - + Show welcome message on launch Welkomstbericht tonen na opstarten - + Copy URL after upload URL kopiëren na uploaden - + Copy URL and close window after upload Kopieer de url en sluit het venster na het uploaden - + Save image after copy Afbeelding opslaan na kopiëren - + Save image file after copying it Sla de afbeelding op na deze gekopieerd te hebben - + Save Path Opslaglocatie - + Change... Wijzigen... - + Use fixed path for screenshots to save Schermfoto's altijd opslaan op dezelfde locatie - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) JPG-formaat gebruiken op klembord (standaard: png) - - + + Copy file path after save Bestandspad kopiëren na opslaan - + Choose a Folder Kies een map - + Unable to write to directory. Kan niet wegschrijven naar map. @@ -840,12 +844,12 @@ Druk op spatie om het zijpaneel te openen. LineTool - + Line Lijn - + Set the Line as the paint tool Lijn instellen als verfgereedschap @@ -879,12 +883,12 @@ Druk op spatie om het zijpaneel te openen. PencilTool - + Pencil Potlood - + Set the Pencil as the paint tool Potlood instellen als verfgereedschap @@ -918,26 +922,24 @@ Druk op spatie om het zijpaneel te openen. QHotkey - Failed to register %1. Error: %2 - '%1' kan niet worden ingesteld. Foutmelding: %2 + '%1' kan niet worden ingesteld. Foutmelding: %2 - Failed to unregister %1. Error: %2 - '%1' kan niet worden vrijgegeven. Foutmelding: %2 + '%1' kan niet worden vrijgegeven. Foutmelding: %2 QObject - + Save Error Fout tijdens opslaan - + Capture saved as Schermafdruk opgeslagen als @@ -959,17 +961,27 @@ Druk op spatie om het zijpaneel te openen. - + Error trying to save as Fout tijdens opslaan als - + Save screenshot Schermfoto opslaan - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as De schermfoto is opgeslagen en gekopieerd naar het klembord als @@ -1170,7 +1182,7 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' Standaard wordt Flameshot op de achtergrond uitgevoerd en toont daarbij een systeemvakpictogram. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Hallo, hier ben ik! Klik op het systeemvakpictogram om een schermfoto te maken of rechtsklik om meer opties te tonen. @@ -1230,29 +1242,35 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' Tekst in tekstvak - + + + Delete current tool + + + + Quit capture Vastleggen afsluiten - - + + Screenshot history Schermfotogeschiedenis - - + + Capture screen Scherm vastleggen - + Show color picker Kleurkiezer tonen - + Change the tool's thickness Wijzig de gereedschapsdikte @@ -1260,12 +1278,12 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' RectangleTool - + Rectangle Rechthoek - + Set the Rectangle as the paint tool Rechthoek instellen als verfgereedschap @@ -1332,6 +1350,11 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Druk op Esc om af te breken of Backspace om de sneltoets uit te schakelen. @@ -1563,12 +1586,12 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' TextTool - + Text Tekst - + Add text to your capture Voeg tekst toe aan je schermafdruk @@ -1650,10 +1673,15 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' UtilityPanel - + Close Sluiten + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_nl_NL.ts b/data/translations/Internationalization_nl_NL.ts index 1602f89b..fbeda00e 100644 --- a/data/translations/Internationalization_nl_NL.ts +++ b/data/translations/Internationalization_nl_NL.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Cursor - + Set the Arrow as the paint tool Cursor instellen als verfgereedschap @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Kan scherm niet vastleggen - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Gebruik het muiswiel om de gereedschapsdikte aan te passen. Druk op spatie om het zijpaneel te openen. - + Tool Settings Gereedschapsinstellingen @@ -154,12 +154,12 @@ Druk op spatie om het zijpaneel te openen. CircleCountTool - + Circle Counter Cirkelteller - + Add an autoincrementing counter bubble Voeg een automatisch verhogende cirkelvormige teller toe @@ -208,57 +208,57 @@ Druk op spatie om het zijpaneel te openen. Controller - + New version %1 is available Er is een nieuwe versie beschikbaar: %1 - + You have the latest version Je beschikt over de nieuwste versie - + Failed to get information about the latest version. Er kan geen versie-informatie worden opgehaald. - + Error Foutmelding - + Unable to close active modal widgets De actieve, modale widgets kunnen niet worden gesloten - + &Take Screenshot Schermafdruk &maken - + &Open Launcher Starter &openen - + &Configuration &Configuratie - + &About &Over - + Check for updates Controleren op updates - + &Latest Uploads Recentste up&loads @@ -267,7 +267,7 @@ Druk op spatie om het zijpaneel te openen. &Informatie - + &Quit &Afsluiten @@ -335,8 +335,12 @@ Druk op spatie om het zijpaneel te openen. + Restore + + + Reset - Standaardwaarden + Standaardwaarden @@ -349,7 +353,7 @@ Druk op spatie om het zijpaneel te openen. Wissen - + Deletes the name Wist de naam @@ -428,183 +432,183 @@ Druk op spatie om het zijpaneel te openen. GeneralConf - - + + Import Importeren - - - - + + + + Error Foutmelding - + Unable to read file. Kan bestand niet uitlezen. - - + + Unable to write file. Kan bestand niet wegschrijven. - + Save File Bestand opslaan - + Confirm Reset Herstellen bevestigen - + Are you sure you want to reset the configuration? Weet je zeker dat je de standwaardwaarden van de configuratie wilt herstellen? - + Show help message Uitleg tonen - + Show the help message at the beginning in the capture mode. Toont een bericht met uitleg bij het openen van de vastlegmodus. - + Show the side panel button Zijpaneelknop tonen - + Show the side panel toggle button in the capture mode. Toont de zijpaneelknop in de vastlegmodus. - - + + Show desktop notifications Bureaubladmeldingen tonen - + Show tray icon Systeemvakpictogram tonen - + Show the systemtray icon Toont het systeemvakpictogram - - + + Confirmation required to delete screenshot from the latest uploads Schermfoto verwijderen uit recentste uploads bevestigen - + Configuration File Configuratiebestand - + Export Exporteren - + Reset Standaardwaarden - - + + Automatic check for updates Automatisch controleren op updates - + Launch at startup Automatisch opstarten - - + + Launch Flameshot Flameshot openen - + Show welcome message on launch Welkomstbericht tonen na opstarten - + Copy URL after upload URL kopiëren na uploaden - + Copy URL and close window after upload Kopieer de url en sluit het venster na het uploaden - + Save image after copy Afbeelding opslaan na kopiëren - + Save image file after copying it Sla de afbeelding op na deze gekopieerd te hebben - + Save Path Opslaglocatie - + Change... Wijzigen... - + Use fixed path for screenshots to save Schermfoto's altijd opslaan op dezelfde locatie - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) JPG-formaat gebruiken op klembord (standaard: png) - - + + Copy file path after save Bestandspad kopiëren na opslaan - + Choose a Folder Kies een map - + Unable to write to directory. Kan niet wegschrijven naar map. @@ -840,12 +844,12 @@ Druk op spatie om het zijpaneel te openen. LineTool - + Line Lijn - + Set the Line as the paint tool Lijn instellen als verfgereedschap @@ -879,12 +883,12 @@ Druk op spatie om het zijpaneel te openen. PencilTool - + Pencil Potlood - + Set the Pencil as the paint tool Potlood instellen als verfgereedschap @@ -918,26 +922,24 @@ Druk op spatie om het zijpaneel te openen. QHotkey - Failed to register %1. Error: %2 - '%1' kan niet worden ingesteld. Foutmelding: %2 + '%1' kan niet worden ingesteld. Foutmelding: %2 - Failed to unregister %1. Error: %2 - '%1' kan niet worden vrijgegeven. Foutmelding: %2 + '%1' kan niet worden vrijgegeven. Foutmelding: %2 QObject - + Save Error Fout tijdens opslaan - + Capture saved as Schermafdruk opgeslagen als @@ -959,17 +961,27 @@ Druk op spatie om het zijpaneel te openen. - + Error trying to save as Fout tijdens opslaan als - + Save screenshot Schermfoto opslaan - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as De schermfoto is opgeslagen en gekopieerd naar het klembord als @@ -1170,7 +1182,7 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' Standaard wordt Flameshot op de achtergrond uitgevoerd en toont daarbij een systeemvakpictogram. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Hallo, hier ben ik! Klik op het systeemvakpictogram om een schermfoto te maken of rechtsklik om meer opties te tonen. @@ -1230,29 +1242,35 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' Tekst in tekstvak - + + + Delete current tool + + + + Quit capture Vastleggen afsluiten - - + + Screenshot history Schermfotogeschiedenis - - + + Capture screen Scherm vastleggen - + Show color picker Kleurkiezer tonen - + Change the tool's thickness Wijzig de gereedschapsdikte @@ -1260,12 +1278,12 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' RectangleTool - + Rectangle Rechthoek - + Set the Rectangle as the paint tool Rechthoek instellen als verfgereedschap @@ -1332,6 +1350,11 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Druk op Esc om af te breken of Backspace om de sneltoets uit te schakelen. @@ -1563,12 +1586,12 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' TextTool - + Text Tekst - + Add text to your capture Voeg tekst toe aan je schermafdruk @@ -1650,10 +1673,15 @@ Mogelijk moet je het '#'-teken insluiten. Voorbeeld: '\#FFF' UtilityPanel - + Close Sluiten + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_pl.ts b/data/translations/Internationalization_pl.ts index f3f4af3f..64e9aa1e 100644 --- a/data/translations/Internationalization_pl.ts +++ b/data/translations/Internationalization_pl.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher Uruchamianie aplikacji - + Choose an app to open the capture Wybierz aplikację do otwierania zrzutu @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With Otwórz w - + Launch in terminal Otwórz w terminalu - + Keep open after selection Pozostaw otwarte po zaznaczeniu - - + + Error Błąd - + Unable to write in Nie można zapisać - + Unable to launch in terminal. Nie można uruchomić w terminalu. @@ -51,12 +51,12 @@ ArrowTool - + Arrow Strzałka - + Set the Arrow as the paint tool Rysowanie strzałek @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>Tryb przechwytywania</b> - + Rectangular Region Zaznaczony obszar - + Full Screen (Current Display) Pełny ekran (Wszystkie monitory) - + Full Screen (All Monitors) Pełny ekran (Wszystkie monitory) - + No Delay Bez opóźnienia - + second sekunda - + seconds sekundy - + Take new screenshot Wykonaj nowy zrzut ekranu - + Area: Obszar: - + Delay: Opóźnienie: @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Nie można przechwycić ekranu - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -145,7 +145,7 @@ Prawy klik, aby pokazać próbnik kolorów. Spacja, aby pokazać panel boczny. - + Tool Settings Ustawienia narzędzi @@ -153,12 +153,12 @@ Spacja, aby pokazać panel boczny. CircleCountTool - + Circle Counter Licznik - + Add an autoincrementing counter bubble Dodaj automatycznie zwiększający się bąbelek licznika @@ -166,12 +166,12 @@ Spacja, aby pokazać panel boczny. CircleTool - + Circle Okręgi - + Set the Circle as the paint tool Rysowanie okręgów i elips @@ -179,27 +179,27 @@ Spacja, aby pokazać panel boczny. ConfigWindow - + Configuration Konfiguracja - + Interface Interfejs - + Filename Editor Edytor nazw plików - + General Ogólne - + Shortcuts Skróty @@ -207,57 +207,57 @@ Spacja, aby pokazać panel boczny. Controller - + New version %1 is available Nowa wersja %1 jest dostępna - + You have the latest version Masz najnowszą wersję - + Failed to get information about the latest version. Nie udało się uzyskać informacji o najnowszej wersji. - + Error Błąd - + Unable to close active modal widgets Nie można zamknąć aktywnych widgetów modalnych - + &Take Screenshot &Zrzut ekranu - + &Open Launcher Pokaż &okno - + &Configuration &Konfiguracja - + &About O progr&amie - + Check for updates Sprawdź aktualizacje - + &Latest Uploads &Ostatnio wysłane @@ -266,7 +266,7 @@ Spacja, aby pokazać panel boczny. &Informacje - + &Quit &Wyjdź @@ -274,12 +274,12 @@ Spacja, aby pokazać panel boczny. CopyTool - + Copy Kopiuj - + Copy the selection into the clipboard Kopiuj zaznaczony obszar do schowka @@ -287,7 +287,7 @@ Spacja, aby pokazać panel boczny. DBusUtils - + Unable to connect via DBus Nie można się połączyć za pomocą DBus @@ -295,12 +295,12 @@ Spacja, aby pokazać panel boczny. ExitTool - + Exit Wyjdź - + Leave the capture screen Opuść ekran przechwytywania @@ -308,47 +308,51 @@ Spacja, aby pokazać panel boczny. FileNameEditor - + Edit the name of your captures: Edycja wzorca nazwy plików: - + Edit: Edytuj: - + Preview: Podgląd: - + Save Zapisz - + Saves the pattern Zapisuje wzorzec - - Reset - Reset + + Restore + - + Reset + Reset + + + Restores the saved pattern Resetuje wzorzec - + Clear Wyczyść - + Deletes the name Czyści wzorzec @@ -443,178 +447,183 @@ Spacja, aby pokazać panel boczny. GeneralConf - - + + Import Import - - - - + + + + Error Błąd - + Unable to read file. Nie można odczytać pliku. - - + + Unable to write file. Nie można zapisać pliku. - + Save File Zapisz plik - + Confirm Reset Potwierdź Reset - + Are you sure you want to reset the configuration? Czy na pewno chcesz zresetować konfigurację? - + Show help message Pokaż podpowiedzi - + Show the help message at the beginning in the capture mode. Pokaż podpowiedzi na początku trybu przechwytywania. - + Show the side panel button Pokaż przycisk panelu bocznego - + Show the side panel toggle button in the capture mode. Pokaż przełącznik panelu bocznego w trybie przechwytywania. - - + + Show desktop notifications Pokaż powiadomienia ekranowe - + Show tray icon Pokaż ikonę w trayu - + Show the systemtray icon Pokaż ikonę w zasobniku systemowym - - + + Confirmation required to delete screenshot from the latest uploads Potwierdź aby usunąć zrzuty z ostatnio wysłanych - + Configuration File Plik konfiguracyjny - + Export Eksport - + Reset Reset - - + + Automatic check for updates Automatycznie sprawdzaj aktualizacje - + Launch at startup Uruchom podczas startu - - + + Launch Flameshot Uruchom Flameshot - + Show welcome message on launch Pokaż wiadomość powitalną przy starcie - + Copy URL after upload Kopiuj adres URL po wysłaniu - + Copy URL and close window after upload Kopiuj adres URL po wysłaniu i zamknij okno - + Save image after copy Zapisz obraz po skopiowaniu - + Save image file after copying it Zapisz plik obrazu po skopiowaniu - + Save Path Zapisz ścieżkę - + Change... Zmień... - + Use fixed path for screenshots to save Użyj ustalonej ścieżki do zapisywania zrzutów - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) Użyj formatu JPG dla schowka (domyślnie PNG) - - + + Copy file path after save Skopiuj ścieżkę pliku po zapisaniu - + Choose a Folder Wybież katalog - + Unable to write to directory. Nie można zapisać do katalogu. @@ -627,32 +636,32 @@ Spacja, aby pokazać panel boczny. Ostatnio wysłane - + Screenshots history is empty Historia zrzutów jest pusta - + Copy URL Kopiuj URL - + URL copied to clipboard. URL skopiowany do schowka. - + Open in browser Otwórz w przeglądarce - + Confirm to delete Potwierdź usunięcie - + Are you sure you want to delete a screenshot from the latest uploads and server? Czy na pewno chcesz usunąć zrzut ekranu z ostatnio wysłanych i z serwera? @@ -710,48 +719,48 @@ Spacja, aby pokazać panel boczny. ImgurUploader - + Upload to Imgur Wyślij do Imgur - + Uploading Image Wysyłanie obrazka - + Copy URL Kopiuj URL - + Open URL Otwórz URL - + Delete image Usuń obrazek - + Image to Clipboard. Obrazek do schowka. + - Unable to open the URL. Nie można otworzyć adresu URL. - + URL copied to clipboard. URL skopiowany do schowka. - + Screenshot copied to clipboard. Zrzut ekranu skopiowany do schowka. @@ -759,12 +768,12 @@ Spacja, aby pokazać panel boczny. ImgurUploaderTool - + Image Uploader Uploader obrazów - + Upload the selection to Imgur Wyślij zaznaczenie do Imgur @@ -772,7 +781,7 @@ Spacja, aby pokazać panel boczny. InfoWindow - + About O programie @@ -837,12 +846,12 @@ Spacja, aby pokazać panel boczny. Działanie - + <u><b>License</b></u> <u><b>Licencja</b></u> - + <u><b>Version</b></u> <u><b>Wersja</b></u> @@ -854,12 +863,12 @@ Spacja, aby pokazać panel boczny. LineTool - + Line Linia - + Set the Line as the paint tool Ustawia linię jako narzędzie do rysowania @@ -867,12 +876,12 @@ Spacja, aby pokazać panel boczny. MarkerTool - + Marker Marker - + Set the Marker as the paint tool Ustawia Marker jako narzędzie rysowania @@ -880,12 +889,12 @@ Spacja, aby pokazać panel boczny. MoveTool - + Move Przesuwanie - + Move the selection area Przesuwa zaznaczenie @@ -893,12 +902,12 @@ Spacja, aby pokazać panel boczny. PencilTool - + Pencil Ołówek - + Set the Pencil as the paint tool Ustawia ołówek jako narzędzie do rysowania @@ -906,12 +915,12 @@ Spacja, aby pokazać panel boczny. PinTool - + Pin Tool Narzędzie przypinania - + Pin image on the desktop Przypnij obrazek do pulpitu @@ -919,12 +928,12 @@ Spacja, aby pokazać panel boczny. PixelateTool - + Pixelate Zamazywanie - + Set Pixelate as the paint tool Ustaw Zamazywanie jako narzędzie malowania @@ -932,177 +941,185 @@ Spacja, aby pokazać panel boczny. QHotkey - Failed to register %1. Error: %2 - Nie udało się zarejsestrować %1. Błąd: %2 + Nie udało się zarejsestrować %1. Błąd: %2 - Failed to unregister %1. Error: %2 - Nie udało się wyrejstrować %1. Błąd: %2 + Nie udało się wyrejstrować %1. Błąd: %2 QObject - + Save Error Błąd zapisu - - + + Capture saved as Zaznaczenie zapisano jako - + Capture saved to clipboard. Zrzut skopiowano do schowka. - - + + Capture saved to clipboard Zrzut skopiowano do schowka - + Error while saving to clipboard Błąd podczas kopiowania do schowka - - + + Error trying to save as Błąd przy próbie zapisu jako - + Save screenshot Zapisz zrzut ekranu - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as Zrzut jest zapisywany i kopiowany do schowka jako - - - - - + + + + + Unable to connect via DBus Nie udało się połączyć za pomocą DBus - + Powerful yet simple to use screenshot software. Zaawansowany lecz prosty w użyciu program do zrzutów ekranu. - + See Zobacz - + Capture the entire desktop. Przechwyć cały pulpit. - + Open the capture launcher. Otwórz program do zrzutów. - + Start a manual capture in GUI mode. Rozpocznij przechwytywanie w trybie GuI. - + Configure Konfiguruj - + Capture a single screen. Przechwyć pojedynczy ekran. - + Path where the capture will be saved Ścieżka do której zrzut zostanie zapisany - + Save the capture to the clipboard Zapisz zrzut do schowka - + Delay time in milliseconds Opóźnienie w milisekundach - + Set the filename pattern Ustaw wzorzec pliku - + Enable or disable the trayicon Włącz lub wyłącz ikonę w trayu - + Enable or disable run at startup Włącz lub wyłącz uruchamianie przy starcie - + Show the help message in the capture mode Pokaż pomoc w trybie przechwytywania - + Define the main UI color Zdefiniuj główny kolor UI - + Define the contrast UI color Zdefiniuj kontrastowy kolor UI - + Print raw PNG capture Wydrukuj nieprzetworzony zrzut PNG - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified Wydrukuj geometrię zaznaczenia w formacie W H X Y. Nic nie robi jeśli określono źródła - + Define the screen to capture Zdefiniuj ekran do przechwycenia - + default: screen containing the cursor domyślnie: ekran zawiera kursor - + Screen number Numer ekranu - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1119,67 +1136,67 @@ You may need to escape the '#' sign as in '\#FFF' Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF' - + Invalid delay, it must be higher than 0 Niepoprawne opóźnienie, musi być większe od 0 - + Invalid screen number, it must be non negative Niepoprawny numer ekranu, musi być liczbą nieujemną - + Invalid path, it must be a real path in the system Niepoprawna ścieżka, to musi być rzeczywista ścieżka w systemie - + Invalid value, it must be defined as 'true' or 'false' Niepoprawna wartość, musi być zdefiniowana jako 'true' lub 'false' - + Error Błąd - + Unable to write in Nie można zapisać w - + URL copied to clipboard. URL skopiowany do schowka. - + Options Opcje - + Arguments Argumenty - + arguments argumenty - + Usage Użycie - + options opcje - + Per default runs Flameshot in the background and adds a tray icon for configuration. Domyślnie uruchamia Flameshot w tle i dodaje ikonę w zasobniku do konfiguracji @@ -1188,7 +1205,7 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< Domyślnie uruchamia Flameshot w tle i dodaje ikonę w zasobniku systemowym do konfiguracji. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Cześć, jestem tutaj! Kliknij ikonę w zasobniku, aby zrobić zrzut ekranu, lub kliknij prawym przyciskiem, aby zobaczyć więcej opcji. @@ -1248,29 +1265,35 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< Zatwierdź tekst w obszarze tekstowym - + + + Delete current tool + + + + Quit capture Zakończ przechwytywanie - - + + Screenshot history Historia zrzutów ekranu - - + + Capture screen Przechwyć ekran - + Show color picker Pokaż próbnik kolorów - + Change the tool's thickness Zmień grubość narzędzia @@ -1278,12 +1301,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< RectangleTool - + Rectangle Prostokąt - + Set the Rectangle as the paint tool Ustawia prostokąt jako narzędzie do rysowania @@ -1291,12 +1314,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< RedoTool - + Redo Ponów - + Redo the next modification Ponów następną modyfikację @@ -1304,12 +1327,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< SaveTool - + Save Zapisz - + Save the capture Zapisz zaznaczenie @@ -1317,7 +1340,7 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< ScreenGrabber - + Unable to capture screen Nie można przechwycić ekranu @@ -1325,12 +1348,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< SelectionTool - + Rectangular Selection Zaznaczenie prostokątne - + Set Selection as the paint tool Ustawia zaznaczenie prostokątne jako narzędzie do rysowania @@ -1338,17 +1361,22 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< SetShortcutDialog - + Set Shortcut Ustaw skróty - + Enter new shortcut to change Wprowadź nowy skrót do zmiany - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Naciśnij Esc aby anulować lub Backspace aby wyłączyć skrót klawiszowy. @@ -1356,22 +1384,22 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< ShortcutsWidget - + Hot Keys Klawisze Skrótów - + Available shortcuts in the screen capture mode. Dostępne skróty w trybie przechwytywania obrazu. - + Description Opis - + Key Klawisz @@ -1379,35 +1407,61 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< SidePanelWidget - + Active thickness: Grubość: - + Active color: Kolor: - + Press ESC to cancel Wciśnij ESC, aby anulować - + Grab Color Pobierz kolor + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator Miernik zaznaczenia - + Show the dimensions of the selection (X Y) Pokazuje wymiary zaznaczenia (X Y) @@ -1415,107 +1469,107 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< StrftimeChooserWidget - + Century (00-99) Wiek (00-99) - + Year (00-99) Rok (00-99) - + Year (2000) Rok (2000) - + Month Name (jan) Nazwa miesiąca (cze) - + Month Name (january) Nazwa miesiąca (czerwiec) - + Month (01-12) Miesiąc (01-12) - + Week Day (1-7) Dzień tygodnia (1-7) - + Week (01-53) Tydzień (01-53) - + Day Name (mon) Nazwa dniaa (pią) - + Day Name (monday) Nazwa dnia (piątek) - + Day (01-31) Dzień (01-31) - + Day of Month (1-31) Dzień miesiąca (1-31) - + Day (001-366) Dzień (001-366) - + Time (%H-%M-%S) Czas (%H-%M-%S) - + Time (%H-%M) Czas (%H-%M) - + Hour (00-23) Godzina (00-23) - + Hour (01-12) Godzina (01-12) - + Minute (00-59) Minuta (00-59) - + Second (00-59) Sekunda (00-59) - + Full Date (%m/%d/%y) Data (%m/%d/%y) - + Full Date (%Y-%m-%d) Data (%Y-%m-%d) @@ -1531,22 +1585,22 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< TextConfig - + StrikeOut Przekreślenie - + Underline Podkreślenie - + Bold Pogrubienie - + Italic Kursywa @@ -1554,12 +1608,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< TextTool - + Text Tekst - + Add text to your capture Dodaje tekst do zrzutu @@ -1567,37 +1621,37 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< UIcolorEditor - + UI Color Editor Edytor kolorów interfejsu - + Change the color moving the selectors and see the changes in the preview buttons. Zmień kolor przesuwając selektory i obserwując podgląd przycisków. - + Select a Button to modify it Wybierz przycisk do zmodyfikowania - + Main Color Kolor główny - + Click on this button to set the edition mode of the main color. Kliknij na przycisk aby móc modyfikować kolor główny. - + Contrast Color Kolor kontrastowy - + Click on this button to set the edition mode of the contrast color. Kliknij na przycisk aby móc modyfikować kolor kontrastowy. @@ -1605,12 +1659,12 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< UndoTool - + Undo Cofnij - + Undo the last modification Cofnij ostatnią zmianę @@ -1641,25 +1695,30 @@ Może być konieczne opuszczenie znaku '#' jak np.: '\#FFF'< UtilityPanel - + Close Zamknij + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: Przezroczystość obszaru poza zaznaczeniem: - + Button Selection Wybór przycisków - + Select All Wybierz wszystkie diff --git a/data/translations/Internationalization_pt_BR.ts b/data/translations/Internationalization_pt_BR.ts index a50b85ce..560e9cc5 100644 --- a/data/translations/Internationalization_pt_BR.ts +++ b/data/translations/Internationalization_pt_BR.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher Iniciar app - + Choose an app to open the capture Escolha uma aplicação para abrir a captura @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With Abrir Com - + Launch in terminal Abrir no terminal - + Keep open after selection Manter aberto após seleção - - + + Error Erro - + Unable to write in Não é possível escrever em - + Unable to launch in terminal. Não foi possível abrir no terminal. @@ -51,12 +51,12 @@ ArrowTool - + Arrow Flecha - + Set the Arrow as the paint tool Usar a Flecha como ferramenta de desenho @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>Modo Captura</b> - + Rectangular Region Região Retangular - + Full Screen (Current Display) Tela Inteira (Monitor Atual) - + Full Screen (All Monitors) Tela Inteira (Todos os Monitores) - + No Delay Sem atraso - + second segundo - + seconds segundos - + Take new screenshot Tirar uma nova captura de tela - + Area: Área: - + Delay: Atraso: @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Não foi possível capturar a tela - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Use a roda do mouse para aumentar a grossura do pincel. Pressione espaço para abrir o painel lateral. - + Tool Settings Configurações das ferramentas @@ -154,12 +154,12 @@ Pressione espaço para abrir o painel lateral. CircleCountTool - + Circle Counter Contorno do círculo - + Add an autoincrementing counter bubble Adicionar um balão de contador de incremento automático @@ -167,12 +167,12 @@ Pressione espaço para abrir o painel lateral. CircleTool - + Circle Círculo - + Set the Circle as the paint tool Usar o Círculo como ferramenta de desenho @@ -180,27 +180,27 @@ Pressione espaço para abrir o painel lateral. ConfigWindow - + Configuration Configuração - + Interface Interface - + Filename Editor Editor de nome de arquivo - + General Geral - + Shortcuts Atalhos @@ -208,57 +208,57 @@ Pressione espaço para abrir o painel lateral. Controller - + New version %1 is available Nova versão %1 está disponível - + You have the latest version Você está com a versão mais recente - + Failed to get information about the latest version. Não foi possível obter informações sobre a versão mais recente. - + Error Erro - + Unable to close active modal widgets Incapaz de fechar widgets modais ativos - + &Take Screenshot &Tirar Captura de Tela - + &Open Launcher &Abrir Launcher - + &Configuration &Configuração - + &About &Sobre - + Check for updates Verifique se há atualizações - + &Latest Uploads &Últimos Envios @@ -267,7 +267,7 @@ Pressione espaço para abrir o painel lateral. &Informações - + &Quit &Sair @@ -275,12 +275,12 @@ Pressione espaço para abrir o painel lateral. CopyTool - + Copy Copiar - + Copy the selection into the clipboard Copie a seleção para a área de transferência @@ -288,7 +288,7 @@ Pressione espaço para abrir o painel lateral. DBusUtils - + Unable to connect via DBus Não foi possível conectar via DBus @@ -296,12 +296,12 @@ Pressione espaço para abrir o painel lateral. ExitTool - + Exit Sair - + Leave the capture screen Sair da ferramenta de captura @@ -309,47 +309,51 @@ Pressione espaço para abrir o painel lateral. FileNameEditor - + Edit the name of your captures: Edite o nome das suas capturas: - + Edit: Editar: - + Preview: Pré-visualização: - + Save Salvar - + Saves the pattern Salva o padrão - - Reset - Restaurar + + Restore + - + Reset + Restaurar + + + Restores the saved pattern Restaura o padrão salvo - + Clear Limpar - + Deletes the name Deletar o nome @@ -476,178 +480,183 @@ Pressione espaço para abrir o painel lateral. GeneralConf - - + + Import Importar - - - - + + + + Error Erro - + Unable to read file. Incapaz de ler o arquivo. - - + + Unable to write file. Incapaz de gravar o arquivo. - + Save File Salvar Arquivo - + Confirm Reset Confirmar redefinição - + Are you sure you want to reset the configuration? Tem certeza que deseja redefinir a configuração? - + Show help message Mostrar mensagem de ajuda - + Show the help message at the beginning in the capture mode. Mostrar mensagem de ajuda no início do modo de captura. - + Show the side panel button Mostrar botão no painel lateral - + Show the side panel toggle button in the capture mode. Mostra o botão de alternância do painel lateral no modo de captura. - - + + Show desktop notifications Mostrar notificações na área de trabalho - + Show tray icon Mostrar ícone na bandeja - + Show the systemtray icon Mostra o ícone na bandeja do sistema - - + + Confirmation required to delete screenshot from the latest uploads Confirmação necessária para excluir a captura de tela dos uploads mais recentes - + Configuration File Arquivo de configuração - + Export Exportar - + Reset Redefinir - - + + Automatic check for updates Verificação automática de atualizações - + Launch at startup Eexecutar junto ao sistema - - + + Launch Flameshot Executar Flameshot - + Show welcome message on launch Mostrar mensagem de boas-vindas na inicialização - + Copy URL after upload Copiar URL após upload - + Copy URL and close window after upload Copiar URL e fechar janela após upload - + Save image after copy Salvar imagem após copiar - + Save image file after copying it Salve o arquivo de imagem após copiá-lo - + Save Path Salvar Caminho - + Change... Alterar... - + Use fixed path for screenshots to save Use o caminho fixo para salvar captura de tela - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) Use o formato JPG para a área de transferência (PNG padrão) - - + + Copy file path after save Copiar o caminho do arquivo após salvar - + Choose a Folder Escolha uma pasta - + Unable to write to directory. Incapaz de escrever no diretório. @@ -660,32 +669,32 @@ Pressione espaço para abrir o painel lateral. Últimos Envios - + Screenshots history is empty O histórico de capturas de tela está vazio - + Copy URL Copiar URL - + URL copied to clipboard. URL copiada para a área de transferência. - + Open in browser Abrir no navegador - + Confirm to delete Confirme para deletar - + Are you sure you want to delete a screenshot from the latest uploads and server? Tem certeza de que deseja deletar uma captura de tela dos últimos uploads e servidor? @@ -743,48 +752,48 @@ Pressione espaço para abrir o painel lateral. ImgurUploader - + Upload to Imgur Enviar para Imgur - + Uploading Image Enviando Imagem - + Copy URL Copiar URL - + Open URL Abrir URL - + Delete image Deletar imagem - + Image to Clipboard. Imagem na área de transferência. + - Unable to open the URL. Não foi possível abrir a URL. - + URL copied to clipboard. URL copiada para a área de transferência. - + Screenshot copied to clipboard. Captura de tela copiada para a área de transferência. @@ -792,12 +801,12 @@ Pressione espaço para abrir o painel lateral. ImgurUploaderTool - + Image Uploader Enviador de imagens - + Upload the selection to Imgur Envia a seleção ao Imgur @@ -805,7 +814,7 @@ Pressione espaço para abrir o painel lateral. InfoWindow - + About Sobre @@ -870,12 +879,12 @@ Pressione espaço para abrir o painel lateral. Descrição - + <u><b>License</b></u> <u><b>Licença</b></u> - + <u><b>Version</b></u> <u><b>Versão</b></u> @@ -887,12 +896,12 @@ Pressione espaço para abrir o painel lateral. LineTool - + Line Linha - + Set the Line as the paint tool Usar a Linha como ferramenta de desenho @@ -900,12 +909,12 @@ Pressione espaço para abrir o painel lateral. MarkerTool - + Marker Marcador - + Set the Marker as the paint tool Usar o marcador como ferramenta de desenho @@ -913,12 +922,12 @@ Pressione espaço para abrir o painel lateral. MoveTool - + Move Mover - + Move the selection area Mover a área de seleção @@ -926,12 +935,12 @@ Pressione espaço para abrir o painel lateral. PencilTool - + Pencil Pincel - + Set the Pencil as the paint tool Usar o Lápis como ferramenta de desenho @@ -939,12 +948,12 @@ Pressione espaço para abrir o painel lateral. PinTool - + Pin Tool Ferramenta de fixação - + Pin image on the desktop Fixar imagem na área de trabalho @@ -952,12 +961,12 @@ Pressione espaço para abrir o painel lateral. PixelateTool - + Pixelate Pixelador - + Set Pixelate as the paint tool Usar Pixelador na ferramenta de pintura @@ -965,177 +974,185 @@ Pressione espaço para abrir o painel lateral. QHotkey - Failed to register %1. Error: %2 - Falha ao registrar %1. Erro: %2 + Falha ao registrar %1. Erro: %2 - Failed to unregister %1. Error: %2 - Falha ao cancelar o registro %1. Erro: %2 + Falha ao cancelar o registro %1. Erro: %2 QObject - + Save Error Erro ao salvar - - + + Capture saved as Captura salva como - + Capture saved to clipboard. Captura salva na área de transferência. - - + + Capture saved to clipboard Captura salva na área de transferência - + Error while saving to clipboard Erro ao salvar na área de transferência - - + + Error trying to save as Erro ao tentar salvar como - + Save screenshot Salvar captura de tela - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as A captura é salva e copiada para a área de transferência como - - - - - + + + + + Unable to connect via DBus Não foi possível conectar via DBus - + Powerful yet simple to use screenshot software. Software de captura de tela poderoso, mas simples de usar. - + See Ver - + Capture the entire desktop. Capture toda a área de trabalho. - + Open the capture launcher. Abrir a ferramente de captura. - + Start a manual capture in GUI mode. Iniciar uma captura manual no modo GUI. - + Configure Configurar - + Capture a single screen. Capturar uma única tela. - + Path where the capture will be saved Caminho onde a captura será salva - + Save the capture to the clipboard Salvar a captura na Área de Transferência - + Delay time in milliseconds Tempo do atraso em milissegundos - + Set the filename pattern Defina o padrão do nome do arquivo - + Enable or disable the trayicon Ativar ou desativar o ícone de bandeja - + Enable or disable run at startup Ativar ou desativar a execução na inicialização - + Show the help message in the capture mode Mostrar a mensagem de ajuda no modo captura - + Define the main UI color Defina a cor principal da IU - + Define the contrast UI color Defina a cor de contraste da IU - + Print raw PNG capture Imprimir captura PNG bruta - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified Imprime a geometria da seleção no formato W H X Y. Não faz nada se raw for especificado - + Define the screen to capture Defina a tela a ser capturada - + default: screen containing the cursor padrão: tela contendo o cursor - + Screen number Número da tela - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1152,62 +1169,62 @@ You may need to escape the '#' sign as in '\#FFF' Você pode ter que invalidar o sinal '#', por exemplo '\#FFF' - + Invalid delay, it must be higher than 0 Atraso inválido, deve ser maior que 0 - + Invalid screen number, it must be non negative Número de tela inválido, deve ser maior que zero - + Invalid path, it must be a real path in the system Caminho inválido, deve ser um caminho real no sistema - + Invalid value, it must be defined as 'true' or 'false' Valor inválido, deve ser definido como 'verdadeiro' ou 'falso' - + Error Erro - + Unable to write in Não foi possível escrever em - + Options Opções - + Arguments Argumentos - + arguments argumentos - + Usage Uso - + options opções - + Per default runs Flameshot in the background and adds a tray icon for configuration. Por padrão, o Flameshot é executado em segundo plano e adiciona um ícone de bandeja para configuração. @@ -1216,12 +1233,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos Por padrão roda Flameshot no background e adiciona um ícone na bandeija para configuração. - + URL copied to clipboard. URL copiada para a área de transferência. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Ola, eu estou aqui! Clique no ícone na bandeja para fazer uma captura de tela ou clique com o botão direito para ver mais opções. @@ -1281,29 +1298,35 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos Confirmar texto na área de texto - + + + Delete current tool + + + + Quit capture Sair da captura - - + + Screenshot history Histórico de captura de tela - - + + Capture screen Captura de tela - + Show color picker Mostrar seletor de cores - + Change the tool's thickness Alterar a espessura da ferramenta @@ -1311,12 +1334,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos RectangleTool - + Rectangle Retângulo - + Set the Rectangle as the paint tool Usar o Retângulo como ferramenta de desenho @@ -1324,12 +1347,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos RedoTool - + Redo Refazer - + Redo the next modification Refazer última modificação @@ -1337,12 +1360,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos SaveTool - + Save Salvar - + Save the capture Salvar a captura @@ -1350,7 +1373,7 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos ScreenGrabber - + Unable to capture screen Não foi possível capturar a tela @@ -1358,12 +1381,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos SelectionTool - + Rectangular Selection Seleção Retangular - + Set Selection as the paint tool Usar o Selecionador como ferramenta de desenho @@ -1371,17 +1394,22 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos SetShortcutDialog - + Set Shortcut Definir atalho - + Enter new shortcut to change Insira um novo atalho para definir - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Pressione Esc para cancelar ou Backspace para desabilitar o atalho de teclado. @@ -1389,22 +1417,22 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos ShortcutsWidget - + Hot Keys Teclas de atalho - + Available shortcuts in the screen capture mode. Atalhos disponíveis no modo de captura de tela. - + Description Descrição - + Key Tecla @@ -1412,35 +1440,61 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos SidePanelWidget - + Active thickness: Espessura ativa: - + Active color: Cor ativa: - + Press ESC to cancel Pressione Esc para cancelar - + Grab Color Pegar Cor + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator Indicador do Tamanho da Seleção - + Show the dimensions of the selection (X Y) Mostra as dimensões da seleção (X Y) @@ -1448,107 +1502,107 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos StrftimeChooserWidget - + Century (00-99) Século (00-99) - + Year (00-99) Ano (00-99) - + Year (2000) Ano (2000) - + Month Name (jan) Nome do mês (jan) - + Month Name (january) Nome do mês (janeiro) - + Month (01-12) Mês (01-12) - + Week Day (1-7) Dia da semana (1-7) - + Week (01-53) Semana (01-53) - + Day Name (mon) Nome do dia (seg) - + Day Name (monday) Nome do dia (segunda) - + Day (01-31) Dia (01-31) - + Day of Month (1-31) Dia do Mês (1-31) - + Day (001-366) Dia (001-366) - + Time (%H-%M-%S) Tempo (%H-%M-%S) - + Time (%H-%M) Tempo (%H-%M) - + Hour (00-23) Hora (00-23) - + Hour (01-12) Hora (01-12) - + Minute (00-59) Minuto (00-59) - + Second (00-59) Segundos (00-59) - + Full Date (%m/%d/%y) Data Completa (%m/%d/%y) - + Full Date (%Y-%m-%d) Data Completa (%Y-%m-%d) @@ -1564,22 +1618,22 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos TextConfig - + StrikeOut Sobrescrito - + Underline Sublinhado - + Bold Negrito - + Italic Itálico @@ -1587,12 +1641,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos TextTool - + Text Texto - + Add text to your capture Adicionar texto à captura @@ -1600,37 +1654,37 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos UIcolorEditor - + UI Color Editor Interface de Edição de Cores - + Change the color moving the selectors and see the changes in the preview buttons. Modifique a cor movendo os seletores e veja as mudanças nos botões de preview. - + Select a Button to modify it Selecione um botão para modificá-lo - + Main Color Cor Principal - + Click on this button to set the edition mode of the main color. Clique neste botão para setar o modo de edição da cor principal. - + Contrast Color Cor de Contraste - + Click on this button to set the edition mode of the contrast color. Clique neste botão para setar o modo de edição da cor de contraste. @@ -1638,12 +1692,12 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos UndoTool - + Undo Desfazer - + Undo the last modification Desfazer a última modificação @@ -1674,25 +1728,30 @@ Você pode ter que invalidar o sinal '#', por exemplo '\#FFF&apos UtilityPanel - + Close Fechar + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: Opacidade da área fora da seleção: - + Button Selection Botão de seleção - + Select All Selecionar Todos diff --git a/data/translations/Internationalization_ru.ts b/data/translations/Internationalization_ru.ts index 770dfa22..2b2ec805 100644 --- a/data/translations/Internationalization_ru.ts +++ b/data/translations/Internationalization_ru.ts @@ -51,14 +51,14 @@ ArrowTool - + Arrow Стрелка - + Set the Arrow as the paint tool - Выбрать «Стрелку» инструментом рисования + Выбрать «Стрелку» инструментом для рисования @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Не удалось захватить экран - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Press Space to open the side panel. Нажмите Пробел, чтобы открыть боковую панель. - + Tool Settings Настройки инструмента @@ -154,14 +154,14 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter Нумерация - + Add an autoincrementing counter bubble - Добавить круг с автоприращающимся счётчиком + Добавить круг с автоматически приращающимся счётчиком @@ -174,7 +174,7 @@ Press Space to open the side panel. Set the Circle as the paint tool - Выбрать «Окружность» инструментом рисования + Выбрать «Окружность» инструментом для рисования @@ -202,7 +202,7 @@ Press Space to open the side panel. Shortcuts - Горячие клавиши + Горячие кнопки Storage @@ -212,66 +212,66 @@ Press Space to open the side panel. Controller - + New version %1 is available Доступна новая версия %1 - + You have the latest version У вас самая последняя версия - + Failed to get information about the latest version. Не удалось получить информацию о последней версии. - + Error Ошибка - + Unable to close active modal widgets Невозможно закрыть активные модальные виджеты - + &Take Screenshot &Сделать снимок - + &Open Launcher &Приложение захвата - + &Configuration &Настройки - + &About - &О программе + &Информация - + Check for updates Проверить обновления - + &Latest Uploads - &Последние загрузки + Последние загрузки &Information &Информация - + &Quit &Выход @@ -315,7 +315,7 @@ Press Space to open the side panel. Edit the name of your captures: - Укажите название для ваших снимков: + Измените имя ваших снимков: @@ -339,8 +339,12 @@ Press Space to open the side panel. + Restore + Восстановить + + Reset - Сбросить + Сбросить @@ -353,7 +357,7 @@ Press Space to open the side panel. Очистить - + Deletes the name Удаляет имя @@ -500,183 +504,183 @@ Press Space to open the side panel. GeneralConf - - + + Import Импорт - - - - + + + + Error Ошибка - + Unable to read file. Не удалось прочитать файл. - - + + Unable to write file. Не удалось записать файл. - + Save File Сохранить файл - + Confirm Reset Подтвердить сброс - + Are you sure you want to reset the configuration? Вы действительно хотите сбросить настройки? - + Show help message Показывать справочное сообщение - + Show the help message at the beginning in the capture mode. Показывать справочное сообщение перед началом захвата экрана. - + Show the side panel button Показывать кнопку боковой панели - + Show the side panel toggle button in the capture mode. Показывать кнопку открытия боковой панели в режиме захвата. - - + + Show desktop notifications Показывать уведомления - + Show tray icon Показывать значок в трее - + Show the systemtray icon Показать значок в системном трее - - + + Confirmation required to delete screenshot from the latest uploads - Требовать подтверждение при удалении снимка из последних загрузок + Для удаления снимка экрана из последних загрузок требуется подтверждение - + Configuration File - Файл настроек + Файл конфигурации - + Export Экспорт - + Reset Сбросить - - + + Automatic check for updates Автоматическая проверка обновлений - + Launch at startup Запускать при старте системы - - + + Launch Flameshot Запустить Flameshot - + Show welcome message on launch Показывать приветствие при запуске - + Copy URL after upload Копировать ссылку после загрузки - + Copy URL and close window after upload Копировать ссылку и закрыть окно после загрузки - + Save image after copy Сохранять изображение после копирования - + Save image file after copying it Сохранять файл изображения после копирования - + Save Path Путь сохранения - + Change... Сменить… - + Use fixed path for screenshots to save - Использовать постоянный путь сохранения для снимков экрана + Использовать фиксированный путь для сохранения снимков экрана - + Latest Uploads Max Size - Максимальное число последних загрузок + Максимальный размер последних загрузок - - + + Use JPG format for clipboard (PNG default) Использовать формат JPG для буфера обмена (по умолчанию PNG) - - + + Copy file path after save Скопировать путь к файлу после сохранения - + Choose a Folder Выберите папку - + Unable to write to directory. Не удалось записать в папку. @@ -716,7 +720,7 @@ Press Space to open the side panel. Are you sure you want to delete a screenshot from the latest uploads and server? - Вы уверены, что хотите удалить снимок экрана из последних загрузок и с сервера? + Вы уверены, что хотите удалить снимок экрана с последних загрузок и с сервера? @@ -777,6 +781,10 @@ Press Space to open the side panel. Error Ошибка + + Unable to upload screenshot, please check your internet connection and try again + Не удалось загрузить снимок экрана. Проверьте подключение к Интернету и повторите попытку + Unable to get s3 credentials, please check your VPN connection and try again Не удалось получить данные S3, проверьте своё VPN-соединение и повторите попытку @@ -905,7 +913,7 @@ Press Space to open the side panel. Image Uploader - Загрузка изображения + Отправка изображений @@ -918,7 +926,7 @@ Press Space to open the side panel. About - О программе + Информация SPACEBAR @@ -998,14 +1006,14 @@ Press Space to open the side panel. LineTool - + Line Линия - + Set the Line as the paint tool - Выбрать «Линию» инструментом рисования + Выбрать «Линию» инструментом для рисования @@ -1018,7 +1026,7 @@ Press Space to open the side panel. Set the Marker as the paint tool - Выбрать «Маркер» инструментом рисования + Выбрать «Маркер» инструментом для рисования @@ -1031,18 +1039,18 @@ Press Space to open the side panel. Move the selection area - Переместить выделенную область + Выбрать «Перемещение» инструментом для рисования PencilTool - + Pencil Карандаш - + Set the Pencil as the paint tool Выбрать «Карандаш» инструментом для рисования @@ -1076,26 +1084,24 @@ Press Space to open the side panel. QHotkey - Failed to register %1. Error: %2 - Не удалось зарегистрировать %1. Ошибка: %2 + Не удалось зарегистрировать %1. Ошибка: %2 - Failed to unregister %1. Error: %2 - Не удалось отменить регистрацию %1. Ошибка: %2 + Не удалось отменить регистрацию %1. Ошибка: %2 QObject - + Save Error Ошибка сохранения - + Capture saved as Снимок сохранён как @@ -1117,17 +1123,27 @@ Press Space to open the side panel. - + Error trying to save as Ошибка при попытке сохранить как - + Save screenshot Сохранить снимок - + + Saving canceled + Сохранение отменено + + + + Save canceled + Сохранение отменено + + + Capture is saved and copied to the clipboard as Снимок сохранён на диск и скопирован в буфер обмена как @@ -1334,9 +1350,9 @@ You can find me in the system tray. Вы можете найти меня в системном трее. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. - Привет! Щёлкните по значку на трее для создания снимка или щёлкните правой кнопкой, чтобы увидеть дополнительные параметры. + Привет, я тут! Щёлкните по значку на панели задач, чтобы сделать снимок экрана, или щёлкните правой кнопкой, чтобы увидеть дополнительные параметры. @@ -1394,29 +1410,35 @@ You can find me in the system tray. Подтвердить текст в текстовой области - + + + Delete current tool + Удалить текущий инструмент + + + Quit capture Выйти из захвата экрана - - + + Screenshot history История снимков - - + + Capture screen Захватить экран - + Show color picker Показать выбор цвета - + Change the tool's thickness Изменить толщину инструмента @@ -1424,12 +1446,12 @@ You can find me in the system tray. RectangleTool - + Rectangle Прямоугольник - + Set the Rectangle as the paint tool Выбрать «Прямоугольник» инструментом для рисования @@ -1495,6 +1517,11 @@ You can find me in the system tray. + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + Нажмите Esc, чтобы отменить, или ⌘+Backspace, чтобы отключить сочетание клавиш. + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Нажмите Esc, чтобы отменить, или Backspace, чтобы отключить сочетание клавиш. @@ -1555,7 +1582,7 @@ You can find me in the system tray. Decrease the size of the other tools - Уменьшить размер других инструментов + Уменьшите размер других инструментов @@ -1697,7 +1724,7 @@ You can find me in the system tray. Flameshot Info - Уведомление Flameshot + Flameshot Инфо @@ -1726,12 +1753,12 @@ You can find me in the system tray. TextTool - + Text Текст - + Add text to your capture Добавить текст на снимок @@ -1828,10 +1855,15 @@ You can find me in the system tray. UtilityPanel - + Close Закрыть + + + <Empty> + <Пусто> + Hide Скрыть @@ -1842,7 +1874,7 @@ You can find me in the system tray. Opacity of area outside selection: - Затененность области вне выделенной: + Затемнение невыделенной области: diff --git a/data/translations/Internationalization_sk.ts b/data/translations/Internationalization_sk.ts index f79483b3..6119ad8d 100644 --- a/data/translations/Internationalization_sk.ts +++ b/data/translations/Internationalization_sk.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Šípka - + Set the Arrow as the paint tool Nastaviť Šípku ako nástroj pre úpravy @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Nepodarilo sa zachytiť obrazovku - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Použite kolečko myši pre zmenu hrúbky vybraného nástroja. Stlačte medzerník pre otvorenie postranného panelu. - + Tool Settings Nastavenia nástrojov @@ -154,12 +154,12 @@ Stlačte medzerník pre otvorenie postranného panelu. CircleCountTool - + Circle Counter Bodové počítadlo - + Add an autoincrementing counter bubble Pridá bublinu s číslom (vždy zvýšeným o jednotku) @@ -208,57 +208,57 @@ Stlačte medzerník pre otvorenie postranného panelu. Controller - + New version %1 is available Je dostupná nová verzia: %1 - + You have the latest version Používate najnovšiu verziu - + Failed to get information about the latest version. Nepodarilo sa získať informácie o najnovšej verzii. - + Error Chyba - + Unable to close active modal widgets Nepodarilo sa zatvoriť aktívne modálne ovládacie prvky - + &Take Screenshot &Vytvoriť snímku - + &Open Launcher - + &Configuration &Konfigurácia - + &About O &programe - + Check for updates Skontrolovať aktualizácie - + &Latest Uploads &Posledné nahratia @@ -267,7 +267,7 @@ Stlačte medzerník pre otvorenie postranného panelu. &Informácie - + &Quit &Ukončiť @@ -335,8 +335,12 @@ Stlačte medzerník pre otvorenie postranného panelu. + Restore + + + Reset - Resetovať + Resetovať @@ -349,7 +353,7 @@ Stlačte medzerník pre otvorenie postranného panelu. Vyčistiť - + Deletes the name Vymaže meno @@ -476,183 +480,183 @@ Stlačte medzerník pre otvorenie postranného panelu. GeneralConf - - + + Import Importovať - - - - + + + + Error Chyba - + Unable to read file. Zlyhalo čítanie súboru. - - + + Unable to write file. Zlyhal zápis do súboru. - + Save File Uložiť súbor - + Confirm Reset Potvrdiť Reset - + Are you sure you want to reset the configuration? Naozaj si želáte resetovať aktuálnu konfiguráciu? - + Show help message Zobraziť nápovedu - + Show the help message at the beginning in the capture mode. Zobraziť nápovedu na začiatku počas režimu zachytávania obrazovky. - + Show the side panel button Zobraziť tlačidlo na postrannom paneli - + Show the side panel toggle button in the capture mode. V režime zachytávania zobrazovať tlačidlo na postrannom paneli. - - + + Show desktop notifications Zobraziť systémové upozornenia - + Show tray icon Zobraziť stavovú ikonu - + Show the systemtray icon Zobraziť ikonu v stavovej oblasti - - + + Confirmation required to delete screenshot from the latest uploads Odstránenie snímky z posledných nahraní je vyžadované potvrdenie - + Configuration File Súbor s konfiguráciou - + Export Exportovať - + Reset Resetovať - - + + Automatic check for updates Automatická kontrola aktualizácií - + Launch at startup Spustiť pri štarte - - + + Launch Flameshot Spustiť Flameshot - + Show welcome message on launch Pri spustení zobraziť uvítaciu správu - + Copy URL after upload Kopírovať URL po nahratí - + Copy URL and close window after upload Po nahratí skopírovať URL a zavrieť okno - + Save image after copy Uložiť obrázok po kopírovaní - + Save image file after copying it Uložiť obrázok so súborom po jeho skopírovaní - + Save Path Cesta pre ukladanie - + Change... Zmeniť... - + Use fixed path for screenshots to save Pre ukladanie snímok obrazovky používať rovnakú cestu - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) Pre schránku používať JPG (štandardne PNG) - - + + Copy file path after save Po uložení skopírovať cestu k súboru - + Choose a Folder Vyberte priečinok - + Unable to write to directory. Zápis do adresára nie je možný. @@ -892,12 +896,12 @@ Stlačte medzerník pre otvorenie postranného panelu. LineTool - + Line Čiara - + Set the Line as the paint tool Nastaviť Čiaru ako nástroj pre úpravy @@ -931,12 +935,12 @@ Stlačte medzerník pre otvorenie postranného panelu. PencilTool - + Pencil Ceruzka - + Set the Pencil as the paint tool Nastaviť Ceruzku ako nástroj pre úpravy @@ -970,14 +974,12 @@ Stlačte medzerník pre otvorenie postranného panelu. QHotkey - Failed to register %1. Error: %2 - Nepodarilo sa zaregistrovať %1. Chyba: %2 + Nepodarilo sa zaregistrovať %1. Chyba: %2 - Failed to unregister %1. Error: %2 - Nepodarilo sa odregistrovať %1. Chyba: %2 + Nepodarilo sa odregistrovať %1. Chyba: %2 @@ -1161,28 +1163,38 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# - + Capture saved as Snímka uložená ako - + Error trying to save as Chyba pri ukladaní do - + Save screenshot Uložiť snímku - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as Snímka je uložená a skopírovaná do schránky ako - + Save Error Chyba pri ukladaní @@ -1226,7 +1238,7 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# Štandardne sa Flameshot spúšťa na pozadí a pridáva do lišty ikonu, ktorou je ho možné ovládať. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Ahoj, som tu! Pre vytvorenie snímky kliknite na ikonu v lište a k ďalším možnostiam sa dostanete kliknutím pravým tlačidlom. @@ -1286,29 +1298,35 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# Potvrdiť pridanie textu - + + + Delete current tool + + + + Quit capture Ukončiť zachytávanie - - + + Screenshot history História snímok - - + + Capture screen Zachytiť obrazovku - + Show color picker Zobraziť dialóg na výber farby - + Change the tool's thickness Zmeniť hrúbku nástroja @@ -1316,12 +1334,12 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# RectangleTool - + Rectangle Obdĺžnik - + Set the Rectangle as the paint tool Nastaviť Obdĺžnik ako nástroj pre úpravy @@ -1387,6 +1405,11 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Ak chcete zrušiť klávesovú skratku stlačte Esc alebo Backspace. @@ -1618,12 +1641,12 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# TextTool - + Text Text - + Add text to your capture Pridať text do snímky @@ -1705,10 +1728,15 @@ Možno budete musieť napísať pred '#' opačnú lomku, teda '\# UtilityPanel - + Close Zavrieť + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_sr_SP.ts b/data/translations/Internationalization_sr_SP.ts index 5ee6a370..d05471b9 100644 --- a/data/translations/Internationalization_sr_SP.ts +++ b/data/translations/Internationalization_sr_SP.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Стрелица - + Set the Arrow as the paint tool Избор цртања стрелице @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Нисам успео да снимим екран - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Press Space to open the side panel. Притисните размак на тастатури за приказ помоћног панела. - + Tool Settings @@ -154,12 +154,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -208,57 +208,57 @@ Press Space to open the side panel. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Грешка - + Unable to close active modal widgets - + &Take Screenshot &Направи снимак екрана - + &Open Launcher - + &Configuration &Подешавања - + &About - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Press Space to open the side panel. Ин&формације - + &Quit &Излаз @@ -335,8 +335,12 @@ Press Space to open the side panel. + Restore + + + Reset - Ресетуј + Ресетуј @@ -349,7 +353,7 @@ Press Space to open the side panel. Очисти - + Deletes the name Брише име @@ -428,183 +432,183 @@ Press Space to open the side panel. GeneralConf - - + + Import Увоз - - - - + + + + Error Грешка - + Unable to read file. Нисам успео да прочитам датотеку. - - + + Unable to write file. Нисам успео да сачувам датотеку. - + Save File Сачувај датотеку - + Confirm Reset Потврда поништавања - + Are you sure you want to reset the configuration? Да ли сте сигурни да желите да поништите сва прилагођена подешавања? - + Show help message Приказуј поруку са упутством - + Show the help message at the beginning in the capture mode. Приказуј поруку са кратким упутством на почетку снимања екрана. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications Користи системска обавештења - + Show tray icon Иконица на системској полици - + Show the systemtray icon Приказуј иконицу на системској полици - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Датотека са подешавањима - + Export Извоз - + Reset - - + + Automatic check for updates - + Launch at startup Покрени на почетку - - + + Launch Flameshot Покрени Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -836,12 +840,12 @@ Press Space to open the side panel. LineTool - + Line Линија - + Set the Line as the paint tool Избор цртања линије @@ -875,12 +879,12 @@ Press Space to open the side panel. PencilTool - + Pencil Оловка - + Set the Pencil as the paint tool Избор цртања оловком @@ -911,29 +915,16 @@ Press Space to open the side panel. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Грешка приликом упусивања - + Capture saved as Сачувај снимак као @@ -955,17 +946,27 @@ Press Space to open the side panel. - + Error trying to save as Грешка приликом уписивања као - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1160,7 +1161,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1220,29 +1221,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Излаз из снимача екрана - - + + Screenshot history - - + + Capture screen - + Show color picker Прикажи избор боје - + Change the tool's thickness Измени дебљину линије алата @@ -1250,12 +1257,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Правоугаоник - + Set the Rectangle as the paint tool Избор цртања обојеног правоугаоника @@ -1322,6 +1329,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1553,12 +1565,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Текст - + Add text to your capture Додаје текст на снимак @@ -1640,10 +1652,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_sv_SE.ts b/data/translations/Internationalization_sv_SE.ts index ec63953e..42f60269 100644 --- a/data/translations/Internationalization_sv_SE.ts +++ b/data/translations/Internationalization_sv_SE.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Pil - + Set the Arrow as the paint tool Välj pil som ritverktyg @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Kunde inte avbilda skärmen - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Använd Scrollhjulet för att ändra tjockleken på ditt verktyg. Tryck Space för att öppna sidopanelen. - + Tool Settings @@ -154,12 +154,12 @@ Tryck Space för att öppna sidopanelen. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble @@ -208,57 +208,57 @@ Tryck Space för att öppna sidopanelen. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error Fel - + Unable to close active modal widgets - + &Take Screenshot &Ta skärmdump - + &Open Launcher - + &Configuration &Konfiguration - + &About - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Tryck Space för att öppna sidopanelen. &Information - + &Quit &Avsluta @@ -335,8 +335,12 @@ Tryck Space för att öppna sidopanelen. + Restore + + + Reset - Återställ + Återställ @@ -349,7 +353,7 @@ Tryck Space för att öppna sidopanelen. Rensa - + Deletes the name Raderar namnet @@ -428,183 +432,183 @@ Tryck Space för att öppna sidopanelen. GeneralConf - - + + Import Importera - - - - + + + + Error Fel - + Unable to read file. Kunde inte läsa filen. - - + + Unable to write file. Kunde inte skriva till filen. - + Save File Spara fil - + Confirm Reset Bekräfta återställning - + Are you sure you want to reset the configuration? Är du säker på att du vill återställa konfigurationen? - + Show help message Visa hjälpmeddelande - + Show the help message at the beginning in the capture mode. Visa hjälpmeddelande vid början av skärmklippsläge. - + Show the side panel button - + Show the side panel toggle button in the capture mode. - - + + Show desktop notifications Visa skrivbordsnotifieringar - + Show tray icon Visa ikon i systemfältet - + Show the systemtray icon Visa ikon i systemfältet - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File Konfigurationsfil - + Export Exportera - + Reset Återställ - - + + Automatic check for updates - + Launch at startup Starta vid uppstart - - + + Launch Flameshot Starta Flameshot - + Show welcome message on launch - + Copy URL after upload - + Copy URL and close window after upload - + Save image after copy - + Save image file after copying it - + Save Path - + Change... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder - + Unable to write to directory. @@ -840,12 +844,12 @@ Tryck Space för att öppna sidopanelen. LineTool - + Line Linje - + Set the Line as the paint tool Välj linje som ritverktyg @@ -879,12 +883,12 @@ Tryck Space för att öppna sidopanelen. PencilTool - + Pencil Penna - + Set the Pencil as the paint tool Välj Penna som ritverktyg @@ -915,29 +919,16 @@ Tryck Space för att öppna sidopanelen. - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error Spara fel - + Capture saved as Urval sparad som @@ -959,17 +950,27 @@ Tryck Space för att öppna sidopanelen. - + Error trying to save as Fel vid spara som - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1164,7 +1165,7 @@ You may need to escape the '#' sign as in '\#FFF' URL kopierad till klippbord. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1224,29 +1225,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture Stäng skärmavbildning - - + + Screenshot history - - + + Capture screen - + Show color picker Visa färgväljare - + Change the tool's thickness Ändra verktygets tjocklek @@ -1254,12 +1261,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Rektangel - + Set the Rectangle as the paint tool Välj Rektangel som ritverktyg @@ -1325,6 +1332,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1556,12 +1568,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Text - + Add text to your capture Lägg till text på ditt skärmklipp @@ -1643,10 +1655,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_tr.ts b/data/translations/Internationalization_tr.ts index 22fda032..b3002fb4 100644 --- a/data/translations/Internationalization_tr.ts +++ b/data/translations/Internationalization_tr.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Ok - + Set the Arrow as the paint tool Oku boyama aracı olarak ayarla @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Ekran resmi alınamadı - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,20 +146,20 @@ Aracınızın kalınlığını değiştirmek için Fare Tekerleğini kullanın. Yan paneli açmak için Boşluk tuşuna basın. - + Tool Settings - Araç Ayarları + Alet Ayarları CircleCountTool - + Circle Counter Daire Sayacı - + Add an autoincrementing counter bubble Otomatik artan bir sayaç balonu ekleyin @@ -208,66 +208,66 @@ Yan paneli açmak için Boşluk tuşuna basın. Controller - + New version %1 is available Yeni %1 sürümü mevcut - + You have the latest version En son sürüme sahipsiniz - + Failed to get information about the latest version. En son sürüm hakkında bilgi alınamadı. - + Error Hata - + Unable to close active modal widgets Etkin modal widget'lar kapatılamıyor - + &Take Screenshot &Ekran Resmi Al - + &Open Launcher &Başlatıcı Aç - + &Configuration &Ayarlar - + &About &Hakkında - + Check for updates Güncellemeleri denetle - + &Latest Uploads - &Son Yüklenenler + &En Son Güncelleme &Information &Bilgi - + &Quit &Çıkış @@ -335,8 +335,12 @@ Yan paneli açmak için Boşluk tuşuna basın. + Restore + + + Reset - Sıfırla + Sıfırla @@ -349,7 +353,7 @@ Yan paneli açmak için Boşluk tuşuna basın. Temizle - + Deletes the name İsmi siler @@ -428,183 +432,183 @@ Yan paneli açmak için Boşluk tuşuna basın. GeneralConf - - + + Import Dışa aktar - - - - + + + + Error Hata - + Unable to read file. Dosya okunamıyor. - - + + Unable to write file. Dosya yazılamıyor. - + Save File Dosyayı Kaydet - + Confirm Reset Sıfırlamayı Onayla - + Are you sure you want to reset the configuration? Ayarları sıfırlamak istediğinizden emin misiniz? - + Show help message Yardım mesajını göster - + Show the help message at the beginning in the capture mode. Yakalama modunda başlangıçta yardım mesajını göster. - + Show the side panel button Yan panel düğmesini göster - + Show the side panel toggle button in the capture mode. Çekim modunda yan panel geçiş düğmesini göster. - - + + Show desktop notifications Masaüstü bildirimlerini göster - + Show tray icon Tepsi simgesini göster - + Show the systemtray icon Sistem tepsisi simgesini göster - - + + Confirmation required to delete screenshot from the latest uploads - Son yüklenenlerden ekran görüntüsünü silmek için onay gerekli + En son yüklemelerden ekran görüntüsünü silmek için onay gerekli - + Configuration File Yapılandırma Dosyası - + Export Dışa aktar - + Reset Sıfırla - - + + Automatic check for updates Otomatik güncelleme denetimi - + Launch at startup Başlangıçta başlat - - + + Launch Flameshot Flameshot'ı başlat - + Show welcome message on launch Açılışta karşılama mesajını göster - + Copy URL after upload Yüklemeden sonra URL'yi kopyala - + Copy URL and close window after upload URL'yi kopyalayın ve yüklemeden sonra pencereyi kapatın - + Save image after copy Kopyaladıktan sonra görüntüyü kaydet - + Save image file after copying it Görüntü dosyasını kopyaladıktan sonra kaydedin - + Save Path Kaydetme Yolu - + Change... Değiştir... - + Use fixed path for screenshots to save Kaydedilecek ekran görüntüleri için sabit yol kullan - + Latest Uploads Max Size - Son Yüklenenler Azami Boyutu + - - + + Use JPG format for clipboard (PNG default) Pano için JPG biçimini kullan (PNG varsayılanı) - - + + Copy file path after save Kaydettikten sonra dosya yolunu kopyala - + Choose a Folder Bir Klasör Seçin - + Unable to write to directory. Dizine yazılamıyor. @@ -836,12 +840,12 @@ Yan paneli açmak için Boşluk tuşuna basın. LineTool - + Line Çizgi - + Set the Line as the paint tool Çizgiyi boyama aracı olarak ayarla @@ -875,12 +879,12 @@ Yan paneli açmak için Boşluk tuşuna basın. PencilTool - + Pencil Kurşun Kalem - + Set the Pencil as the paint tool Kurşun Kalemi çizim aracı olarak ayarla @@ -914,26 +918,24 @@ Yan paneli açmak için Boşluk tuşuna basın. QHotkey - Failed to register %1. Error: %2 - %1 kaydedilemedi. Hata:%2 + %1 kaydedilemedi. Hata:%2 - Failed to unregister %1. Error: %2 - %1 kaydı silinemedi. Hata:%2 + %1 kaydı silinemedi. Hata:%2 QObject - + Save Error Kaydetme Hatası - + Capture saved as Yakalama farklı kaydedildi @@ -955,17 +957,27 @@ Yan paneli açmak için Boşluk tuşuna basın. - + Error trying to save as Farklı kaydetmeye çalışılırken hata oluştu - + Save screenshot Ekran görüntüsünü kaydet - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as Yakalama kaydedilir ve panoya şu adla kopyalanır @@ -1166,7 +1178,7 @@ You may need to escape the '#' sign as in '\#FFF' Varsayılan olarak arka planda Flameshot çalıştırır ve yapılandırma için bir tepsi simgesi ekler. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Merhaba ben burdayım! Ekran görüntüsü almak için tepsideki simgeye tıklayın veya daha fazla seçenek görmek için sağ düğmeyle tıklayın. @@ -1226,29 +1238,35 @@ You may need to escape the '#' sign as in '\#FFF' Metin alanındaki metni kaydet - + + + Delete current tool + + + + Quit capture Çıkış - - + + Screenshot history Ekran görüntüsü geçmişi - - + + Capture screen Ekran görüntüsü al - + Show color picker Renk seçici göster - + Change the tool's thickness Araç kalınlığını değiştir @@ -1256,12 +1274,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle Dikdörtgen - + Set the Rectangle as the paint tool Dikdörtgeni boyama aracı olarak ayarla @@ -1327,6 +1345,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. İptal etmek için Esc tuşuna veya klavye kısayolunu devre dışı bırakmak için Geri tuşuna basın. @@ -1382,12 +1405,12 @@ You may need to escape the '#' sign as in '\#FFF' Decrease Tool Size - Araç Boyutunu Küçült + Decrease the size of the other tools - Diğer araçların boyutunu küçült + @@ -1395,12 +1418,12 @@ You may need to escape the '#' sign as in '\#FFF' Increase Tool Size - Araç Boyutunu Büyüt + Increase the size of the other tools - Diğer araçların boyutunu büyüt + @@ -1558,12 +1581,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text Metin - + Add text to your capture Bilgisayardan yazı ekle @@ -1645,10 +1668,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close Kapat + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_uk.ts b/data/translations/Internationalization_uk.ts index b81a57aa..ecb84397 100644 --- a/data/translations/Internationalization_uk.ts +++ b/data/translations/Internationalization_uk.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow Стрілка - + Set the Arrow as the paint tool Вибрати стрілку інструментом малювання @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen Не вдалось захопити екран - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Press Space to open the side panel. Натисніть Пробіл, щоб відкрити бічну панель. - + Tool Settings Налаштування інструменту @@ -154,12 +154,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter Нумерація - + Add an autoincrementing counter bubble Додати коло з автоінкрементованим лічильником @@ -212,57 +212,57 @@ Press Space to open the side panel. Controller - + New version %1 is available Доступна нова версія %1 - + You have the latest version У вас найпізніша версія - + Failed to get information about the latest version. Не вдалося отримати інформацію про останню версію. - + Error Помилка - + Unable to close active modal widgets Не вдається закрити активні модальні віджети - + &Take Screenshot &Зробити знімок - + &Open Launcher &Відкрити запускач - + &Configuration &Налаштування - + &About &Про програму - + Check for updates Перевірити оновлення - + &Latest Uploads &Останні відвантаження @@ -271,7 +271,7 @@ Press Space to open the side panel. &Інформація - + &Quit Ви&йти @@ -339,8 +339,12 @@ Press Space to open the side panel. + Restore + Відновити + + Reset - Скинути + Скинути @@ -353,7 +357,7 @@ Press Space to open the side panel. Очистити - + Deletes the name Видаляє назву @@ -500,183 +504,183 @@ Press Space to open the side panel. GeneralConf - - + + Import Імпорт - - - - + + + + Error Помилка - + Unable to read file. Не вдалося прочитати файл. - - + + Unable to write file. Не вдалося записати файл. - + Save File Зберегти файл - + Confirm Reset Підтвердити скидання - + Are you sure you want to reset the configuration? Ви дійсно хочете скинути налаштування? - + Show help message Показувати повідомлення довідки - + Show the help message at the beginning in the capture mode. Показувати повідомлення довідки на початку режиму захоплення. - + Show the side panel button Показувати кнопку бічної панелі - + Show the side panel toggle button in the capture mode. Показувати кнопку відкриття бічної панелі в режимі захоплення. - - + + Show desktop notifications Показувати сповіщення - + Show tray icon Показувати значок у лотку - + Show the systemtray icon Показувати значок у системному лотку - - + + Confirmation required to delete screenshot from the latest uploads Потрібне підтвердження, щоб видалити знімок екрана з останніх завантажень - + Configuration File Файл налаштувань - + Export Експорт - + Reset Скинути - - + + Automatic check for updates Автоматична перевірка наявності оновлень - + Launch at startup Запускати при старті системи - - + + Launch Flameshot Запускати Flameshot - + Show welcome message on launch Показувати вітання під час запуску - + Copy URL after upload Копіювати URL після завантаження - + Copy URL and close window after upload Копіювати URL і закрити вікно після завантаження - + Save image after copy Зберігати зображення після копіювання - + Save image file after copying it Зберігати файл зображення після копіювання - + Save Path Шлях збереження - + Change... Змінити... - + Use fixed path for screenshots to save Використовувати фіксований шлях знімків екрана для збереження - + Latest Uploads Max Size - Найбільший розмір останніх відвантажень + Максимальний розмір останніх завантажень - - + + Use JPG format for clipboard (PNG default) Використовуйте формат JPG для буфера обміну (за замовчуванням PNG) - - + + Copy file path after save Скопіювати шлях до файлу після збереження - + Choose a Folder Обрати теку - + Unable to write to directory. Не вдалося записати в каталог. @@ -777,6 +781,10 @@ Press Space to open the side panel. Error Помилка + + Unable to upload screenshot, please check your internet connection and try again + Не вдається завантажити знімок екрана, перевірте підключення до Інтернету та повторіть спробу + Unable to get s3 credentials, please check your VPN connection and try again Не вдалося отримати конфігурацію для s3, перевірити своє з'єднання VPN і повторити спробу @@ -998,12 +1006,12 @@ Press Space to open the side panel. LineTool - + Line Лінія - + Set the Line as the paint tool Вибрати лінію інструментом малювання @@ -1037,12 +1045,12 @@ Press Space to open the side panel. PencilTool - + Pencil Олівець - + Set the Pencil as the paint tool Вибрати олівець інструментом малювання @@ -1076,26 +1084,24 @@ Press Space to open the side panel. QHotkey - Failed to register %1. Error: %2 - Не вдалося зареєструвати %1. Помилка: %2 + Не вдалося зареєструвати %1. Помилка: %2 - Failed to unregister %1. Error: %2 - Не вдалося скасувати реєстрацію %1. Помилка: %2 + Не вдалося скасувати реєстрацію %1. Помилка: %2 QObject - + Save Error Помилка збереження - + Capture saved as Знімок збережено як @@ -1117,17 +1123,27 @@ Press Space to open the side panel. - + Error trying to save as Помилка під час збереження як - + Save screenshot Зберегти знімок екрана - + + Saving canceled + Збереження скасовано + + + + Save canceled + Збереження скасовано + + + Capture is saved and copied to the clipboard as Захоплення збережено і скопійовано в буфер обміну як @@ -1334,7 +1350,7 @@ You can find me in the system tray. Ви можете знайти мене в системному треї. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. Привіт, я тут! Клацніть по значку в лотку, щоб зробити знімок екрана, або клацніть правою кнопкою, щоб побачити більше опцій. @@ -1394,29 +1410,35 @@ You can find me in the system tray. Фіксувати текст у текстовій області - + + + Delete current tool + Видалити поточний інструмент + + + Quit capture Вийти із захоплення екрана - - + + Screenshot history Історія знімків екрана - - + + Capture screen Захоплення екрана - + Show color picker Показати вибір кольору - + Change the tool's thickness Змінити товщину інструмента @@ -1424,12 +1446,12 @@ You can find me in the system tray. RectangleTool - + Rectangle Прямокутник - + Set the Rectangle as the paint tool Вибрати прямокутник інструментом малювання @@ -1495,6 +1517,11 @@ You can find me in the system tray. + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + Натисніть Esc, щоб скасувати, або ⌘+Backspace, щоб вимкнути комбінацію клавіш. + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. Натисніть Esc, щоб скасувати, або Backspace, щоб вимкнути комбінацію клавіш. @@ -1550,12 +1577,12 @@ You can find me in the system tray. Decrease Tool Size - Зменшити розмір засобу + Зменшити розмір інструменту Decrease the size of the other tools - Зменшити розмір інших засобів + Зменште розмір інших інструментів @@ -1563,12 +1590,12 @@ You can find me in the system tray. Increase Tool Size - Збільшити розмір засобу + Збільшити розмір інструменту Increase the size of the other tools - Збільшити розмір інших засобів + Збільшити розмір інших інструментів @@ -1726,12 +1753,12 @@ You can find me in the system tray. TextTool - + Text Текст - + Add text to your capture Додати текст на знімок @@ -1828,10 +1855,15 @@ You can find me in the system tray. UtilityPanel - + Close Затворити + + + <Empty> + <Порожньо> + Hide Сховати diff --git a/data/translations/Internationalization_zh_CN.ts b/data/translations/Internationalization_zh_CN.ts index c2360938..d7da3dda 100644 --- a/data/translations/Internationalization_zh_CN.ts +++ b/data/translations/Internationalization_zh_CN.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow 箭头 - + Set the Arrow as the paint tool 选择箭头作为绘画工具 @@ -128,13 +128,13 @@ CaptureWidget - + Unable to capture screen 无法捕获屏幕 无法捕获屏幕 - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -147,7 +147,7 @@ Press Space to open the side panel. 按下空格键以打开侧边面板。 - + Tool Settings 工具设置 @@ -155,12 +155,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter 圆圈计数 - + Add an autoincrementing counter bubble 添加数字自动递增的计数圆圈 @@ -209,57 +209,57 @@ Press Space to open the side panel. Controller - + New version %1 is available 新版本 %1 已经可用 - + You have the latest version 您正在运行最新版本 - + Failed to get information about the latest version. 获取最新版本信息时失败。 - + Error 错误 - + Unable to close active modal widgets 无法关闭活动模态组件 - + &Take Screenshot 进行截图(&T) - + &Open Launcher 打开启动器(&O) - + &Configuration 配置(&C) - + &About 关于(&A) - + Check for updates 检查更新 - + &Latest Uploads 最近的上传(&L) @@ -268,7 +268,7 @@ Press Space to open the side panel. 信息(&I) - + &Quit 退出(&Q) @@ -336,8 +336,12 @@ Press Space to open the side panel. + Restore + + + Reset - 恢复 + 恢复 @@ -350,7 +354,7 @@ Press Space to open the side panel. 清空 - + Deletes the name 删除这个名字 @@ -477,183 +481,183 @@ Press Space to open the side panel. GeneralConf - - + + Import 导入 - - - - + + + + Error 错误 - + Unable to read file. 无法读取文件。 - - + + Unable to write file. 无法写入文件。 - + Save File 保存到文件 - + Confirm Reset 确定重置 - + Are you sure you want to reset the configuration? 你确定你想要重置配置? - + Show help message 显示帮助信息 - + Show the help message at the beginning in the capture mode. 在捕获之前显示帮助信息。 - + Show the side panel button 显示侧边栏按钮 - + Show the side panel toggle button in the capture mode. 在捕获模式下显示侧边栏切换按钮。 - - + + Show desktop notifications 显示桌面通知 - + Show tray icon 显示托盘图标 - + Show the systemtray icon 显示任务栏图标 - - + + Confirmation required to delete screenshot from the latest uploads 从最近的上传历史中删除屏幕截图需要进行确认 - + Configuration File 配置文件 - + Export 导出 - + Reset 重置 - - + + Automatic check for updates 自动检查更新 - + Launch at startup 开机时启动 - - + + Launch Flameshot 启动火焰截图 - + Show welcome message on launch 启动时显示欢迎消息 - + Copy URL after upload 上传后复制 URL - + Copy URL and close window after upload 上传后复制 URL 并关闭窗口 - + Save image after copy 复制后保存图像 - + Save image file after copying it 复制到剪贴板后保存图像文件 - + Save Path 保存路径 - + Change... 变更… - + Use fixed path for screenshots to save 使用固定的屏幕截图保存路径 - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) 剪贴板使用 JPG 格式(默认为 PNG) - - + + Copy file path after save 保存文件后复制文件路径 - + Choose a Folder 选择文件夹 - + Unable to write to directory. 无法写入目录。 @@ -885,12 +889,12 @@ Press Space to open the side panel. LineTool - + Line 直线 - + Set the Line as the paint tool 将直线线设置为绘画工具 @@ -924,12 +928,12 @@ Press Space to open the side panel. PencilTool - + Pencil 铅笔 - + Set the Pencil as the paint tool 将铅笔设置为绘画工具 @@ -963,26 +967,24 @@ Press Space to open the side panel. QHotkey - Failed to register %1. Error: %2 - 注册 %1 失败。错误:%2 + 注册 %1 失败。错误:%2 - Failed to unregister %1. Error: %2 - 取消注册 %1 失败。错误:%2 + 取消注册 %1 失败。错误:%2 QObject - + Save Error 保存错误 - + Capture saved as 捕获已保存为 @@ -1004,17 +1006,27 @@ Press Space to open the side panel. - + Error trying to save as 尝试另存为时出错 - + Save screenshot 保存屏幕截图 - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as 捕获已保存并复制到剪贴板,作为 @@ -1219,7 +1231,7 @@ You may need to escape the '#' sign as in '\#FFF' 默认情况下,火焰截图启动后将在后台运行,并在托盘显示一个图标。 - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. 我已启动并在后台运行!点击托盘图标即可进行屏幕截图,右键点击托盘图标可查看更多选项。 @@ -1279,29 +1291,35 @@ You may need to escape the '#' sign as in '\#FFF' 在文本区域提交文本 - + + + Delete current tool + + + + Quit capture 退出捕获 - - + + Screenshot history 屏幕截图历史 - - + + Capture screen 捕获屏幕 - + Show color picker 显示颜色选择器 - + Change the tool's thickness 改变工具的厚度 @@ -1309,12 +1327,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle 实心矩形 - + Set the Rectangle as the paint tool 将实心矩形设置为绘画工具 @@ -1380,6 +1398,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. 按下 Esc 键以取消或按下退格键以禁用键盘快捷键。 @@ -1611,12 +1634,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text 文本 - + Add text to your capture 在您的捕获中添加文本 @@ -1698,10 +1721,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close 关闭 + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_zh_HK.ts b/data/translations/Internationalization_zh_HK.ts index 79898083..d2707732 100644 --- a/data/translations/Internationalization_zh_HK.ts +++ b/data/translations/Internationalization_zh_HK.ts @@ -51,12 +51,12 @@ ArrowTool - + Arrow 指針 - + Set the Arrow as the paint tool 選取指針作為繪製工具 @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen 無法捕獲屏幕 - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Press Space to open the side panel. 按Space以打開側方面板。 - + Tool Settings 工具選項 @@ -154,12 +154,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter 環狀計數器 - + Add an autoincrementing counter bubble 添加自增計數器 @@ -208,57 +208,57 @@ Press Space to open the side panel. Controller - + New version %1 is available - + You have the latest version - + Failed to get information about the latest version. - + Error 錯誤 - + Unable to close active modal widgets - + &Take Screenshot &捕獲截圖 - + &Open Launcher &開啓啓動器 - + &Configuration &設定 - + &About &關於 - + Check for updates - + &Latest Uploads @@ -267,7 +267,7 @@ Press Space to open the side panel. &資訊 - + &Quit &結束 @@ -335,8 +335,12 @@ Press Space to open the side panel. + Restore + + + Reset - 重設 + 重設 @@ -349,7 +353,7 @@ Press Space to open the side panel. 清除 - + Deletes the name 刪除這個名稱 @@ -476,183 +480,183 @@ Press Space to open the side panel. GeneralConf - - + + Import 導入 - - - - + + + + Error 錯誤 - + Unable to read file. 無法讀取檔案。 - - + + Unable to write file. 無法寫入檔案。 - + Save File 存檔 - + Confirm Reset 確認重設 - + Are you sure you want to reset the configuration? 你確定想要重設? - + Show help message 顯示説明資訊 - + Show the help message at the beginning in the capture mode. 在擷取之前顯示説明資訊。 - + Show the side panel button 顯示側邊欄按鈕 - + Show the side panel toggle button in the capture mode. 在截圖模式下顯示側邊欄切換按鈕。 - - + + Show desktop notifications 顯示桌面通知 - + Show tray icon 顯示託盤圖標 - + Show the systemtray icon 顯示工作列圖標 - - + + Confirmation required to delete screenshot from the latest uploads - + Configuration File 設定文檔 - + Export 導出 - + Reset 重設 - - + + Automatic check for updates - + Launch at startup 自動啟動 - - + + Launch Flameshot 啓動Flameshot - + Show welcome message on launch - + Copy URL after upload 上載后複製URL - + Copy URL and close window after upload 上載后複製URL並關閉窗口 - + Save image after copy 複製後保存圖像 - + Save image file after copying it 複製圖像檔案后保存 - + Save Path 保存路徑 - + Change... 變更... - + Use fixed path for screenshots to save - + Latest Uploads Max Size - - + + Use JPG format for clipboard (PNG default) - - + + Copy file path after save - + Choose a Folder 選取檔案集 - + Unable to write to directory. 無法寫入目錄。 @@ -872,12 +876,12 @@ Press Space to open the side panel. LineTool - + Line 直綫 - + Set the Line as the paint tool 將直綫設定為繪畫工具 @@ -911,12 +915,12 @@ Press Space to open the side panel. PencilTool - + Pencil 鉛筆 - + Set the Pencil as the paint tool 將鉛筆設定為繪畫工具 @@ -947,29 +951,16 @@ Press Space to open the side panel. 將馬賽克工具設定為繪畫工具 - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error 存檔錯誤 - + Capture saved as 截圖已另存為 @@ -991,17 +982,27 @@ Press Space to open the side panel. - + Error trying to save as 嘗試另存新檔時發生錯誤 - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as @@ -1196,7 +1197,7 @@ You may need to escape the '#' sign as in '\#FFF' - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1256,29 +1257,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture 結束擷取 - - + + Screenshot history - - + + Capture screen - + Show color picker 顯示顏色選擇器 - + Change the tool's thickness 改變工具的寬度 @@ -1286,12 +1293,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle 矩形 - + Set the Rectangle as the paint tool 將矩形設定為繪畫工具 @@ -1357,6 +1364,11 @@ You may need to escape the '#' sign as in '\#FFF' + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1588,12 +1600,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text 文本工具 - + Add text to your capture 往您捕獲的截圖中添加文本 @@ -1675,10 +1687,15 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close 關閉 + + + <Empty> + + VisualsEditor diff --git a/data/translations/Internationalization_zh_TW.ts b/data/translations/Internationalization_zh_TW.ts index 72013cd5..245d639d 100644 --- a/data/translations/Internationalization_zh_TW.ts +++ b/data/translations/Internationalization_zh_TW.ts @@ -4,12 +4,12 @@ AppLauncher - + App Launcher 應用程式啟動器 - + Choose an app to open the capture 選擇一個程式打開此截圖 @@ -17,33 +17,33 @@ AppLauncherWidget - + Open With 打開 - + Launch in terminal 在終端機中啟動 - + Keep open after selection 選擇後維持此視窗開啟 - - + + Error 錯誤 - + Unable to launch in terminal. 無法在終端機中啟動。 - + Unable to write in 無法寫入 @@ -51,12 +51,12 @@ ArrowTool - + Arrow 箭頭 - + Set the Arrow as the paint tool 選擇箭頭作為繪製工具 @@ -75,52 +75,52 @@ CaptureLauncher - + <b>Capture Mode</b> <b>擷取模式</b> - + Rectangular Region 矩形區域 - + Full Screen (Current Display) 全螢幕(目前螢幕) - + Full Screen (All Monitors) 全螢幕(所有螢幕) - + No Delay 無延遲 - + second - + seconds - + Take new screenshot 擷取新螢幕截圖 - + Area: 區域: - + Delay: 延遲: @@ -128,12 +128,12 @@ CaptureWidget - + Unable to capture screen 無法擷取螢幕 - + Select an area with the mouse, or press Esc to exit. Press Enter to capture the screen. Press Right Click to show the color picker. @@ -146,7 +146,7 @@ Press Space to open the side panel. 按Space打開側面板。 - + Tool Settings 工具設定 @@ -154,12 +154,12 @@ Press Space to open the side panel. CircleCountTool - + Circle Counter - + Add an autoincrementing counter bubble 新增一個自動計數的泡泡 @@ -167,12 +167,12 @@ Press Space to open the side panel. CircleTool - + Circle 圓形 - + Set the Circle as the paint tool 選擇圈型作為繪畫工具 @@ -180,27 +180,27 @@ Press Space to open the side panel. ConfigWindow - + Configuration 設定 - + Interface 介面 - + Filename Editor 檔案名稱編輯器 - + General 一般 - + Shortcuts 捷徑 @@ -208,57 +208,57 @@ Press Space to open the side panel. Controller - + New version %1 is available 已有新版本 %1 可取得 - + You have the latest version 您已安裝最新版本 - + Failed to get information about the latest version. 無法取得最新版本的資訊。 - + Error 錯誤 - + Unable to close active modal widgets - + &Take Screenshot &進行截圖 - + &Open Launcher &打開啟動器 - + &Configuration &設定 - + &About &關於 - + Check for updates 檢查更新 - + &Latest Uploads &最近上傳 @@ -267,7 +267,7 @@ Press Space to open the side panel. &資訊 - + &Quit &結束 @@ -275,12 +275,12 @@ Press Space to open the side panel. CopyTool - + Copy 複製 - + Copy the selection into the clipboard 把截圖複製到剪貼簿 @@ -288,7 +288,7 @@ Press Space to open the side panel. DBusUtils - + Unable to connect via DBus 無法透過 DBus 進行連接 @@ -296,12 +296,12 @@ Press Space to open the side panel. ExitTool - + Exit 離開 - + Leave the capture screen 離開螢幕擷取 @@ -309,47 +309,51 @@ Press Space to open the side panel. FileNameEditor - + Edit the name of your captures: 編輯您的截圖名稱: - + Edit: 編輯器: - + Preview: 預覽: - + Save 存檔 - + Saves the pattern 儲存樣式 - - Reset - 重設 + + Restore + - + Reset + 重設 + + + Restores the saved pattern 恢復儲存的樣式 - + Clear 清空 - + Deletes the name 刪除這個名稱 @@ -424,178 +428,183 @@ Press Space to open the side panel. GeneralConf - - + + Import 匯入 - - - - + + + + Error 錯誤 - + Unable to read file. 無法讀取檔案。 - - + + Unable to write file. 無法寫入檔案。 - + Save File 存檔 - + Confirm Reset 確認重設 - + Are you sure you want to reset the configuration? 你確定要重設嗎? - + Show help message 顯示説明資訊 - + Show the help message at the beginning in the capture mode. 在擷取之前顯示説明資訊。 - + Show the side panel button 顯示側面板按鈕 - + Show the side panel toggle button in the capture mode. 在擷取模式下顯示側面板按鈕。 - - + + Show desktop notifications 顯示桌面通知 - + Show tray icon 顯示工具列圖示 - + Show the systemtray icon 顯示工作列圖示 - - + + Confirmation required to delete screenshot from the latest uploads 從最近上傳刪除截圖時須確認 - + Configuration File 設定檔 - + Export 匯出 - + Reset 重設 - - + + Automatic check for updates 自動檢查更新 - + Launch at startup 自動啟動 - - + + Launch Flameshot 啟動 Flameshot - + Show welcome message on launch 在啟動時顯示歡迎訊息 - + Copy URL after upload 上傳後自動複製網址 - + Copy URL and close window after upload 上傳後自動複製網址並關閉視窗 - + Save image after copy 複製圖片後自動儲存 - + Save image file after copying it 複製圖片後自動儲存 - + Save Path 儲存路徑 - + Change... 變更... - + Use fixed path for screenshots to save 使用固定的路徑來儲存螢幕截圖 - - + + Latest Uploads Max Size + + + + + Use JPG format for clipboard (PNG default) 複製到剪貼簿時使用 JPG 格式 (預設為PNG) - - + + Copy file path after save 儲存後自動複製檔案路徑 - + Choose a Folder 選擇一個資料夾 - + Unable to write to directory. 無法寫入至資料夾。 @@ -608,32 +617,32 @@ Press Space to open the side panel. 最近上傳 - + Screenshots history is empty 無螢幕截圖歷史紀錄 - + Copy URL 複製網址 - + URL copied to clipboard. 網址已複製到剪貼簿。 - + Open in browser 在瀏覽器開啟 - + Confirm to delete 確認刪除 - + Are you sure you want to delete a screenshot from the latest uploads and server? @@ -687,48 +696,48 @@ Press Space to open the side panel. ImgurUploader - + Upload to Imgur 上傳到 Imgur - + Uploading Image 正在上傳 - + Copy URL 複製連結 - + Open URL 打開連結 - + Delete image - + Image to Clipboard. 將檔案複製到剪貼簿。 + - Unable to open the URL. 無法打開此連結。 - + URL copied to clipboard. 連結已複製到剪貼簿。 - + Screenshot copied to clipboard. 截圖已複製到剪貼簿。 @@ -736,12 +745,12 @@ Press Space to open the side panel. ImgurUploaderTool - + Image Uploader 上傳圖片 - + Upload the selection to Imgur 上傳到 Imgur @@ -749,7 +758,7 @@ Press Space to open the side panel. InfoWindow - + About 關於 @@ -802,12 +811,12 @@ Press Space to open the side panel. 描述 - + <u><b>License</b></u> <u><b>授權條款</b></u> - + <u><b>Version</b></u> <u><b>版本</b></u> @@ -823,12 +832,12 @@ Press Space to open the side panel. LineTool - + Line 直線 - + Set the Line as the paint tool 將直線線設定為繪畫工具 @@ -836,12 +845,12 @@ Press Space to open the side panel. MarkerTool - + Marker 標記 - + Set the Marker as the paint tool 將標記設定為繪畫工具 @@ -849,12 +858,12 @@ Press Space to open the side panel. MoveTool - + Move 移動 - + Move the selection area 移動選擇區域 @@ -862,12 +871,12 @@ Press Space to open the side panel. PencilTool - + Pencil 鉛筆 - + Set the Pencil as the paint tool 將鉛筆設定為繪畫工具 @@ -875,12 +884,12 @@ Press Space to open the side panel. PinTool - + Pin Tool - + Pin image on the desktop @@ -888,190 +897,187 @@ Press Space to open the side panel. PixelateTool - + Pixelate - + Set Pixelate as the paint tool - - QHotkey - - - Failed to register %1. Error: %2 - - - - - Failed to unregister %1. Error: %2 - - - QObject - + Save Error 存檔錯誤 - - + + Capture saved as 截圖已另存為 - + Capture saved to clipboard. - - + + Capture saved to clipboard - + Error while saving to clipboard - - + + Error trying to save as 嘗試另存新檔時發生錯誤 - + Save screenshot - + + Saving canceled + + + + + Save canceled + + + + Capture is saved and copied to the clipboard as - - - - - + + + + + Unable to connect via DBus 無法透過 DBus 進行連接 - + Powerful yet simple to use screenshot software. - + See - + Capture the entire desktop. - + Open the capture launcher. - + Start a manual capture in GUI mode. - + Configure 設定 - + Capture a single screen. - + Path where the capture will be saved - + Save the capture to the clipboard - + Delay time in milliseconds - + Set the filename pattern - + Enable or disable the trayicon - + Enable or disable run at startup - + Show the help message in the capture mode - + Define the main UI color - + Define the contrast UI color - + Print raw PNG capture - + Print geometry of the selection in the format W H X Y. Does nothing if raw is specified - + Define the screen to capture - + default: screen containing the cursor - + Screen number - + Invalid color, this flag supports the following formats: - #RGB (each of R, G, and B is a single hex digit) - #RRGGBB @@ -1082,72 +1088,72 @@ You may need to escape the '#' sign as in '\#FFF' - + Invalid delay, it must be higher than 0 - + Invalid screen number, it must be non negative - + Invalid path, it must be a real path in the system - + Invalid value, it must be defined as 'true' or 'false' - + Error 錯誤 - + Unable to write in 無法寫入 - + URL copied to clipboard. 連結已複製到剪貼簿。 - + Options - + Arguments - + arguments - + Usage - + options - + Per default runs Flameshot in the background and adds a tray icon for configuration. - + Hello, I'm here! Click icon in the tray to take a screenshot or click with a right button to see more options. @@ -1207,29 +1213,35 @@ You may need to escape the '#' sign as in '\#FFF' - + + + Delete current tool + + + + Quit capture 結束擷取 - - + + Screenshot history - - + + Capture screen - + Show color picker 顯示顏色選擇器 - + Change the tool's thickness 改變工具的寬度 @@ -1237,12 +1249,12 @@ You may need to escape the '#' sign as in '\#FFF' RectangleTool - + Rectangle 實心矩形 - + Set the Rectangle as the paint tool 將實心矩形設定為繪畫工具 @@ -1250,12 +1262,12 @@ You may need to escape the '#' sign as in '\#FFF' RedoTool - + Redo - + Redo the next modification @@ -1263,12 +1275,12 @@ You may need to escape the '#' sign as in '\#FFF' SaveTool - + Save 儲存 - + Save the capture 儲存擷取 @@ -1276,7 +1288,7 @@ You may need to escape the '#' sign as in '\#FFF' ScreenGrabber - + Unable to capture screen 無法擷取螢幕 @@ -1284,12 +1296,12 @@ You may need to escape the '#' sign as in '\#FFF' SelectionTool - + Rectangular Selection 矩形選擇 - + Set Selection as the paint tool 將矩形選擇設定為繪畫工具 @@ -1297,17 +1309,22 @@ You may need to escape the '#' sign as in '\#FFF' SetShortcutDialog - + Set Shortcut - + Enter new shortcut to change - + + Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut. + + + + Press Esc to cancel or Backspace to disable the keyboard shortcut. @@ -1315,22 +1332,22 @@ You may need to escape the '#' sign as in '\#FFF' ShortcutsWidget - + Hot Keys - + Available shortcuts in the screen capture mode. 螢幕擷取模式中的可用快速鍵。 - + Description 描述 - + Key @@ -1338,35 +1355,61 @@ You may need to escape the '#' sign as in '\#FFF' SidePanelWidget - + Active thickness: - + Active color: - + Press ESC to cancel - + Grab Color + + SizeDecreaseTool + + + Decrease Tool Size + + + + + Decrease the size of the other tools + + + + + SizeIncreaseTool + + + Increase Tool Size + + + + + Increase the size of the other tools + + + SizeIndicatorTool - + Selection Size Indicator 選擇尺寸指示 - + Show the dimensions of the selection (X Y) 顯示選擇的尺寸 (X Y) @@ -1374,107 +1417,107 @@ You may need to escape the '#' sign as in '\#FFF' StrftimeChooserWidget - + Century (00-99) 世紀 (00-99) - + Year (00-99) 年 (00-99) - + Year (2000) 年 (2000) - + Month Name (jan) 月 (一) - + Month Name (january) 月 (一月) - + Month (01-12) 月 (01-12) - + Week Day (1-7) 平常日 (1-7) - + Week (01-53) 周 (01-53) - + Day Name (mon) 星期 (一) - + Day Name (monday) 星期 (一) - + Day (01-31) 天 (01-31) - + Day of Month (1-31) 一月中的某天 (1-31) - + Day (001-366) 天 (001-366) - + Time (%H-%M-%S) 時間 (%H-%M-%S) - + Time (%H-%M) 時間 (%H-%M) - + Hour (00-23) 小時 (00-23) - + Hour (01-12) 小時 (01-12) - + Minute (00-59) 分鐘 (00-59) - + Second (00-59) 秒 (00-59) - + Full Date (%m/%d/%y) 日期 (%m/%d/%y) - + Full Date (%Y-%m-%d) 日期 (%Y-%m-%d) @@ -1490,22 +1533,22 @@ You may need to escape the '#' sign as in '\#FFF' TextConfig - + StrikeOut 刪除線 - + Underline 底線 - + Bold 粗體 - + Italic 斜體 @@ -1513,12 +1556,12 @@ You may need to escape the '#' sign as in '\#FFF' TextTool - + Text - + Add text to your capture @@ -1526,37 +1569,37 @@ You may need to escape the '#' sign as in '\#FFF' UIcolorEditor - + UI Color Editor UI 顏色編輯器 - + Change the color moving the selectors and see the changes in the preview buttons. 移動顏色選擇並在預覽按鈕檢視。 - + Select a Button to modify it 選擇一個按鈕來修改它 - + Main Color 主色 - + Click on this button to set the edition mode of the main color. 點選按鈕來設定主要顏色。 - + Contrast Color 對比色 - + Click on this button to set the edition mode of the contrast color. 點選按鈕來設定對比顏色。 @@ -1564,12 +1607,12 @@ You may need to escape the '#' sign as in '\#FFF' UndoTool - + Undo 復原 - + Undo the last modification 復原上次修改 @@ -1600,25 +1643,30 @@ You may need to escape the '#' sign as in '\#FFF' UtilityPanel - + Close 關閉 + + + <Empty> + + VisualsEditor - + Opacity of area outside selection: 選擇區域以外的不透明度: - + Button Selection 按鈕選擇 - + Select All 全選 diff --git a/packaging/macos/siqn_qtapp.sh b/packaging/macos/sign_qtapp.sh similarity index 100% rename from packaging/macos/siqn_qtapp.sh rename to packaging/macos/sign_qtapp.sh diff --git a/src/config/filenameeditor.cpp b/src/config/filenameeditor.cpp index d03d380a..df6ca298 100644 --- a/src/config/filenameeditor.cpp +++ b/src/config/filenameeditor.cpp @@ -74,15 +74,17 @@ void FileNameEditor::initWidgets() connect( m_saveButton, &QPushButton::clicked, this, &FileNameEditor::savePattern); m_saveButton->setToolTip(tr("Saves the pattern")); - // reset - m_resetButton = new QPushButton(tr("Reset"), this); + // restore previous saved values + m_resetButton = new QPushButton(tr("Restore"), this); connect( m_resetButton, &QPushButton::clicked, this, &FileNameEditor::resetName); m_resetButton->setToolTip(tr("Restores the saved pattern")); // clear m_clearButton = new QPushButton(tr("Clear"), this); connect(m_clearButton, &QPushButton::clicked, this, [this]() { - m_nameEditor->setText(QString()); + m_nameEditor->setText(ConfigHandler().filenamePatternDefault()); + m_nameEditor->selectAll(); + m_nameEditor->setFocus(); }); m_clearButton->setToolTip(tr("Deletes the name")); } diff --git a/src/config/generalconf.cpp b/src/config/generalconf.cpp index 033622d5..63eeac0a 100644 --- a/src/config/generalconf.cpp +++ b/src/config/generalconf.cpp @@ -53,6 +53,7 @@ void GeneralConf::updateComponents() m_saveAfterCopy->setChecked(config.saveAfterCopyValue()); m_copyPathAfterSave->setChecked(config.copyPathAfterSaveEnabled()); m_useJpgForClipboard->setChecked(config.useJpgForClipboard()); + m_uploadHistoryMaxSize->setValue(config.uploadHistoryMaxSizeValue()); if (!config.savePath().isEmpty()) { m_savePath->setText(config.savePath()); diff --git a/src/config/setshortcutwidget.cpp b/src/config/setshortcutwidget.cpp index 92a7abb9..fcd5efcb 100644 --- a/src/config/setshortcutwidget.cpp +++ b/src/config/setshortcutwidget.cpp @@ -31,8 +31,13 @@ SetShortcutDialog::SetShortcutDialog(QDialog* parent) m_layout->addWidget(infoIcon); +#if defined(Q_OS_MAC) + QLabel* infoBottom = new QLabel(tr( + "Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut.")); +#else QLabel* infoBottom = new QLabel( tr("Press Esc to cancel or Backspace to disable the keyboard shortcut.")); +#endif infoBottom->setMargin(10); infoBottom->setAlignment(Qt::AlignCenter); m_layout->addWidget(infoBottom); diff --git a/src/config/shortcutswidget.cpp b/src/config/shortcutswidget.cpp index df6c2abc..7a3e2331 100644 --- a/src/config/shortcutswidget.cpp +++ b/src/config/shortcutswidget.cpp @@ -129,9 +129,15 @@ void ShortcutsWidget::slotShortcutCellClicked(int row, int col) QKeySequence shortcutValue = setShortcutDialog->shortcut(); // set no shortcut is Backspace +#if defined(Q_OS_MACOS) + if (shortcutValue == QKeySequence(Qt::CTRL + Qt::Key_Backspace)) { + shortcutValue = QKeySequence(""); + } +#else if (shortcutValue == QKeySequence(Qt::Key_Backspace)) { shortcutValue = QKeySequence(""); } +#endif if (m_config.setShortcut(shortcutName, shortcutValue.toString())) { #if defined(Q_OS_MACOS) diff --git a/src/core/controller.cpp b/src/core/controller.cpp index 1e5c16c0..ffe0ad52 100644 --- a/src/core/controller.cpp +++ b/src/core/controller.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -315,7 +316,7 @@ void Controller::startVisualCapture(const uint id, m_captureWindow->raise(); #else m_captureWindow->showFullScreen(); - // m_captureWindow->show(); //Debug +// m_captureWindow->show(); // For CaptureWidget Debugging under Linux #endif if (!m_appLatestUrl.isEmpty() && ConfigHandler().ignoreUpdateToVersion().compare( diff --git a/src/core/globalshortcutfilter.cpp b/src/core/globalshortcutfilter.cpp index 9dbbf408..4c857425 100644 --- a/src/core/globalshortcutfilter.cpp +++ b/src/core/globalshortcutfilter.cpp @@ -22,8 +22,8 @@ bool GlobalShortcutFilter::nativeEventFilter(const QByteArray& eventType, void* message, long* result) { - Q_UNUSED(eventType); - Q_UNUSED(result); + Q_UNUSED(eventType) + Q_UNUSED(result) MSG* msg = static_cast(message); if (msg->message == WM_HOTKEY) { diff --git a/src/tools/abstractactiontool.cpp b/src/tools/abstractactiontool.cpp index 99d96054..17e7dc62 100644 --- a/src/tools/abstractactiontool.cpp +++ b/src/tools/abstractactiontool.cpp @@ -22,48 +22,40 @@ bool AbstractActionTool::showMousePreview() const return false; } -void AbstractActionTool::undo(QPixmap& pixmap) +void AbstractActionTool::process(QPainter& painter, const QPixmap& pixmap) { - Q_UNUSED(pixmap); -} - -void AbstractActionTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) -{ - Q_UNUSED(painter); - Q_UNUSED(pixmap); - Q_UNUSED(recordUndo); + Q_UNUSED(painter) + Q_UNUSED(pixmap) } void AbstractActionTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - Q_UNUSED(painter); - Q_UNUSED(context); + Q_UNUSED(painter) + Q_UNUSED(context) } void AbstractActionTool::drawEnd(const QPoint& p) { - Q_UNUSED(p); + Q_UNUSED(p) } void AbstractActionTool::drawMove(const QPoint& p) { - Q_UNUSED(p); + Q_UNUSED(p) } void AbstractActionTool::drawStart(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } void AbstractActionTool::colorChanged(const QColor& c) { - Q_UNUSED(c); + Q_UNUSED(c) } -void AbstractActionTool::thicknessChanged(const int th) +void AbstractActionTool::thicknessChanged(int th) { - Q_UNUSED(th); + Q_UNUSED(th) } diff --git a/src/tools/abstractactiontool.h b/src/tools/abstractactiontool.h index e4ede516..1372b5c1 100644 --- a/src/tools/abstractactiontool.h +++ b/src/tools/abstractactiontool.h @@ -15,10 +15,7 @@ public: bool isSelectable() const override; bool showMousePreview() const override; - void undo(QPixmap& pixmap) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; @@ -27,5 +24,5 @@ public slots: void drawMove(const QPoint& p) override; void drawStart(const CaptureContext& context) override; void colorChanged(const QColor& c) override; - void thicknessChanged(const int th) override; + void thicknessChanged(int th) override; }; diff --git a/src/tools/abstractpathtool.cpp b/src/tools/abstractpathtool.cpp index a60a061d..15bace1c 100644 --- a/src/tools/abstractpathtool.cpp +++ b/src/tools/abstractpathtool.cpp @@ -2,13 +2,28 @@ // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors #include "abstractpathtool.h" +#include AbstractPathTool::AbstractPathTool(QObject* parent) : CaptureTool(parent) - , m_thickness(0) + , m_thickness(1) , m_padding(0) {} +void AbstractPathTool::copyParams(const AbstractPathTool* from, + AbstractPathTool* to) +{ + to->m_color = from->m_color; + to->m_thickness = from->m_thickness; + to->m_padding = from->m_padding; + to->m_pos = from->m_pos; + + to->m_points.clear(); + for (auto point : from->m_points) { + to->m_points.append(point); + } +} + bool AbstractPathTool::isValid() const { return m_points.length() > 1; @@ -29,23 +44,9 @@ bool AbstractPathTool::showMousePreview() const return true; } -void AbstractPathTool::undo(QPixmap& pixmap) -{ - QPainter p(&pixmap); -#if defined(Q_OS_MACOS) - // Not sure how will it work on 4k and fullHd on Linux or Windows with a - // capture of different displays with different DPI, so let it be MacOS - // specific only. - const qreal pixelRatio = pixmap.devicePixelRatio(); - p.drawPixmap(backupRect(pixmap).topLeft() / pixelRatio, m_pixmapBackup); -#else - p.drawPixmap(backupRect(pixmap).topLeft(), m_pixmapBackup); -#endif -} - void AbstractPathTool::drawEnd(const QPoint& p) { - Q_UNUSED(p); + Q_UNUSED(p) } void AbstractPathTool::drawMove(const QPoint& p) @@ -58,49 +59,85 @@ void AbstractPathTool::colorChanged(const QColor& c) m_color = c; } -void AbstractPathTool::thicknessChanged(const int th) +void AbstractPathTool::thicknessChanged(int th) { m_thickness = th; } -void AbstractPathTool::updateBackup(const QPixmap& pixmap) -{ - m_pixmapBackup = pixmap.copy(backupRect(pixmap)); -} - -QRect AbstractPathTool::backupRect(const QPixmap& pixmap) const -{ - const QRect& limits = pixmap.rect(); -#if defined(Q_OS_MACOS) - // Not sure how will it work on 4k and fullHd on Linux or Windows with a - // capture of different displays with different DPI, so let it be MacOS - // specific only. - const qreal pixelRatio = pixmap.devicePixelRatio(); - const int val = (m_thickness + m_padding) * pixelRatio; - QRect r = m_backupArea.normalized(); - if (1 != pixelRatio) { - r.moveTo(r.topLeft() * pixelRatio); - r.setSize(r.size() * pixelRatio); - } -#else - const int val = m_thickness + m_padding; - QRect r = m_backupArea.normalized(); -#endif - r += QMargins(val, val, val, val); - return r.intersected(limits); -} - void AbstractPathTool::addPoint(const QPoint& point) { - if (m_backupArea.left() > point.x()) { - m_backupArea.setLeft(point.x()); - } else if (m_backupArea.right() < point.x()) { - m_backupArea.setRight(point.x()); + if (m_pathArea.left() > point.x()) { + m_pathArea.setLeft(point.x()); + } else if (m_pathArea.right() < point.x()) { + m_pathArea.setRight(point.x()); } - if (m_backupArea.top() > point.y()) { - m_backupArea.setTop(point.y()); - } else if (m_backupArea.bottom() < point.y()) { - m_backupArea.setBottom(point.y()); + if (m_pathArea.top() > point.y()) { + m_pathArea.setTop(point.y()); + } else if (m_pathArea.bottom() < point.y()) { + m_pathArea.setBottom(point.y()); } m_points.append(point); } + +void AbstractPathTool::move(const QPoint& mousePos) +{ + if (m_points.empty()) { + return; + } + QPoint basePos = *pos(); + QPoint offset = mousePos - basePos; + for (int index = 0; index < m_points.size(); ++index) { + m_points[index] += offset; + } +} + +void AbstractPathTool::drawObjectSelection(QPainter& painter) +{ + int min_x = m_points.at(0).x(); + int min_y = m_points.at(0).y(); + int max_x = m_points.at(0).x(); + int max_y = m_points.at(0).y(); + for (auto point : m_points) { + if (point.x() < min_x) { + min_x = point.x(); + } + if (point.y() < min_y) { + min_y = point.y(); + } + if (point.x() > max_x) { + max_x = point.x(); + } + if (point.y() > max_y) { + max_y = point.y(); + } + } + + int offset = + m_thickness <= 1 ? 1 : static_cast(round(m_thickness / 2 + 0.5)); + QRect rect = QRect(min_x - offset, + min_y - offset, + std::abs(min_x - max_x) + offset * 2, + std::abs(min_y - max_y) + offset * 2); + drawObjectSelectionRect(painter, rect); +} + +const QPoint* AbstractPathTool::pos() +{ + if (m_points.empty()) { + m_pos = QPoint(); + return &m_pos; + } + int x = m_points.at(0).x(); + int y = m_points.at(0).y(); + for (auto point : m_points) { + if (point.x() < x) { + x = point.x(); + } + if (point.y() < y) { + y = point.y(); + } + } + m_pos.setX(x); + m_pos.setY(y); + return &m_pos; +} diff --git a/src/tools/abstractpathtool.h b/src/tools/abstractpathtool.h index 6b89d0ca..c134ee2f 100644 --- a/src/tools/abstractpathtool.h +++ b/src/tools/abstractpathtool.h @@ -15,25 +15,29 @@ public: bool closeOnButtonPressed() const override; bool isSelectable() const override; bool showMousePreview() const override; - - void undo(QPixmap& pixmap) override; + void move(const QPoint& mousePos) override; + const QPoint* pos() override; + void drawObjectSelection(QPainter& painter) override; + int thickness() override { return m_thickness; }; public slots: void drawEnd(const QPoint& p) override; void drawMove(const QPoint& p) override; void colorChanged(const QColor& c) override; - void thicknessChanged(const int th) override; + void thicknessChanged(int th) override; protected: - void updateBackup(const QPixmap& pixmap); + void copyParams(const AbstractPathTool* from, AbstractPathTool* to); void addPoint(const QPoint& point); - QRect backupRect(const QPixmap& pixmap) const; - QPixmap m_pixmapBackup; - QRect m_backupArea; + // class members + QRect m_pathArea; QColor m_color; QVector m_points; - int m_thickness; // use m_padding to extend the area of the backup int m_padding; + QPoint m_pos; + +private: + int m_thickness; }; diff --git a/src/tools/abstracttwopointtool.cpp b/src/tools/abstracttwopointtool.cpp index 20f30aa3..a1341441 100644 --- a/src/tools/abstracttwopointtool.cpp +++ b/src/tools/abstracttwopointtool.cpp @@ -6,6 +6,8 @@ #include #include +#define PADDING_VALUE_DEFAULT 2 + namespace { const double ADJ_UNIT = std::atan(1.0); @@ -15,8 +17,7 @@ enum UNIT { HORIZ_DIR = 0, DIAG1_DIR = 1, - VERT_DIR = 2, - DIAG2_DIR = 3 + VERT_DIR = 2 }; const double ADJ_DIAG_UNIT = 2 * ADJ_UNIT; @@ -24,18 +25,30 @@ const int DIAG_DIRS_NUMBER = 2; enum DIAG_UNIT { - DIR1 = 0, - DIR2 = 1 + DIR1 = 0 }; } AbstractTwoPointTool::AbstractTwoPointTool(QObject* parent) : CaptureTool(parent) - , m_thickness(0) + , m_thickness(1) , m_padding(0) {} +void AbstractTwoPointTool::copyParams(const AbstractTwoPointTool* from, + AbstractTwoPointTool* to) +{ + CaptureTool::copyParams(from, to); + to->m_points.first = from->m_points.first; + to->m_points.second = from->m_points.second; + to->m_color = from->m_color; + to->m_thickness = from->m_thickness; + to->m_padding = from->m_padding; + to->m_supportsOrthogonalAdj = from->m_supportsOrthogonalAdj; + to->m_supportsDiagonalAdj = from->m_supportsDiagonalAdj; +} + bool AbstractTwoPointTool::isValid() const { return (m_points.first != m_points.second); @@ -56,26 +69,9 @@ bool AbstractTwoPointTool::showMousePreview() const return true; } -void AbstractTwoPointTool::undo(QPixmap& pixmap) -{ - QPainter p(&pixmap); -#if defined(Q_OS_MACOS) - // Not sure how will it work on 4k and fullHd on Linux or Windows with a - // capture of different displays with different DPI, so let it be MacOS - // specific only. - const qreal pixelRatio = pixmap.devicePixelRatio(); - p.drawPixmap(backupRect(pixmap).topLeft() / pixelRatio, m_pixmapBackup); -#else - p.drawPixmap(backupRect(pixmap).topLeft(), m_pixmapBackup); -#endif - if (this->nameID() == ToolType::CIRCLECOUNT) { - emit requestAction(REQ_DECREMENT_CIRCLE_COUNT); - } -} - void AbstractTwoPointTool::drawEnd(const QPoint& p) { - Q_UNUSED(p); + Q_UNUSED(p) } void AbstractTwoPointTool::drawMove(const QPoint& p) @@ -93,35 +89,25 @@ void AbstractTwoPointTool::colorChanged(const QColor& c) m_color = c; } -void AbstractTwoPointTool::thicknessChanged(const int th) +void AbstractTwoPointTool::thicknessChanged(int th) { m_thickness = th; } -void AbstractTwoPointTool::updateBackup(const QPixmap& pixmap) +void AbstractTwoPointTool::paintMousePreview(QPainter& painter, + const CaptureContext& context) { - m_pixmapBackup = pixmap.copy(backupRect(pixmap)); + painter.setPen( + QPen(context.color, context.thickness + PADDING_VALUE_DEFAULT)); + painter.drawLine(context.mousePos, context.mousePos); } -QRect AbstractTwoPointTool::backupRect(const QPixmap& pixmap) const +void AbstractTwoPointTool::drawStart(const CaptureContext& context) { - const QRect& limits = pixmap.rect(); - QRect r = QRect(m_points.first, m_points.second).normalized(); -#if defined(Q_OS_MACOS) - // Not sure how will it work on 4k and fullHd on Linux or Windows with a - // capture of different displays with different DPI, so let it be MacOS - // specific only. - const qreal pixelRatio = pixmap.devicePixelRatio(); - if (1 != pixelRatio) { - r.moveTo(r.topLeft() * pixelRatio); - r.setSize(r.size() * pixelRatio); - } - const int val = (m_thickness + m_padding) * pixelRatio; -#else - const int val = (m_thickness + m_padding); -#endif - r += QMargins(val, val, val, val); - return r.intersected(limits); + colorChanged(context.color); + m_points.first = context.mousePos; + m_points.second = context.mousePos; + thicknessChanged(context.thickness + PADDING_VALUE_DEFAULT); } QPoint AbstractTwoPointTool::adjustedVector(QPoint v) const @@ -165,3 +151,27 @@ QPoint AbstractTwoPointTool::adjustedVector(QPoint v) const } return v; } + +void AbstractTwoPointTool::move(const QPoint& pos) +{ + QPoint offset = m_points.second - m_points.first; + m_points.first = pos; + m_points.second = m_points.first + offset; +} + +const QPoint* AbstractTwoPointTool::pos() +{ + return &m_points.first; +} + +void AbstractTwoPointTool::drawObjectSelection(QPainter& painter) +{ + int offset = + m_thickness <= 1 ? 1 : static_cast(round(m_thickness / 2 + 0.5)); + QRect rect = + QRect(std::min(m_points.first.x(), m_points.second.x()) - offset, + std::min(m_points.first.y(), m_points.second.y()) - offset, + std::abs(m_points.first.x() - m_points.second.x()) + offset * 2, + std::abs(m_points.first.y() - m_points.second.y()) + offset * 2); + drawObjectSelectionRect(painter, rect); +} diff --git a/src/tools/abstracttwopointtool.h b/src/tools/abstracttwopointtool.h index 2447be18..d245ec40 100644 --- a/src/tools/abstracttwopointtool.h +++ b/src/tools/abstracttwopointtool.h @@ -15,30 +15,39 @@ public: bool closeOnButtonPressed() const override; bool isSelectable() const override; bool showMousePreview() const override; - - void undo(QPixmap& pixmap) override; + void move(const QPoint& pos) override; + const QPoint* pos() override; + void drawObjectSelection(QPainter& painter) override; + int thickness() override { return m_thickness; }; + const QColor& color() { return m_color; }; + const QPair points() { return m_points; }; + void paintMousePreview(QPainter& painter, + const CaptureContext& context) override; public slots: void drawEnd(const QPoint& p) override; void drawMove(const QPoint& p) override; void drawMoveWithAdjustment(const QPoint& p) override; void colorChanged(const QColor& c) override; - void thicknessChanged(const int th) override; - -protected: - void updateBackup(const QPixmap& pixmap); - QRect backupRect(const QPixmap& pixmap) const; - - QPixmap m_pixmapBackup; - QPair m_points; - QColor m_color; - int m_thickness; - // use m_padding to extend the area of the backup - int m_padding; - - bool m_supportsOrthogonalAdj = false; - bool m_supportsDiagonalAdj = false; + void thicknessChanged(int th) override; + virtual void drawStart(const CaptureContext& context) override; private: QPoint adjustedVector(QPoint v) const; + +protected: + void copyParams(const AbstractTwoPointTool* from, AbstractTwoPointTool* to); + void setPadding(int padding) { m_padding = padding; }; + +private: + // class members + int m_thickness; + int m_padding; + QColor m_color; + QPair m_points; + +protected: + // use m_padding to extend the area of the backup + bool m_supportsOrthogonalAdj = false; + bool m_supportsDiagonalAdj = false; }; diff --git a/src/tools/arrow/arrowtool.cpp b/src/tools/arrow/arrowtool.cpp index 204b7b54..6b63fb25 100644 --- a/src/tools/arrow/arrowtool.cpp +++ b/src/tools/arrow/arrowtool.cpp @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors #include "arrowtool.h" +#include namespace { @@ -17,11 +18,11 @@ QPainterPath getArrowHead(QPoint p1, QPoint p2, const int thickness) QLineF temp(QPoint(0, 0), p2 - p1); int val = ArrowHeight + thickness * 4; if (base.length() < val) { - val = (base.length() + thickness * 2); + val = static_cast(base.length() + thickness * 2); } temp.setLength(base.length() + thickness * 2 - val); // Move across the line up to the head - QPointF bottonTranslation(temp.p2()); + QPointF bottomTranslation(temp.p2()); // Rotate base of the arrowhead base.setLength(ArrowWidth + thickness * 2); @@ -31,7 +32,7 @@ QPainterPath getArrowHead(QPoint p1, QPoint p2, const int thickness) // Center it QPointF centerTranslation((temp2.x() / 2), (temp2.y() / 2)); - base.translate(bottonTranslation); + base.translate(bottomTranslation); base.translate(centerTranslation); QPainterPath path; @@ -48,7 +49,7 @@ QLine getShorterLine(QPoint p1, QPoint p2, const int thickness) QLineF l(p1, p2); int val = ArrowHeight + thickness * 4; if (l.length() < val) { - val = (l.length() + thickness * 2); + val = static_cast(l.length() + thickness * 2); } l.setLength(l.length() + thickness * 2 - val); return l.toLine(); @@ -59,14 +60,14 @@ QLine getShorterLine(QPoint p1, QPoint p2, const int thickness) ArrowTool::ArrowTool(QObject* parent) : AbstractTwoPointTool(parent) { - m_padding = ArrowWidth / 2; + setPadding(ArrowWidth / 2); m_supportsOrthogonalAdj = true; m_supportsDiagonalAdj = true; } QIcon ArrowTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "arrow-bottom-left.svg"); } QString ArrowTool::name() const @@ -86,39 +87,71 @@ QString ArrowTool::description() const CaptureTool* ArrowTool::copy(QObject* parent) { - return new ArrowTool(parent); + ArrowTool* tool = new ArrowTool(parent); + copyParams(this, tool); + return tool; } -void ArrowTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void ArrowTool::copyParams(const ArrowTool* from, ArrowTool* to) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); + AbstractTwoPointTool::copyParams(from, to); + to->m_arrowPath = this->m_arrowPath; +} + +void ArrowTool::process(QPainter& painter, const QPixmap& pixmap) +{ + Q_UNUSED(pixmap) + painter.setPen(QPen(color(), thickness())); painter.drawLine( - getShorterLine(m_points.first, m_points.second, m_thickness)); - painter.fillPath(getArrowHead(m_points.first, m_points.second, m_thickness), - QBrush(m_color)); -} - -void ArrowTool::paintMousePreview(QPainter& painter, - const CaptureContext& context) -{ - painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); - painter.drawLine(context.mousePos, context.mousePos); -} - -void ArrowTool::drawStart(const CaptureContext& context) -{ - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + getShorterLine(points().first, points().second, thickness())); + m_arrowPath = getArrowHead(points().first, points().second, thickness()); + painter.fillPath(m_arrowPath, QBrush(color())); } void ArrowTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) +} + +void ArrowTool::drawObjectSelection(QPainter& painter) +{ + int offset = + thickness() <= 1 ? 1 : static_cast(round(thickness() / 2 + 0.5)); + + // get min and max arrow pos + int min_x = points().first.x(); + int min_y = points().first.y(); + int max_x = points().first.x(); + int max_y = points().first.y(); + for (int i = 0; i < m_arrowPath.elementCount(); i++) { + QPointF pt = m_arrowPath.elementAt(i); + if (static_cast(pt.x()) < min_x) { + min_x = static_cast(pt.x()); + } + if (static_cast(pt.y()) < min_y) { + min_y = static_cast(pt.y()); + } + if (static_cast(pt.x()) > max_x) { + max_x = static_cast(pt.x()); + } + if (static_cast(pt.y()) > max_y) { + max_y = static_cast(pt.y()); + } + } + + // get min and max line pos + int line_pos_min_x = + std::min(std::min(points().first.x(), points().second.x()), min_x); + int line_pos_min_y = + std::min(std::min(points().first.y(), points().second.y()), min_y); + int line_pos_max_x = + std::max(std::max(points().first.x(), points().second.x()), max_x); + int line_pos_max_y = + std::max(std::max(points().first.y(), points().second.y()), max_y); + + QRect rect = QRect(line_pos_min_x - offset, + line_pos_min_y - offset, + line_pos_max_x - line_pos_min_x + offset * 2, + line_pos_max_y - line_pos_min_y + offset * 2); + drawObjectSelectionRect(painter, rect); } diff --git a/src/tools/arrow/arrowtool.h b/src/tools/arrow/arrowtool.h index d6d00949..d7c4e313 100644 --- a/src/tools/arrow/arrowtool.h +++ b/src/tools/arrow/arrowtool.h @@ -18,16 +18,16 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; - void paintMousePreview(QPainter& painter, - const CaptureContext& context) override; + void process(QPainter& painter, const QPixmap& pixmap) override; + void drawObjectSelection(QPainter& painter) override; protected: + void copyParams(const ArrowTool* from, ArrowTool* to); ToolType nameID() const override; public slots: - void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; + +private: + QPainterPath m_arrowPath; }; diff --git a/src/tools/capturetool.h b/src/tools/capturetool.h index 3f3160ab..71da66c5 100644 --- a/src/tools/capturetool.h +++ b/src/tools/capturetool.h @@ -66,8 +66,8 @@ public: REQ_TOGGLE_SIDEBAR, // Call update() in the editor. REQ_REDRAW, - // Append this tool to the undo/redo stack - REQ_APPEND_TO_STACK, + // Notify to redraw screenshot with tools without object selection. + REQ_CLEAR_SELECTION, // Notify is the screenshot has been saved. REQ_CAPTURE_DONE_OK, // Instance this->widget()'s widget inside the editor under the mouse. @@ -77,10 +77,6 @@ public: REQ_ADD_CHILD_WINDOW, // Instance this->widget()'s widget which handles its own lifetime. REQ_ADD_EXTERNAL_WIDGETS, - - REQ_INCREMENT_CIRCLE_COUNT, - - REQ_DECREMENT_CIRCLE_COUNT, // increase tool size for all tools REQ_INCREASE_TOOL_SIZE, // decrease tool size for all tools @@ -89,6 +85,7 @@ public: explicit CaptureTool(QObject* parent = nullptr) : QObject(parent) + , m_count(0) {} virtual void setCapture(const QPixmap& pixmap){}; @@ -123,35 +120,61 @@ public: // When the tool is selected this method is called and the widget is added // to the configuration panel inside the main widget. virtual QWidget* configurationWidget() { return nullptr; } - // Permanent configuration used in the configuration outside of the - // capture. - virtual QWidget* permanentConfigurationWidget() { return nullptr; } // Return a copy of the tool virtual CaptureTool* copy(QObject* parent = nullptr) = 0; - // revert changes - virtual void undo(QPixmap& pixmap) = 0; + // Counter for all object types (currently is used for the CircleCounter + // only) + virtual void setCount(int count) { m_count = count; }; + virtual int count() { return m_count; }; + // Called every time the tool has to draw // recordUndo indicates when the tool should save the information // for the undo(), if the value is false calling undo() after // that process should not modify revert the changes. - virtual void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) = 0; + virtual void process(QPainter& painter, const QPixmap& pixmap) = 0; + virtual void drawSearchArea(QPainter& painter, const QPixmap& pixmap) + { + process(painter, pixmap); + }; + virtual void drawObjectSelection(QPainter& painter) { Q_UNUSED(painter) }; // When the tool is selected, this is called when the mouse moves virtual void paintMousePreview(QPainter& painter, const CaptureContext& context) = 0; + // Move tool objects + virtual void move(const QPoint& pos) { Q_UNUSED(pos) }; + virtual const QPoint* pos() { return nullptr; }; + + // get selection region + const QRect& selectionRect() { return m_selectionRect; }; + signals: void requestAction(Request r); protected: + void copyParams(const CaptureTool* from, CaptureTool* to) + { + to->m_count = from->m_count; + } + QString iconPath(const QColor& c) const { return ColorUtils::colorIsDark(c) ? PathInfo::whiteIconPath() : PathInfo::blackIconPath(); } + void drawObjectSelectionRect(QPainter& painter, QRect rect) + { + QPen orig_pen = painter.pen(); + painter.setPen(QPen(Qt::black, 3)); + painter.drawRect(rect); + painter.setPen(QPen(Qt::white, 1, Qt::DotLine)); + painter.drawRect(rect); + painter.setPen(orig_pen); + m_selectionRect = rect; + } + public slots: // On mouse release. virtual void drawEnd(const QPoint& p) = 0; @@ -167,5 +190,10 @@ public slots: // Called when the color is changed in the editor. virtual void colorChanged(const QColor& c) = 0; // Called when the thickness of the tool is updated in the editor. - virtual void thicknessChanged(const int th) = 0; + virtual void thicknessChanged(int th) = 0; + virtual int thickness() { return -1; }; + +private: + unsigned int m_count; + QRect m_selectionRect; }; diff --git a/src/tools/circle/circletool.cpp b/src/tools/circle/circletool.cpp index 80cc516f..744fc0dc 100644 --- a/src/tools/circle/circletool.cpp +++ b/src/tools/circle/circletool.cpp @@ -16,7 +16,7 @@ CircleTool::CircleTool(QObject* parent) QIcon CircleTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "circle-outline.svg"); } QString CircleTool::name() const @@ -36,36 +36,19 @@ QString CircleTool::description() const CaptureTool* CircleTool::copy(QObject* parent) { - return new CircleTool(parent); + auto* tool = new CircleTool(parent); + copyParams(this, tool); + return tool; } -void CircleTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void CircleTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); - painter.drawEllipse(QRect(m_points.first, m_points.second)); -} - -void CircleTool::paintMousePreview(QPainter& painter, - const CaptureContext& context) -{ - painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); - painter.drawLine(context.mousePos, context.mousePos); -} - -void CircleTool::drawStart(const CaptureContext& context) -{ - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + Q_UNUSED(pixmap) + painter.setPen(QPen(color(), thickness())); + painter.drawEllipse(QRect(points().first, points().second)); } void CircleTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/circle/circletool.h b/src/tools/circle/circletool.h index 01738f3b..c2bedc84 100644 --- a/src/tools/circle/circletool.h +++ b/src/tools/circle/circletool.h @@ -16,16 +16,11 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; - void paintMousePreview(QPainter& painter, - const CaptureContext& context) override; + void process(QPainter& painter, const QPixmap& pixmap) override; protected: ToolType nameID() const override; public slots: - void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; }; diff --git a/src/tools/circlecount/circlecounttool.cpp b/src/tools/circlecount/circlecounttool.cpp index 5b8aba1b..646ca4a5 100644 --- a/src/tools/circlecount/circlecounttool.cpp +++ b/src/tools/circlecount/circlecounttool.cpp @@ -6,21 +6,19 @@ #include #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG #include "spdlog/cfg/env.h" -#include "spdlog/spdlog.h" namespace { #define PADDING_VALUE 2 +#define THICKNESS_OFFSET 15 } CircleCountTool::CircleCountTool(QObject* parent) : AbstractTwoPointTool(parent) -{ - m_count = 0; -} +{} QIcon CircleCountTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "circlecount-outline.svg"); } QString CircleCountTool::name() const @@ -40,35 +38,46 @@ QString CircleCountTool::description() const CaptureTool* CircleCountTool::copy(QObject* parent) { - return new CircleCountTool(parent); + auto* tool = new CircleCountTool(parent); + copyParams(this, tool); + return tool; } -void CircleCountTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void CircleCountTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setBrush(m_color); + Q_UNUSED(pixmap) + // save current pen, brush, and font state + auto orig_pen = painter.pen(); + auto orig_brush = painter.brush(); + auto orig_font = painter.font(); - int bubble_size = m_thickness; - // Decrease by 1px so the border is properly ereased when doing undo - painter.drawEllipse(m_points.first, bubble_size - 1, bubble_size - 1); - QRect textRect = QRect(m_points.first.x() - bubble_size / 2, - m_points.first.y() - bubble_size / 2, + QColor contrastColor = + ColorUtils::colorIsDark(color()) ? Qt::white : Qt::black; + QColor antiContrastColor = + ColorUtils::colorIsDark(color()) ? Qt::black : Qt::white; + + int bubble_size = thickness() + THICKNESS_OFFSET; + painter.setPen(contrastColor); + painter.setBrush(antiContrastColor); + painter.drawEllipse( + points().first, bubble_size + PADDING_VALUE, bubble_size + PADDING_VALUE); + painter.setBrush(color()); + painter.drawEllipse(points().first, bubble_size, bubble_size); + QRect textRect = QRect(points().first.x() - bubble_size / 2, + points().first.y() - bubble_size / 2, bubble_size, bubble_size); - auto orig_font = painter.font(); auto new_font = orig_font; auto fontSize = bubble_size; new_font.setPixelSize(fontSize); new_font.setBold(true); painter.setFont(new_font); + // Draw bounding circle QRect bRect = - painter.boundingRect(textRect, Qt::AlignCenter, QString::number(m_count)); + painter.boundingRect(textRect, Qt::AlignCenter, QString::number(count())); + // Calculate font size while (bRect.width() > textRect.width()) { fontSize--; if (fontSize == 0) { @@ -76,49 +85,57 @@ void CircleCountTool::process(QPainter& painter, } new_font.setPixelSize(fontSize); painter.setFont(new_font); - bRect = painter.boundingRect( - textRect, Qt::AlignCenter, QString::number(m_count)); + textRect, Qt::AlignCenter, QString::number(count())); } - if (ColorUtils::colorIsDark(m_color)) { - painter.setPen(Qt::white); - } else { - painter.setPen(Qt::black); - } + // Draw text + painter.setPen(contrastColor); + painter.drawText(textRect, Qt::AlignCenter, QString::number(count())); - painter.drawText(textRect, Qt::AlignCenter, QString::number(m_count)); + // restore original font, brush, and pen painter.setFont(orig_font); + painter.setBrush(orig_brush); + painter.setPen(orig_pen); +} + +void CircleCountTool::drawObjectSelection(QPainter& painter) +{ + int bubble_size = thickness() + THICKNESS_OFFSET + PADDING_VALUE; + drawObjectSelectionRect(painter, + QRect(points().first.x() - bubble_size, + points().first.y() - bubble_size, + bubble_size * 2, + bubble_size * 2)); } void CircleCountTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - m_thickness = context.thickness + PADDING_VALUE; - if (m_thickness < 15) { - m_thickness = 15; - } + thicknessChanged(context.thickness + PADDING_VALUE); // Thickness for pen is *2 to range from radius to diameter to match the // ellipse draw function - painter.setPen( - QPen(context.color, m_thickness * 2, Qt::SolidLine, Qt::RoundCap)); + auto orig_pen = painter.pen(); + auto orig_opacity = painter.opacity(); + painter.setOpacity(0.35); + painter.setPen(QPen(context.color, + (thickness() + THICKNESS_OFFSET) * 2, + Qt::SolidLine, + Qt::RoundCap)); painter.drawLine(context.mousePos, { context.mousePos.x() + 1, context.mousePos.y() + 1 }); + painter.setOpacity(orig_opacity); + painter.setPen(orig_pen); } void CircleCountTool::drawStart(const CaptureContext& context) { - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - if (m_thickness < 15) { - m_thickness = 15; - } - m_points.first = context.mousePos; - m_count = context.circleCount; + AbstractTwoPointTool::drawStart(context); + setCount(context.circleCount); } void CircleCountTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/circlecount/circlecounttool.h b/src/tools/circlecount/circlecounttool.h index 6d82945a..2b852119 100644 --- a/src/tools/circlecount/circlecounttool.h +++ b/src/tools/circlecount/circlecounttool.h @@ -16,17 +16,14 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; + void drawObjectSelection(QPainter& painter) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; protected: ToolType nameID() const override; -private: - unsigned int m_count; public slots: void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; diff --git a/src/tools/copy/copytool.cpp b/src/tools/copy/copytool.cpp index 99acab85..0d1e3065 100644 --- a/src/tools/copy/copytool.cpp +++ b/src/tools/copy/copytool.cpp @@ -16,7 +16,7 @@ bool CopyTool::closeOnButtonPressed() const QIcon CopyTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "content-copy.svg"); } QString CopyTool::name() const diff --git a/src/tools/exit/exittool.cpp b/src/tools/exit/exittool.cpp index 07095e64..8e5feca2 100644 --- a/src/tools/exit/exittool.cpp +++ b/src/tools/exit/exittool.cpp @@ -15,7 +15,7 @@ bool ExitTool::closeOnButtonPressed() const QIcon ExitTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "close.svg"); } QString ExitTool::name() const @@ -40,6 +40,6 @@ CaptureTool* ExitTool::copy(QObject* parent) void ExitTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_CLOSE_GUI); } diff --git a/src/tools/imgur/imguruploadertool.cpp b/src/tools/imgur/imguruploadertool.cpp index 4755f1bf..8f780c4c 100644 --- a/src/tools/imgur/imguruploadertool.cpp +++ b/src/tools/imgur/imguruploadertool.cpp @@ -46,6 +46,7 @@ CaptureTool* ImgurUploaderTool::copy(QObject* parent) void ImgurUploaderTool::pressed(const CaptureContext& context) { + emit requestAction(REQ_CLEAR_SELECTION); capture = context.selectedScreenshotArea(); emit requestAction(REQ_CAPTURE_DONE_OK); emit requestAction(REQ_ADD_EXTERNAL_WIDGETS); diff --git a/src/tools/launcher/applaunchertool.cpp b/src/tools/launcher/applaunchertool.cpp index c540f24e..b32b9f62 100644 --- a/src/tools/launcher/applaunchertool.cpp +++ b/src/tools/launcher/applaunchertool.cpp @@ -15,7 +15,7 @@ bool AppLauncher::closeOnButtonPressed() const QIcon AppLauncher::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "open_with.svg"); } QString AppLauncher::name() const diff --git a/src/tools/launcher/launcheritemdelegate.cpp b/src/tools/launcher/launcheritemdelegate.cpp index fa368031..8c340755 100644 --- a/src/tools/launcher/launcheritemdelegate.cpp +++ b/src/tools/launcher/launcheritemdelegate.cpp @@ -24,7 +24,7 @@ void LauncherItemDelegate::paint(QPainter* painter, } QIcon icon = index.data(Qt::DecorationRole).value(); - const int iconSide = GlobalValues::buttonBaseSize() * 1.3; + const int iconSide = static_cast(GlobalValues::buttonBaseSize() * 1.3); const int halfIcon = iconSide / 2; const int halfWidth = rect.width() / 2; const int halfHeight = rect.height() / 2; @@ -46,8 +46,8 @@ void LauncherItemDelegate::paint(QPainter* painter, QSize LauncherItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { - Q_UNUSED(option); - Q_UNUSED(index); + Q_UNUSED(option) + Q_UNUSED(index) const int size = GlobalValues::buttonBaseSize(); - return QSize(size * 3.2, size * 3.7); + return QSize(static_cast(size * 3.2), static_cast(size * 3.7)); } diff --git a/src/tools/launcher/launcheritemdelegate.h b/src/tools/launcher/launcheritemdelegate.h index 10a25d2c..49c1d9d3 100644 --- a/src/tools/launcher/launcheritemdelegate.h +++ b/src/tools/launcher/launcheritemdelegate.h @@ -14,8 +14,8 @@ public: void paint(QPainter* painter, const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const override; QSize sizeHint(const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const override; }; diff --git a/src/tools/line/linetool.cpp b/src/tools/line/linetool.cpp index 68d0e342..dc553273 100644 --- a/src/tools/line/linetool.cpp +++ b/src/tools/line/linetool.cpp @@ -19,9 +19,10 @@ LineTool::LineTool(QObject* parent) QIcon LineTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "line.svg"); } + QString LineTool::name() const { return tr("Line"); @@ -39,36 +40,19 @@ QString LineTool::description() const CaptureTool* LineTool::copy(QObject* parent) { - return new LineTool(parent); + auto* tool = new LineTool(parent); + copyParams(this, tool); + return tool; } -void LineTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void LineTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); - painter.drawLine(m_points.first, m_points.second); -} - -void LineTool::paintMousePreview(QPainter& painter, - const CaptureContext& context) -{ - painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); - painter.drawLine(context.mousePos, context.mousePos); -} - -void LineTool::drawStart(const CaptureContext& context) -{ - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + Q_UNUSED(pixmap) + painter.setPen(QPen(color(), thickness())); + painter.drawLine(points().first, points().second); } void LineTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/line/linetool.h b/src/tools/line/linetool.h index 06d497da..e4ea0d18 100644 --- a/src/tools/line/linetool.h +++ b/src/tools/line/linetool.h @@ -16,16 +16,11 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; - void paintMousePreview(QPainter& painter, - const CaptureContext& context) override; + void process(QPainter& painter, const QPixmap& pixmap) override; protected: ToolType nameID() const override; public slots: - void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; }; diff --git a/src/tools/marker/markertool.cpp b/src/tools/marker/markertool.cpp index 8911748c..83c73bdd 100644 --- a/src/tools/marker/markertool.cpp +++ b/src/tools/marker/markertool.cpp @@ -19,7 +19,7 @@ MarkerTool::MarkerTool(QObject* parent) QIcon MarkerTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "marker.svg"); } QString MarkerTool::name() const @@ -39,45 +39,48 @@ QString MarkerTool::description() const CaptureTool* MarkerTool::copy(QObject* parent) { - return new MarkerTool(parent); + auto* tool = new MarkerTool(parent); + copyParams(this, tool); + return tool; } -void MarkerTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void MarkerTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } + Q_UNUSED(pixmap) + auto compositionMode = painter.compositionMode(); + qreal opacity = painter.opacity(); + auto pen = painter.pen(); painter.setCompositionMode(QPainter::CompositionMode_Multiply); painter.setOpacity(0.35); - painter.setPen(QPen(m_color, m_thickness)); - painter.drawLine(m_points.first, m_points.second); + painter.setPen(QPen(color(), thickness())); + painter.drawLine(points().first, points().second); + painter.setPen(pen); + painter.setOpacity(opacity); + painter.setCompositionMode(compositionMode); } void MarkerTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { + auto compositionMode = painter.compositionMode(); + qreal opacity = painter.opacity(); + auto pen = painter.pen(); painter.setCompositionMode(QPainter::CompositionMode_Multiply); painter.setOpacity(0.35); painter.setPen(QPen(context.color, PADDING_VALUE + context.thickness)); painter.drawLine(context.mousePos, context.mousePos); + painter.setPen(pen); + painter.setOpacity(opacity); + painter.setCompositionMode(compositionMode); } void MarkerTool::drawStart(const CaptureContext& context) { - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + AbstractTwoPointTool::drawStart(context); + thicknessChanged(context.thickness + PADDING_VALUE); } void MarkerTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); -} - -void MarkerTool::thicknessChanged(const int th) -{ - m_thickness = th + PADDING_VALUE; + Q_UNUSED(context) } diff --git a/src/tools/marker/markertool.h b/src/tools/marker/markertool.h index 0bfb8425..e253630c 100644 --- a/src/tools/marker/markertool.h +++ b/src/tools/marker/markertool.h @@ -16,9 +16,7 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; @@ -28,5 +26,4 @@ protected: public slots: void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; - void thicknessChanged(const int th) override; }; diff --git a/src/tools/move/movetool.cpp b/src/tools/move/movetool.cpp index af7324e1..0f998931 100644 --- a/src/tools/move/movetool.cpp +++ b/src/tools/move/movetool.cpp @@ -15,7 +15,7 @@ bool MoveTool::closeOnButtonPressed() const QIcon MoveTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "cursor-move.svg"); } QString MoveTool::name() const @@ -40,6 +40,11 @@ CaptureTool* MoveTool::copy(QObject* parent) void MoveTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_MOVE_MODE); } + +bool MoveTool::isSelectable() const +{ + return true; +} diff --git a/src/tools/move/movetool.h b/src/tools/move/movetool.h index 394c95ff..edeef7a9 100644 --- a/src/tools/move/movetool.h +++ b/src/tools/move/movetool.h @@ -17,6 +17,7 @@ public: QString name() const override; ToolType nameID() const override; QString description() const override; + bool isSelectable() const override; CaptureTool* copy(QObject* parent = nullptr) override; diff --git a/src/tools/pencil/penciltool.cpp b/src/tools/pencil/penciltool.cpp index a565590a..078d6134 100644 --- a/src/tools/pencil/penciltool.cpp +++ b/src/tools/pencil/penciltool.cpp @@ -4,13 +4,15 @@ #include "penciltool.h" #include +#define PADDING_VALUE 2 + PencilTool::PencilTool(QObject* parent) : AbstractPathTool(parent) {} QIcon PencilTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "pencil.svg"); } QString PencilTool::name() const @@ -30,17 +32,15 @@ QString PencilTool::description() const CaptureTool* PencilTool::copy(QObject* parent) { - return new PencilTool(parent); + auto* tool = new PencilTool(parent); + copyParams(this, tool); + return tool; } -void PencilTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void PencilTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); + Q_UNUSED(pixmap) + painter.setPen(QPen(m_color, thickness())); painter.drawPolyline(m_points.data(), m_points.size()); } @@ -54,13 +54,13 @@ void PencilTool::paintMousePreview(QPainter& painter, void PencilTool::drawStart(const CaptureContext& context) { m_color = context.color; - m_thickness = context.thickness + 2; + thicknessChanged(context.thickness + PADDING_VALUE); m_points.append(context.mousePos); - m_backupArea.setTopLeft(context.mousePos); - m_backupArea.setBottomRight(context.mousePos); + m_pathArea.setTopLeft(context.mousePos); + m_pathArea.setBottomRight(context.mousePos); } void PencilTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/pencil/penciltool.h b/src/tools/pencil/penciltool.h index 3d94585e..eef48e96 100644 --- a/src/tools/pencil/penciltool.h +++ b/src/tools/pencil/penciltool.h @@ -17,9 +17,7 @@ public: CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; diff --git a/src/tools/pin/pintool.cpp b/src/tools/pin/pintool.cpp index 9e62f3b1..66c57b71 100644 --- a/src/tools/pin/pintool.cpp +++ b/src/tools/pin/pintool.cpp @@ -17,7 +17,7 @@ bool PinTool::closeOnButtonPressed() const QIcon PinTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "pin.svg"); } QString PinTool::name() const @@ -45,7 +45,7 @@ QWidget* PinTool::widget() } #endif PinWidget* w = new PinWidget(m_pixmap); - const int m = w->margin() * devicePixelRatio; + const int m = static_cast(w->margin() * devicePixelRatio); QRect adjusted_pos = m_geometry + QMargins(m, m, m, m); w->setGeometry(adjusted_pos); #if defined(Q_OS_MACOS) @@ -72,6 +72,7 @@ CaptureTool* PinTool::copy(QObject* parent) void PinTool::pressed(const CaptureContext& context) { + emit requestAction(REQ_CLEAR_SELECTION); emit requestAction(REQ_CAPTURE_DONE_OK); m_geometry = context.selection; m_geometry.setTopLeft(m_geometry.topLeft() + context.widgetOffset); diff --git a/src/tools/pixelate/pixelatetool.cpp b/src/tools/pixelate/pixelatetool.cpp index c46b7214..6e4c80c9 100644 --- a/src/tools/pixelate/pixelatetool.cpp +++ b/src/tools/pixelate/pixelatetool.cpp @@ -15,7 +15,7 @@ PixelateTool::PixelateTool(QObject* parent) QIcon PixelateTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "pixelate.svg"); } QString PixelateTool::name() const @@ -35,28 +35,22 @@ QString PixelateTool::description() const CaptureTool* PixelateTool::copy(QObject* parent) { - return new PixelateTool(parent); + auto* tool = new PixelateTool(parent); + copyParams(this, tool); + return tool; } -void PixelateTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void PixelateTool::process(QPainter& painter, const QPixmap& pixmap) { - - if (recordUndo) { - updateBackup(pixmap); - } - - QPoint& p0 = m_points.first; - QPoint& p1 = m_points.second; + QPoint p0 = points().first; + QPoint p1 = points().second; QRect selection = QRect(p0, p1).normalized(); auto pixelRatio = pixmap.devicePixelRatio(); QRect selectionScaled = QRect(p0 * pixelRatio, p1 * pixelRatio).normalized(); // If thickness is less than 1, use old blur process - if (m_thickness <= 1) { - + if (thickness() <= 1) { QGraphicsBlurEffect* blur = new QGraphicsBlurEffect; blur->setBlurRadius(10); QGraphicsPixmapItem* item = @@ -72,8 +66,10 @@ void PixelateTool::process(QPainter& painter, scene.render(&painter, selection, QRectF()); } else { - int width = selection.width() * (0.5 / qMax(1, m_thickness)); - int height = selection.height() * (0.5 / qMax(1, m_thickness)); + int width = static_cast(selection.width() * + (0.5 / qMax(1, thickness() + 1))); + int height = static_cast(selection.height() * + (0.5 / qMax(1, thickness() + 1))); QSize size = QSize(qMax(width, 1), qMax(height, 1)); QPixmap t = pixmap.copy(selectionScaled); @@ -83,21 +79,33 @@ void PixelateTool::process(QPainter& painter, } } +void PixelateTool::drawSearchArea(QPainter& painter, const QPixmap& pixmap) +{ + Q_UNUSED(pixmap) + painter.fillRect(std::min(points().first.x(), points().second.x()), + std::min(points().first.y(), points().second.y()), + std::abs(points().first.x() - points().second.x()), + std::abs(points().first.y() - points().second.y()), + QBrush(Qt::black)); +} + void PixelateTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - Q_UNUSED(context); - Q_UNUSED(painter); -} - -void PixelateTool::drawStart(const CaptureContext& context) -{ - m_thickness = context.thickness; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + Q_UNUSED(context) + Q_UNUSED(painter) } void PixelateTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) +} + +void PixelateTool::drawObjectSelection(QPainter& painter) +{ + QRect rect = QRect(std::min(points().first.x(), points().second.x()), + std::min(points().first.y(), points().second.y()), + std::abs(points().first.x() - points().second.x()), + std::abs(points().first.y() - points().second.y())); + drawObjectSelectionRect(painter, rect); } diff --git a/src/tools/pixelate/pixelatetool.h b/src/tools/pixelate/pixelatetool.h index 72caba24..199acfde 100644 --- a/src/tools/pixelate/pixelatetool.h +++ b/src/tools/pixelate/pixelatetool.h @@ -16,16 +16,15 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; + void drawSearchArea(QPainter& painter, const QPixmap& pixmap) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; + void drawObjectSelection(QPainter& painter) override; protected: ToolType nameID() const override; public slots: - void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; }; diff --git a/src/tools/rectangle/rectangletool.cpp b/src/tools/rectangle/rectangletool.cpp index 79cfed6a..08a01059 100644 --- a/src/tools/rectangle/rectangletool.cpp +++ b/src/tools/rectangle/rectangletool.cpp @@ -3,6 +3,8 @@ #include "rectangletool.h" #include +#include +#include namespace { #define PADDING_VALUE 2 @@ -12,12 +14,11 @@ RectangleTool::RectangleTool(QObject* parent) : AbstractTwoPointTool(parent) { m_supportsDiagonalAdj = true; - context_thickness = 0; } QIcon RectangleTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "square.svg"); } QString RectangleTool::name() const @@ -37,48 +38,47 @@ QString RectangleTool::description() const CaptureTool* RectangleTool::copy(QObject* parent) { - return new RectangleTool(parent); + auto* tool = new RectangleTool(parent); + copyParams(this, tool); + return tool; } -void RectangleTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void RectangleTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); - painter.setBrush(QBrush(m_color)); - if (context_thickness == 0) { - painter.drawRect(QRect(m_points.first, m_points.second)); + Q_UNUSED(pixmap) + QPen orig_pen = painter.pen(); + QBrush orig_brush = painter.brush(); + painter.setPen( + QPen(color(), thickness(), Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin)); + painter.setBrush(QBrush(color())); + if (thickness() == 0) { + painter.drawRect(QRect(points().first, points().second)); } else { - painter.drawRoundedRect( - std::min(m_points.first.x(), m_points.second.x()), - std::min(m_points.first.y(), m_points.second.y()), - std::abs(m_points.first.x() - m_points.second.x()), - std::abs(m_points.first.y() - m_points.second.y()), - m_thickness, - m_thickness); + painter.setRenderHint(QPainter::Antialiasing); + QPainterPath path; + int offset = + thickness() <= 1 ? 1 : static_cast(round(thickness() / 2 + 0.5)); + path.addRoundedRect( + QRectF( + std::min(points().first.x(), points().second.x()) - offset, + std::min(points().first.y(), points().second.y()) - offset, + std::abs(points().first.x() - points().second.x()) + offset * 2, + std::abs(points().first.y() - points().second.y()) + offset * 2), + thickness(), + thickness()); + painter.fillPath(path, color()); } -} - -void RectangleTool::paintMousePreview(QPainter& painter, - const CaptureContext& context) -{ - painter.setPen(QPen(context.color, context.thickness)); - painter.drawLine(context.mousePos, context.mousePos); + painter.setPen(orig_pen); + painter.setBrush(orig_brush); } void RectangleTool::drawStart(const CaptureContext& context) { - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - context_thickness = context.thickness; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + AbstractTwoPointTool::drawStart(context); + thicknessChanged(context.thickness); } void RectangleTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/rectangle/rectangletool.h b/src/tools/rectangle/rectangletool.h index 903a5112..27c2db6a 100644 --- a/src/tools/rectangle/rectangletool.h +++ b/src/tools/rectangle/rectangletool.h @@ -16,17 +16,11 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; - void paintMousePreview(QPainter& painter, - const CaptureContext& context) override; + void process(QPainter& painter, const QPixmap& pixmap) override; protected: ToolType nameID() const override; -private: - int context_thickness; public slots: void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; diff --git a/src/tools/redo/redotool.cpp b/src/tools/redo/redotool.cpp index 92670c3b..f5007162 100644 --- a/src/tools/redo/redotool.cpp +++ b/src/tools/redo/redotool.cpp @@ -15,7 +15,7 @@ bool RedoTool::closeOnButtonPressed() const QIcon RedoTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "redo-variant.svg"); } QString RedoTool::name() const @@ -40,6 +40,6 @@ CaptureTool* RedoTool::copy(QObject* parent) void RedoTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_REDO_MODIFICATION); } diff --git a/src/tools/save/savetool.cpp b/src/tools/save/savetool.cpp index 040116da..4847331f 100644 --- a/src/tools/save/savetool.cpp +++ b/src/tools/save/savetool.cpp @@ -21,7 +21,7 @@ bool SaveTool::closeOnButtonPressed() const QIcon SaveTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "content-save.svg"); } QString SaveTool::name() const @@ -57,6 +57,7 @@ void SaveTool::pressed(const CaptureContext& context) } } #endif + emit requestAction(REQ_CLEAR_SELECTION); if (context.savePath.isEmpty()) { emit requestAction(REQ_HIDE_GUI); bool ok = ScreenshotSaver().saveToFilesystemGUI( diff --git a/src/tools/selection/selectiontool.cpp b/src/tools/selection/selectiontool.cpp index 996e4f27..4468b1d9 100644 --- a/src/tools/selection/selectiontool.cpp +++ b/src/tools/selection/selectiontool.cpp @@ -21,7 +21,7 @@ bool SelectionTool::closeOnButtonPressed() const QIcon SelectionTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "square-outline.svg"); } QString SelectionTool::name() const @@ -41,36 +41,20 @@ QString SelectionTool::description() const CaptureTool* SelectionTool::copy(QObject* parent) { - return new SelectionTool(parent); + SelectionTool* tool = new SelectionTool(parent); + copyParams(this, tool); + return tool; } -void SelectionTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void SelectionTool::process(QPainter& painter, const QPixmap& pixmap) { - if (recordUndo) { - updateBackup(pixmap); - } - painter.setPen(QPen(m_color, m_thickness)); - painter.drawRect(QRect(m_points.first, m_points.second)); -} - -void SelectionTool::paintMousePreview(QPainter& painter, - const CaptureContext& context) -{ - painter.setPen(QPen(context.color, context.thickness)); - painter.drawLine(context.mousePos, context.mousePos); -} - -void SelectionTool::drawStart(const CaptureContext& context) -{ - m_color = context.color; - m_thickness = context.thickness + PADDING_VALUE; - m_points.first = context.mousePos; - m_points.second = context.mousePos; + Q_UNUSED(pixmap) + painter.setPen( + QPen(color(), thickness(), Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin)); + painter.drawRect(QRect(points().first, points().second)); } void SelectionTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/selection/selectiontool.h b/src/tools/selection/selectiontool.h index 0c5345bd..b3dbeec7 100644 --- a/src/tools/selection/selectiontool.h +++ b/src/tools/selection/selectiontool.h @@ -18,16 +18,11 @@ public: QString description() const override; CaptureTool* copy(QObject* parent = nullptr) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; - void paintMousePreview(QPainter& painter, - const CaptureContext& context) override; + void process(QPainter& painter, const QPixmap& pixmap) override; protected: ToolType nameID() const override; public slots: - void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; }; diff --git a/src/tools/sizedecrease/sizedecreasetool.cpp b/src/tools/sizedecrease/sizedecreasetool.cpp index b6fc8cbb..3a19a2e1 100644 --- a/src/tools/sizedecrease/sizedecreasetool.cpp +++ b/src/tools/sizedecrease/sizedecreasetool.cpp @@ -29,7 +29,7 @@ bool SizeDecreaseTool::closeOnButtonPressed() const QIcon SizeDecreaseTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "minus.svg"); } QString SizeDecreaseTool::name() const @@ -54,6 +54,6 @@ CaptureTool* SizeDecreaseTool::copy(QObject* parent) void SizeDecreaseTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_DECREASE_TOOL_SIZE); } diff --git a/src/tools/sizeincrease/sizeincreasetool.cpp b/src/tools/sizeincrease/sizeincreasetool.cpp index 4932ef1a..5906fbeb 100644 --- a/src/tools/sizeincrease/sizeincreasetool.cpp +++ b/src/tools/sizeincrease/sizeincreasetool.cpp @@ -29,7 +29,7 @@ bool SizeIncreaseTool::closeOnButtonPressed() const QIcon SizeIncreaseTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "plus.svg"); } QString SizeIncreaseTool::name() const @@ -54,6 +54,6 @@ CaptureTool* SizeIncreaseTool::copy(QObject* parent) void SizeIncreaseTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_INCREASE_TOOL_SIZE); } diff --git a/src/tools/sizeindicator/sizeindicatortool.cpp b/src/tools/sizeindicator/sizeindicatortool.cpp index 010de789..bb3bf2ab 100644 --- a/src/tools/sizeindicator/sizeindicatortool.cpp +++ b/src/tools/sizeindicator/sizeindicatortool.cpp @@ -40,5 +40,5 @@ CaptureTool* SizeIndicatorTool::copy(QObject* parent) void SizeIndicatorTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } diff --git a/src/tools/text/texttool.cpp b/src/tools/text/texttool.cpp index 71402c08..1e760d9f 100644 --- a/src/tools/text/texttool.cpp +++ b/src/tools/text/texttool.cpp @@ -12,6 +12,22 @@ TextTool::TextTool(QObject* parent) , m_size(1) {} +TextTool::~TextTool() +{ + closeEditor(); +} + +void TextTool::copyParams(const TextTool* from, TextTool* to) +{ + CaptureTool::copyParams(from, to); + to->m_font = from->m_font; + to->m_text = from->m_text; + to->m_size = from->m_size; + to->m_color = from->m_color; + to->m_textArea = from->m_textArea; + to->m_currentPos = from->m_currentPos; +} + bool TextTool::isValid() const { return !m_text.isEmpty(); @@ -34,7 +50,7 @@ bool TextTool::showMousePreview() const QIcon TextTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "text.svg"); } @@ -55,13 +71,24 @@ QString TextTool::description() const QWidget* TextTool::widget() { - TextWidget* w = new TextWidget(); - w->setTextColor(m_color); + closeEditor(); + m_widget = new TextWidget(); + m_widget->setTextColor(m_color); m_font.setPointSize(m_size + BASE_POINT_SIZE); - w->setFont(m_font); - connect(w, &TextWidget::textUpdated, this, &TextTool::updateText); - m_widget = w; - return w; + m_widget->setFont(m_font); + connect(m_widget, &TextWidget::textUpdated, this, &TextTool::updateText); + return m_widget; +} + +void TextTool::closeEditor() +{ + if (!m_widget.isNull()) { + disconnect( + m_widget, &TextWidget::textUpdated, this, &TextTool::updateText); + m_widget->close(); + delete m_widget; + m_widget = nullptr; + } } QWidget* TextTool::configurationWidget() @@ -95,86 +122,66 @@ QWidget* TextTool::configurationWidget() CaptureTool* TextTool::copy(QObject* parent) { TextTool* tt = new TextTool(parent); - connect( - m_confW, &TextConfig::fontFamilyChanged, tt, &TextTool::updateFamily); - connect( - m_confW, &TextConfig::fontItalicChanged, tt, &TextTool::updateFontItalic); - connect(m_confW, - &TextConfig::fontStrikeOutChanged, - tt, - &TextTool::updateFontStrikeOut); - connect(m_confW, - &TextConfig::fontUnderlineChanged, - tt, - &TextTool::updateFontUnderline); - connect( - m_confW, &TextConfig::fontWeightChanged, tt, &TextTool::updateFontWeight); - tt->m_font = m_font; + if (m_confW) { + connect( + m_confW, &TextConfig::fontFamilyChanged, tt, &TextTool::updateFamily); + connect(m_confW, + &TextConfig::fontItalicChanged, + tt, + &TextTool::updateFontItalic); + connect(m_confW, + &TextConfig::fontStrikeOutChanged, + tt, + &TextTool::updateFontStrikeOut); + connect(m_confW, + &TextConfig::fontUnderlineChanged, + tt, + &TextTool::updateFontUnderline); + connect(m_confW, + &TextConfig::fontWeightChanged, + tt, + &TextTool::updateFontWeight); + } + copyParams(this, tt); return tt; } -void TextTool::undo(QPixmap& pixmap) +void TextTool::process(QPainter& painter, const QPixmap& pixmap) { - QPainter p(&pixmap); -#if defined(Q_OS_MACOS) - // Not sure how will it work on 4k and fullHd on Linux or Windows with a - // capture of different displays with different DPI, so let it be MacOS - // specific only. - const qreal pixelRatio = pixmap.devicePixelRatio(); - p.drawPixmap(backupRect(pixmap).topLeft() / pixelRatio, m_pixmapBackup); -#else - p.drawPixmap(m_backupArea.topLeft(), m_pixmapBackup); -#endif + Q_UNUSED(pixmap) + if (m_text.isEmpty()) { + return; + } + const int val = 5; + QFontMetrics fm(m_font); + QSize size(fm.boundingRect(QRect(), 0, m_text).size()); + size.setWidth(size.width() + val * 2); + size.setHeight(size.height() + val * 2); + m_textArea.setSize(size); + // draw text + painter.setFont(m_font); + painter.setPen(m_color); + painter.drawText(m_textArea + QMargins(-val, -val, val, val), m_text); } -void TextTool::process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo) +void TextTool::drawObjectSelection(QPainter& painter) { if (m_text.isEmpty()) { return; } - QFontMetrics fm(m_font); - QSize size(fm.boundingRect(QRect(), 0, m_text).size()); - m_backupArea.setSize(size); - if (recordUndo) { - m_pixmapBackup = pixmap.copy(backupRect(pixmap)); - } - // draw text - painter.setFont(m_font); - painter.setPen(m_color); - const int val = 5; - painter.drawText(m_backupArea + QMargins(-val, -val, val, val), m_text); -} - -QRect TextTool::backupRect(const QPixmap& pixmap) const -{ - const QRect& limits = pixmap.rect(); - QRect r = m_backupArea.normalized(); -#if defined(Q_OS_MACOS) - const qreal pixelRatio = pixmap.devicePixelRatio(); - const int val = 5 * pixelRatio; - if (1 != pixelRatio) { - r.moveTo(r.topLeft() * pixelRatio); - r.setSize(r.size() * pixelRatio); - } -#else - const int val = 5; -#endif - r += QMargins(0, 0, val, val); - return r.intersected(limits); + drawObjectSelectionRect(painter, m_textArea); } void TextTool::paintMousePreview(QPainter& painter, const CaptureContext& context) { - Q_UNUSED(painter); - Q_UNUSED(context); + Q_UNUSED(painter) + Q_UNUSED(context) } void TextTool::drawEnd(const QPoint& p) { - m_backupArea.moveTo(p); + m_textArea.moveTo(p); } void TextTool::drawMove(const QPoint& p) @@ -191,7 +198,7 @@ void TextTool::drawStart(const CaptureContext& context) void TextTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) } void TextTool::colorChanged(const QColor& c) @@ -202,7 +209,7 @@ void TextTool::colorChanged(const QColor& c) } } -void TextTool::thicknessChanged(const int th) +void TextTool::thicknessChanged(int th) { m_size = th; m_font.setPointSize(m_size + BASE_POINT_SIZE); @@ -216,14 +223,6 @@ void TextTool::updateText(const QString& s) m_text = s; } -void TextTool::setFont(const QFont& f) -{ - m_font = f; - if (m_widget) { - m_widget->setFont(f); - } -} - void TextTool::updateFamily(const QString& s) { m_font.setFamily(s); @@ -263,3 +262,14 @@ void TextTool::updateFontItalic(const bool italic) m_widget->setFont(m_font); } } + +void TextTool::move(const QPoint& pos) +{ + m_textArea.moveTo(pos); +} + +const QPoint* TextTool::pos() +{ + m_currentPos = m_textArea.topLeft(); + return &m_currentPos; +} diff --git a/src/tools/text/texttool.h b/src/tools/text/texttool.h index 5f60e966..67150411 100644 --- a/src/tools/text/texttool.h +++ b/src/tools/text/texttool.h @@ -4,6 +4,7 @@ #pragma once #include "src/tools/capturetool.h" +#include #include class TextWidget; @@ -14,6 +15,7 @@ class TextTool : public CaptureTool Q_OBJECT public: explicit TextTool(QObject* parent = nullptr); + ~TextTool(); bool isValid() const override; bool closeOnButtonPressed() const override; @@ -28,16 +30,16 @@ public: QWidget* configurationWidget() override; CaptureTool* copy(QObject* parent = nullptr) override; - void undo(QPixmap& pixmap) override; - void process(QPainter& painter, - const QPixmap& pixmap, - bool recordUndo = false) override; + void process(QPainter& painter, const QPixmap& pixmap) override; void paintMousePreview(QPainter& painter, const CaptureContext& context) override; + void move(const QPoint& pos) override; + const QPoint* pos() override; + void drawObjectSelection(QPainter& painter) override; protected: + void copyParams(const TextTool* from, TextTool* to); ToolType nameID() const override; - QRect backupRect(const QPixmap& pixmap) const; public slots: void drawEnd(const QPoint& p) override; @@ -45,11 +47,11 @@ public slots: void drawStart(const CaptureContext& context) override; void pressed(const CaptureContext& context) override; void colorChanged(const QColor& c) override; - void thicknessChanged(const int th) override; + void thicknessChanged(int th) override; + virtual int thickness() override { return m_size; }; private slots: void updateText(const QString& s); - void setFont(const QFont& f); void updateFamily(const QString& s); void updateFontUnderline(const bool underlined); void updateFontStrikeOut(const bool s); @@ -57,12 +59,14 @@ private slots: void updateFontItalic(const bool italic); private: + void closeEditor(); + QFont m_font; QString m_text; int m_size; QColor m_color; - QPixmap m_pixmapBackup; - QRect m_backupArea; + QRect m_textArea; QPointer m_widget; QPointer m_confW; + QPoint m_currentPos; }; diff --git a/src/tools/undo/undotool.cpp b/src/tools/undo/undotool.cpp index 0d1278ab..91f2b295 100644 --- a/src/tools/undo/undotool.cpp +++ b/src/tools/undo/undotool.cpp @@ -15,7 +15,7 @@ bool UndoTool::closeOnButtonPressed() const QIcon UndoTool::icon(const QColor& background, bool inEditor) const { - Q_UNUSED(inEditor); + Q_UNUSED(inEditor) return QIcon(iconPath(background) + "undo-variant.svg"); } QString UndoTool::name() const @@ -40,6 +40,6 @@ CaptureTool* UndoTool::copy(QObject* parent) void UndoTool::pressed(const CaptureContext& context) { - Q_UNUSED(context); + Q_UNUSED(context) emit requestAction(REQ_UNDO_MODIFICATION); } diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 0ad9708c..95931f34 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -657,8 +657,15 @@ bool ConfigHandler::setShortcut(const QString& shortcutName, m_settings.beginGroup("Shortcuts"); QVector reservedShortcuts; + +#if defined(Q_OS_MACOS) + reservedShortcuts << QKeySequence(Qt::CTRL + Qt::Key_Backspace) + << QKeySequence(Qt::Key_Escape); +#else reservedShortcuts << QKeySequence(Qt::Key_Backspace) << QKeySequence(Qt::Key_Escape); +#endif + if (shortutValue.isEmpty()) { m_settings.setValue(shortcutName, ""); } else if (reservedShortcuts.contains(QKeySequence(shortutValue))) { diff --git a/src/utils/configshortcuts.cpp b/src/utils/configshortcuts.cpp index cb7d3721..43b9ded8 100644 --- a/src/utils/configshortcuts.cpp +++ b/src/utils/configshortcuts.cpp @@ -60,8 +60,21 @@ const QVector& ConfigShortcuts::captureShortcutsDefault( << QObject::tr("Commit text in text area") << QKeySequence(Qt::CTRL + Qt::Key_Return).toString()); +#if defined(Q_OS_MACOS) + m_shortcuts << (QStringList() + << "TYPE_DELETE_CURRENT_TOOL" + << QObject::tr("Delete current tool") + << QKeySequence(Qt::Key_Backspace).toString()); +#else + m_shortcuts << (QStringList() << "TYPE_DELETE_CURRENT_TOOL" + << QObject::tr("Delete current tool") + << QKeySequence(Qt::Key_Delete).toString()); +#endif + m_shortcuts << (QStringList() << "" << QObject::tr("Quit capture") << QKeySequence(Qt::Key_Escape).toString()); + + // Global hotkeys #if defined(Q_OS_MACOS) m_shortcuts << (QStringList() << "" << QObject::tr("Screenshot history") << "⇧⌘⌥H"); diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp index 5bcf94d5..18f3715f 100644 --- a/src/utils/screenshotsaver.cpp +++ b/src/utils/screenshotsaver.cpp @@ -175,6 +175,10 @@ bool ScreenshotSaver::saveToFilesystemGUI(const QPixmap& capture) saveInfoBox.setWindowIcon(QIcon(":img/app/flameshot.svg")); saveInfoBox.exec(); return ok; + } else if (!savePath.endsWith(QLatin1String(".png"), Qt::CaseInsensitive) && + !savePath.endsWith(QLatin1String(".bmp"), Qt::CaseInsensitive) && + !savePath.endsWith(QLatin1String(".jpg"), Qt::CaseInsensitive)) { + savePath += QLatin1String(".png"); } ok = capture.save(savePath); diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index dfb6b6ef..a632fe9b 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -3,27 +3,29 @@ add_subdirectory(capture) # Required to generate MOC target_sources( - flameshot - PRIVATE capturelauncher.h - draggablewidgetmaker.h - imagelabel.h - infowindow.h - loadspinner.h - notificationwidget.h - orientablepushbutton.h - historywidget.h - updatenotificationwidget.h + flameshot + PRIVATE capturelauncher.h + draggablewidgetmaker.h + imagelabel.h + infowindow.h + loadspinner.h + notificationwidget.h + orientablepushbutton.h + historywidget.h + updatenotificationwidget.h + capture/capturetoolobjects.h ) target_sources( - flameshot - PRIVATE capturelauncher.cpp - draggablewidgetmaker.cpp - imagelabel.cpp - infowindow.cpp - loadspinner.cpp - notificationwidget.cpp - orientablepushbutton.cpp - historywidget.cpp - updatenotificationwidget.cpp + flameshot + PRIVATE capturelauncher.cpp + draggablewidgetmaker.cpp + imagelabel.cpp + infowindow.cpp + loadspinner.cpp + notificationwidget.cpp + orientablepushbutton.cpp + historywidget.cpp + updatenotificationwidget.cpp + capture/capturetoolobjects.cpp ) diff --git a/src/widgets/capture/CMakeLists.txt b/src/widgets/capture/CMakeLists.txt index fe94aa99..90612425 100644 --- a/src/widgets/capture/CMakeLists.txt +++ b/src/widgets/capture/CMakeLists.txt @@ -1,23 +1,24 @@ # Required to generate MOC target_sources( - flameshot - PRIVATE buttonhandler.h - capturebutton.h - capturetoolbutton.h - capturewidget.h - colorpicker.h - hovereventfilter.h - selectionwidget.h - notifierbox.h) + flameshot + PRIVATE buttonhandler.h + capturebutton.h + capturetoolbutton.h + capturewidget.h + colorpicker.h + hovereventfilter.h + selectionwidget.h + notifierbox.h + modificationcommand.h) target_sources( - flameshot - PRIVATE buttonhandler.cpp - capturebutton.cpp - capturetoolbutton.cpp - capturewidget.cpp - colorpicker.cpp - hovereventfilter.cpp - modificationcommand.cpp - notifierbox.cpp - selectionwidget.cpp) + flameshot + PRIVATE buttonhandler.cpp + capturebutton.cpp + capturetoolbutton.cpp + capturewidget.cpp + colorpicker.cpp + hovereventfilter.cpp + notifierbox.cpp + selectionwidget.cpp + modificationcommand.cpp) diff --git a/src/widgets/capture/capturetoolobjects.cpp b/src/widgets/capture/capturetoolobjects.cpp new file mode 100644 index 00000000..d02abad1 --- /dev/null +++ b/src/widgets/capture/capturetoolobjects.cpp @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2021 Yurii Puchkov & Contributors + +#include "capturetoolobjects.h" + +#define SEARCH_RADIUS_NEAR 3 +#define SEARCH_RADIUS_FAR 5 +#define SEARCH_RADIUS_TEXT_HANDICAP 3 + +void CaptureToolObjects::append(const QPointer& captureTool) +{ + m_captureToolObjects.append(captureTool); + m_imageCache.clear(); +} + +QPointer CaptureToolObjects::at(int index) +{ + if (index >= 0 && index < m_captureToolObjects.size()) { + return m_captureToolObjects[index]; + } + return nullptr; +} + +void CaptureToolObjects::clear() +{ + m_captureToolObjects.clear(); +} + +QList> CaptureToolObjects::captureToolObjects() +{ + return m_captureToolObjects; +} + +int CaptureToolObjects::size() +{ + return m_captureToolObjects.size(); +} + +void CaptureToolObjects::removeAt(int index) +{ + if (index >= 0 && index < m_captureToolObjects.size()) { + m_captureToolObjects.removeAt(index); + m_imageCache.clear(); + } +} + +int CaptureToolObjects::find(const QPoint& pos, const QSize& captureSize) +{ + if (m_captureToolObjects.empty()) { + return -1; + } + QPixmap pixmap(captureSize); + pixmap.fill(Qt::transparent); + QPainter painter(&pixmap); + // first attempt to find at exact position + int radius = SEARCH_RADIUS_NEAR; + int index = findWithRadius(painter, pixmap, pos, radius); + if (-1 == index) { + // second attempt to find at position with radius + radius = SEARCH_RADIUS_FAR; + pixmap.fill(Qt::transparent); + index = findWithRadius(painter, pixmap, pos, radius); + } + return index; +} + +int CaptureToolObjects::findWithRadius(QPainter& painter, + QPixmap& pixmap, + const QPoint& pos, + int radius) +{ + int index = m_captureToolObjects.size() - 1; + bool useCache = true; + m_imageCache.clear(); + if (m_imageCache.size() != m_captureToolObjects.size() && index >= 0) { + // TODO - is not optimal and cache will be used just after first tool + // object selecting + m_imageCache.clear(); + useCache = false; + } + for (; index >= 0; --index) { + QImage image; + auto toolItem = m_captureToolObjects.at(index); + if (useCache) { + image = m_imageCache.at(index); + } else { + // create transparent image in memory and draw toolItem on it + toolItem->drawSearchArea(painter, pixmap); + + // get color at mouse clicked position in area +/- radius + image = pixmap.toImage(); + m_imageCache.insert(0, image); + } + + if (toolItem->nameID() == ToolType::TEXT) { + // Text has spaces inside to need to take a bigger radius for + // text objects search + radius += SEARCH_RADIUS_TEXT_HANDICAP; + } + + for (int x = pos.x() - radius; x <= pos.x() + radius; ++x) { + for (int y = pos.y() - radius; y <= pos.y() + radius; ++y) { + QRgb rgb = image.pixel(x, y); + if (rgb != 0) { + // object was found, return it index (layer index) + return index; + } + } + } + } + // no object at current pos found + return -1; +} + +CaptureToolObjects& CaptureToolObjects::operator=( + const CaptureToolObjects& other) +{ + // remove extra items for this if size is bigger + while (this->m_captureToolObjects.size() > + other.m_captureToolObjects.size()) { + this->m_captureToolObjects.removeLast(); + } + + int count = 0; + for (const auto& item : other.m_captureToolObjects) { + QPointer itemCopy = item->copy(item->parent()); + if (count < this->m_captureToolObjects.size()) { + this->m_captureToolObjects[count] = itemCopy; + } else { + this->m_captureToolObjects.append(itemCopy); + } + count++; + } + return *this; +} \ No newline at end of file diff --git a/src/widgets/capture/capturetoolobjects.h b/src/widgets/capture/capturetoolobjects.h new file mode 100644 index 00000000..96380ce0 --- /dev/null +++ b/src/widgets/capture/capturetoolobjects.h @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2021 Yurii Puchkov & Contributors + +#ifndef FLAMESHOT_CAPTURETOOLOBJECTS_H +#define FLAMESHOT_CAPTURETOOLOBJECTS_H + +#include "src/tools/capturetool.h" +#include +#include + +class CaptureToolObjects : public QObject +{ +public: + explicit CaptureToolObjects(QObject* parent = nullptr) { Q_UNUSED(parent) }; + QList> captureToolObjects(); + void append(const QPointer& captureTool); + void removeAt(int index); + void clear(); + int size(); + int find(const QPoint& pos, const QSize& captureSize); + QPointer at(int index); + CaptureToolObjects& operator=(const CaptureToolObjects& other); + +private: + int findWithRadius(QPainter& painter, + QPixmap& pixmap, + const QPoint& pos, + int radius = 0); + + // class members + QList> m_captureToolObjects; + QVector m_imageCache; +}; + +#endif // FLAMESHOT_CAPTURETOOLOBJECTS_H diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp index 36f25afc..acc5686e 100644 --- a/src/widgets/capture/capturewidget.cpp +++ b/src/widgets/capture/capturewidget.cpp @@ -40,14 +40,13 @@ // CaptureWidget is the main component used to capture the screen. It contains // an area of selection with its respective buttons. -// enableSaveWIndow -CaptureWidget::CaptureWidget(const uint id, +// enableSaveWindow +CaptureWidget::CaptureWidget(uint id, const QString& savePath, bool fullScreen, QWidget* parent) : QWidget(parent) , m_mouseIsClicked(false) - , m_rightClick(false) , m_newSelection(false) , m_grabbing(false) , m_captureDone(false) @@ -56,10 +55,16 @@ CaptureWidget::CaptureWidget(const uint id, , m_activeButton(nullptr) , m_activeTool(nullptr) , m_toolWidget(nullptr) + , m_colorPicker(nullptr) , m_mouseOverHandle(SelectionWidget::NO_SIDE) , m_id(id) , m_lastMouseWheel(0) , m_updateNotificationWidget(nullptr) + , m_activeToolIsMoved(false) + , m_lastPressedUndo(false) + , m_lastPressedRedo(false) + , m_panel(nullptr) + , m_selection(nullptr) { // Base config of the widget m_eventFilter = new HoverEventFilter(this); @@ -120,6 +125,7 @@ CaptureWidget::CaptureWidget(const uint id, move(currentScreen->geometry().x(), currentScreen->geometry().y()); resize(currentScreen->size()); #else + // Comment For CaptureWidget Debugging under Linux setWindowFlags(Qt::BypassWindowManagerHint | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::Tool); resize(pixmap().size()); @@ -176,9 +182,6 @@ CaptureWidget::CaptureWidget(const uint id, m_notifierBox = new NotifierBox(this); m_notifierBox->hide(); - connect(&m_undoStack, &QUndoStack::indexChanged, this, [this](int) { - this->update(); - }); initPanel(); } @@ -263,36 +266,56 @@ QPixmap CaptureWidget::pixmap() // tool. bool CaptureWidget::commitCurrentTool() { - if (m_activeButton) { - if (m_activeTool) { - if (m_activeTool->isValid() && m_toolWidget) { - pushToolToStack(); - } else { - m_activeTool->deleteLater(); - } - if (m_toolWidget) { - m_toolWidget->deleteLater(); - return true; - } + if (m_activeButton && m_activeTool) { + if (m_activeTool->isValid() && m_toolWidget) { + pushToolToStack(); + } else { + m_activeTool->deleteLater(); + m_activeTool = nullptr; + } + if (m_toolWidget) { + m_toolWidget->deleteLater(); + return true; } } return false; } -void CaptureWidget::deleteToolwidgetOrClose() +void CaptureWidget::deleteToolWidgetOrClose() { - if (m_panel->isVisible()) { + if (!m_activeButton.isNull()) { + uncheckActiveTool(); + } else if (m_panel->activeLayerIndex() >= 0) { + // remove active tool selection + m_panel->setActiveLayer(-1); + drawToolsData(false, true); + } else if (m_panel->isVisible()) { + // hide panel if visible m_panel->hide(); } else if (m_toolWidget) { + // delete toolWidget if exists m_toolWidget->deleteLater(); m_toolWidget = nullptr; } else { + // close CaptureWidget close(); } } -void CaptureWidget::paintEvent(QPaintEvent*) +void CaptureWidget::uncheckActiveTool() { + // uncheck active tool + m_activeButton->setColor(m_uiColor); + m_activeButton = nullptr; + m_activeTool->deleteLater(); + m_activeTool = nullptr; + updateCursor(); + update(); // clear mouse preview +} + +void CaptureWidget::paintEvent(QPaintEvent* paintEvent) +{ + Q_UNUSED(paintEvent) QPainter painter(this); painter.drawPixmap(0, 0, m_context.screenshot); @@ -307,125 +330,131 @@ void CaptureWidget::paintEvent(QPaintEvent*) painter.restore(); } - QColor overlayColor(0, 0, 0, m_opacity); - painter.setBrush(overlayColor); - QRect r; - if (m_selection->isVisible()) { - r = m_selection->geometry().normalized().adjusted(0, 0, -1, -1); - } - QRegion grey(rect()); - grey = grey.subtracted(r); - - painter.setClipRegion(grey); - painter.drawRect(-1, -1, rect().width() + 1, rect().height() + 1); - painter.setClipRect(rect()); + // draw inactive region + drawInactiveRegion(&painter); + // show initial message on screen capture call if required (before selecting + // area) if (m_showInitialMsg) { -#if defined(Q_OS_MACOS) - QRect helpRect; - QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen(); - if (currentScreen) { - helpRect = currentScreen->geometry(); - } else { - helpRect = QGuiApplication::primaryScreen()->geometry(); - } -#else - QRect helpRect = QGuiApplication::primaryScreen()->geometry(); -#endif + drawInitialMessage(&painter); + } +} - helpRect.moveTo(mapFromGlobal(helpRect.topLeft())); - - QString helpTxt = - tr("Select an area with the mouse, or press Esc to exit." - "\nPress Enter to capture the screen." - "\nPress Right Click to show the color picker." - "\nUse the Mouse Wheel to change the thickness of your tool." - "\nPress Space to open the side panel."); - - // We draw the white contrasting background for the text, using the - // same text and options to get the boundingRect that the text will - // have. - QRectF bRect = painter.boundingRect(helpRect, Qt::AlignCenter, helpTxt); - - // These four calls provide padding for the rect - const int margin = QApplication::fontMetrics().height() / 2; - bRect.setWidth(bRect.width() + margin); - bRect.setHeight(bRect.height() + margin); - bRect.setX(bRect.x() - margin); - bRect.setY(bRect.y() - margin); - - QColor rectColor(m_uiColor); - rectColor.setAlpha(180); - QColor textColor( - (ColorUtils::colorIsDark(rectColor) ? Qt::white : Qt::black)); - - painter.setBrush(QBrush(rectColor, Qt::SolidPattern)); - painter.setPen(QPen(textColor)); - - painter.drawRect(bRect); - painter.drawText(helpRect, Qt::AlignCenter, helpTxt); +void CaptureWidget::showColorPicker(const QPoint& pos) +{ + // Reset object selection if mouse pos is not in selection area + auto toolItem = activeToolObject(); + if (toolItem && !toolItem->selectionRect().contains(pos)) { + m_panel->setActiveLayer(-1); } - if (m_selection->isVisible()) { - // paint handlers - painter.setPen(m_uiColor); - painter.setRenderHint(QPainter::Antialiasing); - painter.setBrush(m_uiColor); - for (auto r : m_selection->handlerAreas()) { - painter.drawRoundedRect(r, 100, 100); + // Call color picker + m_colorPicker->move(pos.x() - m_colorPicker->width() / 2, + pos.y() - m_colorPicker->height() / 2); + m_colorPicker->raise(); + m_colorPicker->show(); +} + +bool CaptureWidget::startDrawObjectTool(const QPoint& pos) +{ + if (m_activeButton && m_activeButton->tool()->nameID() != ToolType::MOVE) { + if (commitCurrentTool()) { + return false; + } + m_activeTool = m_activeButton->tool()->copy(this); + + connect(this, + &CaptureWidget::colorChanged, + m_activeTool, + &CaptureTool::colorChanged); + connect(this, + &CaptureWidget::thicknessChanged, + m_activeTool, + &CaptureTool::thicknessChanged); + connect(m_activeTool, + &CaptureTool::requestAction, + this, + &CaptureWidget::handleButtonSignal); + m_context.mousePos = pos; + m_activeTool->drawStart(m_context); + if (m_activeTool->nameID() == ToolType::CIRCLECOUNT) { + // While it is based on AbstractTwoPointTool it has the only one + // point and shouldn't wait for second point and move event + m_activeTool->drawEnd(m_context.mousePos); + m_captureToolObjects.append(m_activeTool); + m_undoStack.push( + new ModificationCommand(this, m_captureToolObjects)); + m_activeTool->deleteLater(); + m_activeTool = nullptr; + m_mouseIsClicked = false; + } + return true; + } + return false; +} + +void CaptureWidget::selectToolItemAtPos(const QPoint& pos) +{ + // Try to select existing tool + if (m_activeButton.isNull() && + m_captureToolObjects.captureToolObjects().size() > 0 && + m_selection->getMouseSide(pos) == SelectionWidget::NO_SIDE) { + auto toolItem = activeToolObject(); + if (!toolItem || + (toolItem && !toolItem->selectionRect().contains(pos))) { + int activeLayerIndex = m_captureToolObjects.find(pos, size()); + int thickness_old = m_context.thickness; + m_panel->setActiveLayer(activeLayerIndex); + drawObjectSelection(); + if (thickness_old != m_context.thickness) { + emit thicknessChanged(m_context.thickness); + } } } } void CaptureWidget::mousePressEvent(QMouseEvent* e) { + m_dragStartPoint = m_mousePressedPos = e->pos(); + m_activeToolOffsetToMouseOnStart = QPoint(); + + // reset object selection if capture area selection is active + if (m_selection->getMouseSide(e->pos()) != SelectionWidget::NO_SIDE) { + m_panel->setActiveLayer(-1); + } + if (e->button() == Qt::RightButton) { - m_rightClick = true; - m_colorPicker->move(e->pos().x() - m_colorPicker->width() / 2, - e->pos().y() - m_colorPicker->height() / 2); - m_colorPicker->raise(); - m_colorPicker->show(); + showColorPicker(m_mousePressedPos); } else if (e->button() == Qt::LeftButton) { m_showInitialMsg = false; m_mouseIsClicked = true; - // Click using a tool - if (m_activeButton) { - if (commitCurrentTool()) { - return; - } - m_activeTool = m_activeButton->tool()->copy(this); - connect(this, - &CaptureWidget::colorChanged, - m_activeTool, - &CaptureTool::colorChanged); - connect(this, - &CaptureWidget::thicknessChanged, - m_activeTool, - &CaptureTool::thicknessChanged); - connect(m_activeTool, - &CaptureTool::requestAction, - this, - &CaptureWidget::handleButtonSignal); - m_context.mousePos = e->pos(); - m_activeTool->drawStart(m_context); + // Click using a tool excluding tool MOVE + if (startDrawObjectTool(m_mousePressedPos)) { + // return if success return; } - m_dragStartPoint = e->pos(); m_selection->saveGeometry(); // New selection - if (!m_selection->geometry().contains(e->pos()) && - m_mouseOverHandle == SelectionWidget::NO_SIDE) { - m_selection->setGeometry(QRect(e->pos(), e->pos())); - m_selection->setVisible(false); - m_newSelection = true; - m_buttonHandler->hide(); - update(); - } else { - m_grabbing = true; + if (m_captureToolObjects.captureToolObjects().size() == 0) { + if (!m_selection->geometry().contains(e->pos()) && + m_mouseOverHandle == SelectionWidget::NO_SIDE) { + m_selection->setGeometry( + QRect(m_mousePressedPos, m_mousePressedPos)); + m_selection->setVisible(false); + m_newSelection = true; + m_buttonHandler->hide(); + update(); + } else { + m_grabbing = true; + } } } + + // Try to select existing tool + selectToolItemAtPos(m_mousePressedPos); + updateCursor(); } @@ -434,7 +463,22 @@ void CaptureWidget::mouseMoveEvent(QMouseEvent* e) m_context.mousePos = e->pos(); bool symmetryMod = qApp->keyboardModifiers() & Qt::ShiftModifier; - if (m_mouseIsClicked && !m_activeButton) { + int activeLayerIndex = m_panel->activeLayerIndex(); + if (m_mouseIsClicked && !m_activeButton && activeLayerIndex >= 0) { + // Move existing object + QPointer activeTool = + m_captureToolObjects.at(activeLayerIndex); + if (m_activeToolOffsetToMouseOnStart.isNull()) { + setCursor(Qt::OpenHandCursor); + m_activeToolOffsetToMouseOnStart = e->pos() - *activeTool->pos(); + } + activeTool->move(e->pos() - m_activeToolOffsetToMouseOnStart); + m_activeToolIsMoved = true; + drawToolsData(false); + } else if (m_mouseIsClicked && + (!m_activeButton || + (m_activeButton && + m_activeButton->tool()->nameID() == ToolType::MOVE))) { // Drawing, moving, or stretching a selection m_selection->setVisible(true); if (m_buttonHandler->isVisible()) { @@ -450,10 +494,15 @@ void CaptureWidget::mouseMoveEvent(QMouseEvent* e) } else if (m_mouseOverHandle == SelectionWidget::NO_SIDE) { // Moving the whole selection - QRect initialRect = m_selection->savedGeometry().normalized(); - QPoint newTopLeft = - initialRect.topLeft() + (e->pos() - m_dragStartPoint); - inputRect = QRect(newTopLeft, initialRect.size()); + if (m_adjustmentButtonPressed || activeToolObject().isNull()) { + setCursor(Qt::OpenHandCursor); + QRect initialRect = m_selection->savedGeometry().normalized(); + QPoint newTopLeft = + initialRect.topLeft() + (e->pos() - m_dragStartPoint); + inputRect = QRect(newTopLeft, initialRect.size()); + } else { + return; + } } else { // Dragging a handle inputRect = m_selection->savedGeometry(); @@ -534,20 +583,39 @@ void CaptureWidget::mouseReleaseEvent(QMouseEvent* e) { if (e->button() == Qt::RightButton || m_colorPicker->isVisible()) { m_colorPicker->hide(); - m_rightClick = false; if (!m_context.color.isValid()) { m_context.color = ConfigHandler().drawColorValue(); m_panel->show(); + } else { + // push current state to the undo stack + m_undoStack.push( + new ModificationCommand(this, m_captureToolObjects)); } - // when we end the drawing we have to register the last point and - // add the temp modification to the list of modifications - } else if (m_mouseIsClicked && m_activeTool) { - m_activeTool->drawEnd(m_context.mousePos); - if (m_activeTool->isValid()) { - pushToolToStack(); - } else if (!m_toolWidget) { - m_activeTool->deleteLater(); - m_activeTool = nullptr; + } else if (m_mouseIsClicked) { + if (m_activeTool) { + // end draw/edit + m_activeTool->drawEnd(m_context.mousePos); + if (m_activeTool->isValid()) { + pushToolToStack(); + } else if (!m_toolWidget) { + m_activeTool->deleteLater(); + m_activeTool = nullptr; + } + } else { + if (m_activeToolIsMoved) { + // push current state to the undo stack + m_undoStack.push( + new ModificationCommand(this, m_captureToolObjects)); + } + + // Try to select existing tool if it was in the selection area but + // need to select another one + if (e->pos() == m_mousePressedPos && !m_activeToolIsMoved && + m_activeButton.isNull()) { + m_panel->setActiveLayer( + m_captureToolObjects.find(e->pos(), size())); + } + drawToolsData(true, true); } } @@ -574,6 +642,7 @@ void CaptureWidget::mouseReleaseEvent(QMouseEvent* e) m_buttonHandler->show(); } m_mouseIsClicked = false; + m_activeToolIsMoved = false; m_newSelection = false; m_grabbing = false; @@ -611,11 +680,12 @@ void CaptureWidget::keyPressEvent(QKeyEvent* e) return; } else if (e->key() == Qt::Key_Control) { m_adjustmentButtonPressed = true; + updateCursor(); } else if (e->key() == Qt::Key_Enter) { // Make no difference for Return and Enter keys - QKeyEvent* keyReturn = - new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier); - QCoreApplication::postEvent(this, keyReturn); + QCoreApplication::postEvent( + this, + new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier)); } } @@ -623,6 +693,7 @@ void CaptureWidget::keyReleaseEvent(QKeyEvent* e) { if (e->key() == Qt::Key_Control) { m_adjustmentButtonPressed = false; + updateCursor(); } } @@ -658,7 +729,7 @@ void CaptureWidget::wheelEvent(QWheelEvent* e) } m_context.thickness += thicknessOffset; - m_context.thickness = qBound(0, m_context.thickness, 100); + m_context.thickness = qBound(1, m_context.thickness, 100); QPoint topLeft = QGuiAppCurrentScreen().currentScreen()->geometry().topLeft(); int offset = m_notifierBox->width() / 4; @@ -668,6 +739,16 @@ void CaptureWidget::wheelEvent(QWheelEvent* e) update(); } emit thicknessChanged(m_context.thickness); + + // update selected object thickness + // Reset selection if mouse pos is not in selection area + auto toolItem = activeToolObject(); + if (toolItem) { + toolItem->thicknessChanged(m_context.thickness); + + // TODO - save thickness update, but not immediately + m_undoStack.push(new ModificationCommand(this, m_captureToolObjects)); + } } void CaptureWidget::resizeEvent(QResizeEvent* e) @@ -706,8 +787,8 @@ void CaptureWidget::initPanel() QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen(); panelRect = currentScreen->geometry(); auto devicePixelRatio = currentScreen->devicePixelRatio(); - panelRect.moveTo(panelRect.x() / devicePixelRatio, - panelRect.y() / devicePixelRatio); + panelRect.moveTo(static_cast(panelRect.x() / devicePixelRatio), + static_cast(panelRect.y() / devicePixelRatio)); #else panelRect = QGuiApplication::primaryScreen()->geometry(); auto devicePixelRatio = @@ -725,9 +806,10 @@ void CaptureWidget::initPanel() panelToggleButton->setOrientation( OrientablePushButton::VerticalBottomToTop); #if defined(Q_OS_MACOS) - panelToggleButton->move(0, - panelRect.y() + panelRect.height() / 2 - - panelToggleButton->width() / 2); + panelToggleButton->move( + 0, + static_cast(panelRect.height() / 2) - + static_cast(panelToggleButton->width() / 2)); #else panelToggleButton->move(panelRect.x(), panelRect.y() + panelRect.height() / 2 - @@ -747,13 +829,17 @@ void CaptureWidget::initPanel() #if defined(Q_OS_MACOS) QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen(); panelRect.moveTo(mapFromGlobal(panelRect.topLeft())); - m_panel->setFixedWidth(m_colorPicker->width() * 1.5); + m_panel->setFixedWidth(static_cast(m_colorPicker->width() * 1.5)); m_panel->setFixedHeight(currentScreen->geometry().height()); #else panelRect.moveTo(mapFromGlobal(panelRect.topLeft())); panelRect.setWidth(m_colorPicker->width() * 1.5); m_panel->setGeometry(panelRect); #endif + connect(m_panel, + &UtilityPanel::layerChanged, + this, + &CaptureWidget::updateActiveLayer); SidePanelWidget* sidePanel = new SidePanelWidget(&m_context.screenshot); connect(sidePanel, @@ -777,7 +863,9 @@ void CaptureWidget::initPanel() sidePanel->colorChanged(m_context.color); sidePanel->thicknessChanged(m_context.thickness); m_panel->pushWidget(sidePanel); - m_panel->pushWidget(new QUndoView(&m_undoStack, this)); + + // Fill undo/redo/history list widget + m_panel->fillCaptureTools(m_captureToolObjects.captureToolObjects()); } void CaptureWidget::showAppUpdateNotification(const QString& appLatestVersion, @@ -853,6 +941,7 @@ void CaptureWidget::setState(CaptureToolButton* b) } m_activeButton = b; m_activeButton->setColor(m_contrastUiColor); + m_panel->setActiveLayer(-1); } else if (m_activeButton) { m_panel->clearToolWidget(); m_activeButton->setColor(m_uiColor); @@ -876,18 +965,10 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r) { switch (r) { case CaptureTool::REQ_CLEAR_MODIFICATIONS: + m_captureToolObjects.clear(); m_undoStack.setIndex(0); update(); break; - - case CaptureTool::REQ_INCREMENT_CIRCLE_COUNT: - incrementCircleCount(); - break; - - case CaptureTool::REQ_DECREMENT_CIRCLE_COUNT: - decrementCircleCount(); - break; - case CaptureTool::REQ_CLOSE_GUI: close(); break; @@ -903,10 +984,10 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r) m_selection->setGeometryAnimated(rect()); break; case CaptureTool::REQ_UNDO_MODIFICATION: - m_undoStack.undo(); + undo(); break; case CaptureTool::REQ_REDO_MODIFICATION: - m_undoStack.redo(); + redo(); break; case CaptureTool::REQ_REDRAW: update(); @@ -920,6 +1001,12 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r) case CaptureTool::REQ_MOVE_MODE: setState(m_activeButton); // Disable the actual button break; + case CaptureTool::REQ_CLEAR_SELECTION: + if (m_panel->activeLayerIndex() >= 0) { + m_panel->setActiveLayer(-1); + drawToolsData(false, false); + } + break; case CaptureTool::REQ_CAPTURE_DONE_OK: m_captureDone = true; break; @@ -958,9 +1045,8 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r) } break; case CaptureTool::REQ_INCREASE_TOOL_SIZE: - // increase thickness - m_context.thickness = qBound(0, m_context.thickness + 1, 100); + m_context.thickness = qBound(1, m_context.thickness + 1, 100); // show notifier circle m_notifierBox->showMessage(QString::number(m_context.thickness)); @@ -968,9 +1054,8 @@ void CaptureWidget::handleButtonSignal(CaptureTool::Request r) emit thicknessChanged(m_context.thickness); break; case CaptureTool::REQ_DECREASE_TOOL_SIZE: - // decrease thickness - m_context.thickness = qBound(0, m_context.thickness - 1, 100); + m_context.thickness = qBound(1, m_context.thickness - 1, 100); // show notifier circle m_notifierBox->showMessage(QString::number(m_context.thickness)); @@ -989,26 +1074,57 @@ void CaptureWidget::setDrawColor(const QColor& c) ConfigHandler().setDrawColor(m_context.color); emit colorChanged(c); } + auto toolItem = activeToolObject(); + if (toolItem) { + // Change color + emit toolItem->colorChanged(c); + drawToolsData(false, true); + } } -void CaptureWidget::incrementCircleCount() +void CaptureWidget::updateActiveLayer(const int& layer) { - m_context.circleCount++; - SPDLOG_DEBUG("Incrementing Circle to {}.", m_context.circleCount); + drawToolsData(false, true); } -void CaptureWidget::decrementCircleCount() +void CaptureWidget::removeToolObject(int index) { - - SPDLOG_DEBUG("Decrementing Circle."); - m_context.circleCount--; + --index; + if (index >= 0 && index < m_captureToolObjects.size()) { + const ToolType currentToolType = + m_captureToolObjects.at(index)->nameID(); + m_captureToolObjects.removeAt(index); + if (currentToolType == ToolType::CIRCLECOUNT) { + // Do circle count reindex + int circleCount = 1; + for (int cnt = 0; cnt < m_captureToolObjects.size(); cnt++) { + auto toolItem = m_captureToolObjects.at(cnt); + if (toolItem->nameID() != ToolType::CIRCLECOUNT) { + continue; + } + if (cnt >= index) { + m_captureToolObjects.at(cnt)->setCount(circleCount); + } + circleCount++; + } + m_context.circleCount = circleCount; + } + drawToolsData(); + } } void CaptureWidget::setDrawThickness(const int& t) { - m_context.thickness = qBound(0, t, 100); + m_context.thickness = qBound(1, t, 100); ConfigHandler().setDrawThickness(m_context.thickness); emit thicknessChanged(m_context.thickness); + + auto toolItem = activeToolObject(); + if (toolItem) { + // Change thickness + emit toolItem->thicknessChanged(t); + drawToolsData(false, true); + } } void CaptureWidget::repositionSelection(QRect r) @@ -1115,6 +1231,10 @@ void CaptureWidget::initShortcuts() new QShortcut(QKeySequence(ConfigHandler().shortcut("TYPE_MOVE_DOWN")), this, SLOT(moveDown())); + new QShortcut( + QKeySequence(ConfigHandler().shortcut("TYPE_DELETE_CURRENT_TOOL")), + this, + SLOT(deleteCurrentTool())); new QShortcut( QKeySequence(ConfigHandler().shortcut("TYPE_COMMIT_CURRENT_TOOL")), @@ -1125,7 +1245,17 @@ void CaptureWidget::initShortcuts() this, SLOT(selectAll())); - new QShortcut(Qt::Key_Escape, this, SLOT(deleteToolwidgetOrClose())); + new QShortcut(Qt::Key_Escape, this, SLOT(deleteToolWidgetOrClose())); +} + +void CaptureWidget::deleteCurrentTool() +{ + int thickness_old = m_context.thickness; + emit m_panel->slotButtonDelete(true); + drawObjectSelection(); + if (thickness_old != m_context.thickness) { + emit thicknessChanged(m_context.thickness); + } } void CaptureWidget::updateSizeIndicator() @@ -1140,10 +1270,17 @@ void CaptureWidget::updateSizeIndicator() void CaptureWidget::updateCursor() { - if (m_rightClick) { + if (m_colorPicker && m_colorPicker->isVisible()) { setCursor(Qt::ArrowCursor); } else if (m_grabbing) { - setCursor(Qt::ClosedHandCursor); + if (m_adjustmentButtonPressed) { + setCursor(Qt::OpenHandCursor); + } else { + setCursor(Qt::ArrowCursor); + } + } else if (m_activeButton && + m_activeButton->tool()->nameID() == ToolType::MOVE) { + setCursor(Qt::OpenHandCursor); } else if (!m_activeButton) { using sw = SelectionWidget; if (m_mouseOverHandle != sw::NO_SIDE) { @@ -1170,7 +1307,15 @@ void CaptureWidget::updateCursor() } } else if (m_selection->isVisible() && m_selection->geometry().contains(m_context.mousePos)) { - setCursor(Qt::OpenHandCursor); + if (m_adjustmentButtonPressed) { + setCursor(Qt::OpenHandCursor); + } else { + setCursor(Qt::ArrowCursor); + } + } else if (m_selection->isVisible() && + m_captureToolObjects.captureToolObjects().size() > 0 && + m_activeTool.isNull()) { + setCursor(Qt::ArrowCursor); } else { setCursor(Qt::CrossCursor); } @@ -1181,20 +1326,82 @@ void CaptureWidget::updateCursor() void CaptureWidget::pushToolToStack() { - auto mod = new ModificationCommand(&m_context.screenshot, m_activeTool); - disconnect(this, - &CaptureWidget::colorChanged, - m_activeTool, - &CaptureTool::colorChanged); - disconnect(this, - &CaptureWidget::thicknessChanged, - m_activeTool, - &CaptureTool::thicknessChanged); - if (m_panel->toolWidget()) { - disconnect(m_panel->toolWidget(), nullptr, m_activeTool, nullptr); + // push zero state to be able to do a complete undo + if (m_undoStack.count() == 0) { + m_undoStack.push(new ModificationCommand(this, m_captureToolObjects)); } - m_undoStack.push(mod); - m_activeTool = nullptr; + + // append current tool to the new state + if (m_activeTool && m_activeButton) { + disconnect(this, + &CaptureWidget::colorChanged, + m_activeTool, + &CaptureTool::colorChanged); + disconnect(this, + &CaptureWidget::thicknessChanged, + m_activeTool, + &CaptureTool::thicknessChanged); + if (m_panel->toolWidget()) { + disconnect(m_panel->toolWidget(), nullptr, m_activeTool, nullptr); + } + + m_captureToolObjects.append(m_activeTool); + m_activeTool->deleteLater(); + m_activeTool = nullptr; + } + + // push current state to the undo stack + m_undoStack.push(new ModificationCommand(this, m_captureToolObjects)); +} + +void CaptureWidget::drawToolsData(bool updateLayersPanel, bool drawSelection) +{ + QPixmap pixmapItem = m_context.origScreenshot.copy(); + QPainter painter(&pixmapItem); + int index = 0; + m_context.circleCount = 1; + for (auto toolItem : m_captureToolObjects.captureToolObjects()) { + if (toolItem->nameID() == ToolType::CIRCLECOUNT) { + toolItem->setCount(m_context.circleCount); + m_context.circleCount++; + } + toolItem->process(painter, pixmapItem); + } + + m_context.screenshot = pixmapItem.copy(); + update(); + if (updateLayersPanel) { + m_panel->fillCaptureTools(m_captureToolObjects.captureToolObjects()); + } + + if (drawSelection) { + int thickness_old = m_context.thickness; + drawObjectSelection(); + if (thickness_old != m_context.thickness) { + emit thicknessChanged(m_context.thickness); + } + } +} + +void CaptureWidget::drawObjectSelection() +{ + auto toolItem = activeToolObject(); + if (toolItem) { + QPainter painter(&m_context.screenshot); + toolItem->drawObjectSelection(painter); + if (m_context.thickness != toolItem->thickness()) { + m_context.thickness = + toolItem->thickness() <= 0 ? 0 : toolItem->thickness(); + } + if (activeToolObject() && m_activeButton) { + uncheckActiveTool(); + } + } +} + +QPointer CaptureWidget::activeToolObject() +{ + return m_captureToolObjects.at(m_panel->activeLayerIndex()); } void CaptureWidget::makeChild(QWidget* w) @@ -1225,7 +1432,7 @@ void CaptureWidget::copyScreenshot() m_captureDone = true; if (m_activeTool != nullptr) { QPainter painter(&m_context.screenshot); - m_activeTool->process(painter, m_context.screenshot, true); + m_activeTool->process(painter, m_context.screenshot); } ScreenshotSaver().saveToClipboard(pixmap()); @@ -1240,7 +1447,7 @@ void CaptureWidget::saveScreenshot() m_captureDone = true; if (m_activeTool != nullptr) { QPainter painter(&m_context.screenshot); - m_activeTool->process(painter, m_context.screenshot, true); + m_activeTool->process(painter, m_context.screenshot); } hide(); if (m_context.savePath.isEmpty()) { @@ -1252,20 +1459,45 @@ void CaptureWidget::saveScreenshot() close(); } +void CaptureWidget::setCaptureToolObjects( + const CaptureToolObjects& captureToolObjects) +{ + // Used for undo/redo + m_captureToolObjects = captureToolObjects; + drawToolsData(true, true); +} + void CaptureWidget::undo() { + // FIXME - m_lastPressedUndo and m_lastPressedRedo is a brutal hack, cannot + // understand why first undo/redo has no effect so need to do it twice if it + // is the firs operation + if (!m_lastPressedUndo) { + m_undoStack.undo(); + } + m_lastPressedUndo = true; + m_lastPressedRedo = false; m_undoStack.undo(); } void CaptureWidget::redo() { + // FIXME - m_lastPressedUndo and m_lastPressedRedo is a brutal hack, cannot + // understand why first undo/redo has no effect so need to do it twice if it + // is the firs operation + if (!m_lastPressedRedo) { + m_undoStack.redo(); + } + m_lastPressedUndo = false; + m_lastPressedRedo = true; m_undoStack.redo(); } QRect CaptureWidget::extendedSelection() const { - if (!m_selection->isVisible()) + if (!m_selection->isVisible()) { return QRect(); + } QRect r = m_selection->geometry(); return extendedRect(&r); } @@ -1278,3 +1510,79 @@ QRect CaptureWidget::extendedRect(QRect* r) const r->width() * devicePixelRatio, r->height() * devicePixelRatio); } + +void CaptureWidget::drawInitialMessage(QPainter* painter) +{ + if (nullptr == painter) { + return; + } +#if (defined(Q_OS_MACOS) || defined(Q_OS_LINUX)) + QRect helpRect; + QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen(); + if (currentScreen) { + helpRect = currentScreen->geometry(); + } else { + helpRect = QGuiApplication::primaryScreen()->geometry(); + } +#else + QRect helpRect = QGuiApplication::primaryScreen()->geometry(); +#endif + + helpRect.moveTo(mapFromGlobal(helpRect.topLeft())); + + QString helpTxt = + tr("Select an area with the mouse, or press Esc to exit." + "\nPress Enter to capture the screen." + "\nPress Right Click to show the color picker." + "\nUse the Mouse Wheel to change the thickness of your tool." + "\nPress Space to open the side panel."); + + // We draw the white contrasting background for the text, using the + // same text and options to get the boundingRect that the text will + // have. + QRectF bRect = painter->boundingRect(helpRect, Qt::AlignCenter, helpTxt); + + // These four calls provide padding for the rect + const int margin = QApplication::fontMetrics().height() / 2; + bRect.setWidth(bRect.width() + margin); + bRect.setHeight(bRect.height() + margin); + bRect.setX(bRect.x() - margin); + bRect.setY(bRect.y() - margin); + + QColor rectColor(m_uiColor); + rectColor.setAlpha(180); + QColor textColor( + (ColorUtils::colorIsDark(rectColor) ? Qt::white : Qt::black)); + + painter->setBrush(QBrush(rectColor, Qt::SolidPattern)); + painter->setPen(QPen(textColor)); + + painter->drawRect(bRect); + painter->drawText(helpRect, Qt::AlignCenter, helpTxt); +} + +void CaptureWidget::drawInactiveRegion(QPainter* painter) +{ + QColor overlayColor(0, 0, 0, m_opacity); + painter->setBrush(overlayColor); + QRect r; + if (m_selection->isVisible()) { + r = m_selection->geometry().normalized().adjusted(0, 0, -1, -1); + } + QRegion grey(rect()); + grey = grey.subtracted(r); + + painter->setClipRegion(grey); + painter->drawRect(-1, -1, rect().width() + 1, rect().height() + 1); + painter->setClipRect(rect()); + + if (m_selection->isVisible()) { + // paint handlers + painter->setPen(m_uiColor); + painter->setRenderHint(QPainter::Antialiasing); + painter->setBrush(m_uiColor); + for (auto rect : m_selection->handlerAreas()) { + painter->drawRoundedRect(rect, 100, 100); + } + } +} diff --git a/src/widgets/capture/capturewidget.h b/src/widgets/capture/capturewidget.h index 326c2c4c..8a02ac1d 100644 --- a/src/widgets/capture/capturewidget.h +++ b/src/widgets/capture/capturewidget.h @@ -13,6 +13,7 @@ #include "buttonhandler.h" #include "capturetoolbutton.h" +#include "capturetoolobjects.h" #include "src/tools/capturecontext.h" #include "src/tools/capturetool.h" #include "src/utils/confighandler.h" @@ -37,7 +38,7 @@ class CaptureWidget : public QWidget Q_OBJECT public: - explicit CaptureWidget(const uint id = 0, + explicit CaptureWidget(uint id = 0, const QString& savePath = QString(), bool fullScreen = true, QWidget* parent = nullptr); @@ -47,19 +48,19 @@ public: QPixmap pixmap(); void showAppUpdateNotification(const QString& appLatestVersion, const QString& appLatestUrl); + void setCaptureToolObjects(const CaptureToolObjects& captureToolObjects); public slots: bool commitCurrentTool(); - void deleteToolwidgetOrClose(); + void deleteToolWidgetOrClose(); signals: void captureTaken(uint id, QPixmap p, QRect selection); void captureFailed(uint id); void colorChanged(const QColor& c); - void thicknessChanged(const int thickness); + void thicknessChanged(int thickness); private slots: - // TODO replace with tools void copyScreenshot(); void saveScreenshot(); @@ -81,24 +82,58 @@ private slots: void moveUp(); void moveDown(); + void deleteCurrentTool(); + void setState(CaptureToolButton* b); void processTool(CaptureTool* t); void handleButtonSignal(CaptureTool::Request r); void setDrawColor(const QColor& c); void setDrawThickness(const int& t); - void incrementCircleCount(); - void decrementCircleCount(); + void updateActiveLayer(const int& layer); + +public: + void removeToolObject(int index = -1); protected: - void paintEvent(QPaintEvent*); - void mousePressEvent(QMouseEvent*); - void mouseMoveEvent(QMouseEvent*); - void mouseReleaseEvent(QMouseEvent*); - void keyPressEvent(QKeyEvent*); - void keyReleaseEvent(QKeyEvent*); - void wheelEvent(QWheelEvent*); - void resizeEvent(QResizeEvent*); - void moveEvent(QMoveEvent*); + void paintEvent(QPaintEvent* paintEvent) override; + void mousePressEvent(QMouseEvent* mouseEvent) override; + void mouseMoveEvent(QMouseEvent* mouseEvent) override; + void mouseReleaseEvent(QMouseEvent* mouseEvent) override; + void keyPressEvent(QKeyEvent* keyEvent) override; + void keyReleaseEvent(QKeyEvent* keyEvent) override; + void wheelEvent(QWheelEvent* wheelEvent) override; + void resizeEvent(QResizeEvent* resizeEvent) override; + void moveEvent(QMoveEvent* moveEvent) override; + +private: + void uncheckActiveTool(); + void selectToolItemAtPos(const QPoint& pos); + void showColorPicker(const QPoint& pos); + bool startDrawObjectTool(const QPoint& pos); + QPointer activeToolObject(); + void initContext(const QString& savePath, bool fullscreen); + void initPanel(); + void initSelection(); + void initShortcuts(); + void updateSizeIndicator(); + void updateCursor(); + void pushToolToStack(); + void makeChild(QWidget* w); + + void repositionSelection(QRect r); + void adjustSelection(QMargins m); + void moveSelection(QPoint p); + + QRect extendedSelection() const; + QRect extendedRect(QRect* r) const; + void drawInitialMessage(QPainter* painter); + void drawInactiveRegion(QPainter* painter); + void drawToolsData(bool updateLayersPanel = true, + bool drawSelection = false); + void drawObjectSelection(); + + //////////////////////////////////////// + // Class members // Context information CaptureContext m_context; @@ -113,7 +148,6 @@ protected: // utility flags bool m_mouseIsClicked; - bool m_rightClick; bool m_newSelection; bool m_grabbing; bool m_showInitialMsg; @@ -121,32 +155,13 @@ protected: bool m_previewEnabled; bool m_adjustmentButtonPressed; -private: - void initContext(const QString& savePath, bool fullscreen); - void initPanel(); - void initSelection(); - void initShortcuts(); - void updateSizeIndicator(); - void updateCursor(); - void pushToolToStack(); - void makeChild(QWidget* w); - - void repositionSelection(QRect r); - void adjustSelection(QMargins m); - void moveSelection(QPoint p); - -private: - QRect extendedSelection() const; - QRect extendedRect(QRect* r) const; - -private: UpdateNotificationWidget* m_updateNotificationWidget; quint64 m_lastMouseWheel; - QUndoStack m_undoStack; QPointer m_sizeIndButton; // Last pressed button QPointer m_activeButton; QPointer m_activeTool; + bool m_activeToolIsMoved; QPointer m_toolWidget; ButtonHandler* m_buttonHandler; @@ -160,4 +175,15 @@ private: QPoint m_dragStartPoint; SelectionWidget::SideType m_mouseOverHandle; uint m_id; + + CaptureToolObjects m_captureToolObjects; + + QPoint m_mousePressedPos; + QPoint m_activeToolOffsetToMouseOnStart; + + QUndoStack m_undoStack; + + // TODO - should be remove after fixing undo()/redo() functions + bool m_lastPressedUndo; + bool m_lastPressedRedo; }; diff --git a/src/widgets/capture/modificationcommand.cpp b/src/widgets/capture/modificationcommand.cpp index 4863701a..9240fe69 100644 --- a/src/widgets/capture/modificationcommand.cpp +++ b/src/widgets/capture/modificationcommand.cpp @@ -2,27 +2,22 @@ // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors #include "modificationcommand.h" -#include +#include "capturewidget.h" -ModificationCommand::ModificationCommand(QPixmap* p, CaptureTool* t) - : m_pixmap(p) - , m_tool(t) +ModificationCommand::ModificationCommand( + CaptureWidget* captureWidget, + const CaptureToolObjects& captureToolObjects) + : m_captureWidget(captureWidget) { - setText(t->name()); + m_captureToolObjects = captureToolObjects; } void ModificationCommand::undo() { - m_tool->undo(*m_pixmap); + m_captureWidget->setCaptureToolObjects(m_captureToolObjects); } void ModificationCommand::redo() { - QPainter p(m_pixmap); - p.setRenderHint(QPainter::Antialiasing); - m_tool->process(p, *m_pixmap, true); - if (m_tool->nameID() == ToolType::CIRCLECOUNT) { - emit this->m_tool->requestAction( - CaptureTool::Request::REQ_INCREMENT_CIRCLE_COUNT); - } + m_captureWidget->setCaptureToolObjects(m_captureToolObjects); } diff --git a/src/widgets/capture/modificationcommand.h b/src/widgets/capture/modificationcommand.h index ee1fa9db..2bcbc416 100644 --- a/src/widgets/capture/modificationcommand.h +++ b/src/widgets/capture/modificationcommand.h @@ -1,20 +1,26 @@ // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors -#pragma once - -#include "src/tools/capturetool.h" +#include "capturetoolobjects.h" #include +#ifndef FLAMESHOT_MODIFICATIONCOMMAND_H +#define FLAMESHOT_MODIFICATIONCOMMAND_H + +class CaptureWidget; + class ModificationCommand : public QUndoCommand { public: - ModificationCommand(QPixmap*, CaptureTool*); + ModificationCommand(CaptureWidget* captureWidget, + const CaptureToolObjects& captureToolObjects); virtual void undo() override; virtual void redo() override; private: - QPixmap* m_pixmap; - QScopedPointer m_tool; + CaptureToolObjects m_captureToolObjects; + CaptureWidget* m_captureWidget; }; + +#endif // FLAMESHOT_MODIFICATIONCOMMAND_H diff --git a/src/widgets/capture/notifierbox.cpp b/src/widgets/capture/notifierbox.cpp index 4e2777a6..e13c8a4b 100644 --- a/src/widgets/capture/notifierbox.cpp +++ b/src/widgets/capture/notifierbox.cpp @@ -54,6 +54,6 @@ void NotifierBox::showMessage(const QString& msg) void NotifierBox::showColor(const QColor& color) { - Q_UNUSED(color); + Q_UNUSED(color) m_message = QLatin1String(""); } diff --git a/src/widgets/imagelabel.cpp b/src/widgets/imagelabel.cpp index 08af5f20..f7ddb50b 100644 --- a/src/widgets/imagelabel.cpp +++ b/src/widgets/imagelabel.cpp @@ -73,6 +73,6 @@ void ImageLabel::mouseMoveEvent(QMouseEvent* event) // resize handler void ImageLabel::resizeEvent(QResizeEvent* event) { - Q_UNUSED(event); + Q_UNUSED(event) setScaledPixmap(); } diff --git a/src/widgets/panel/sidepanelwidget.h b/src/widgets/panel/sidepanelwidget.h index 198650a3..806a4604 100644 --- a/src/widgets/panel/sidepanelwidget.h +++ b/src/widgets/panel/sidepanelwidget.h @@ -23,7 +23,7 @@ public: signals: void colorChanged(const QColor& c); - void thicknessChanged(const int& t); + void thicknessChanged(int t); void togglePanel(); public slots: diff --git a/src/widgets/panel/utilitypanel.cpp b/src/widgets/panel/utilitypanel.cpp index f92bd589..07bc5e5e 100644 --- a/src/widgets/panel/utilitypanel.cpp +++ b/src/widgets/panel/utilitypanel.cpp @@ -2,15 +2,26 @@ // SPDX-FileCopyrightText: 2017-2019 Alejandro Sirgo Rica & Contributors #include "utilitypanel.h" +#include "capturewidget.h" +#include +#include #include #include #include #include -#include -#include -UtilityPanel::UtilityPanel(QWidget* parent) - : QWidget(parent) +UtilityPanel::UtilityPanel(CaptureWidget* captureWidget) + : QWidget(captureWidget) + , m_captureWidget(captureWidget) + , m_internalPanel(nullptr) + , m_upLayout(nullptr) + , m_bottomLayout(nullptr) + , m_layout(nullptr) + , m_showAnimation(nullptr) + , m_hideAnimation(nullptr) + , m_layersLayout(nullptr) + , m_captureTools(nullptr) + , m_buttonDelete(nullptr) { initInternalPanel(); setAttribute(Qt::WA_TransparentForMouseEvents); @@ -108,18 +119,98 @@ void UtilityPanel::initInternalPanel() m_layout = new QVBoxLayout(); m_upLayout = new QVBoxLayout(); m_bottomLayout = new QVBoxLayout(); + m_layersLayout = new QVBoxLayout(); m_layout->addLayout(m_upLayout); m_layout->addLayout(m_bottomLayout); + m_bottomLayout->addLayout(m_layersLayout); widget->setLayout(m_layout); - QPushButton* closeButton = new QPushButton(this); - closeButton->setText(tr("Close")); - connect(closeButton, &QPushButton::clicked, this, &UtilityPanel::toggle); - m_bottomLayout->addWidget(closeButton); - QColor bgColor = palette().window().color(); bgColor.setAlphaF(0.0); m_internalPanel->setStyleSheet( QStringLiteral("QScrollArea {background-color: %1}").arg(bgColor.name())); m_internalPanel->hide(); + + m_captureTools = new QListWidget(this); + connect(m_captureTools, + SIGNAL(currentRowChanged(int)), + this, + SLOT(slotCaptureToolsCurrentRowChanged(int))); + + QHBoxLayout* layersButtons = new QHBoxLayout(); + m_layersLayout->addLayout(layersButtons); + m_layersLayout->addWidget(m_captureTools); + + m_buttonDelete = new QPushButton(this); + m_buttonDelete->setIcon(QIcon(":/img/material/black/delete.svg")); + m_buttonDelete->setDisabled(true); + layersButtons->addWidget(m_buttonDelete); + layersButtons->addStretch(); + + connect(m_buttonDelete, + SIGNAL(clicked(bool)), + this, + SLOT(slotButtonDelete(bool))); + + // Bottom + QPushButton* closeButton = new QPushButton(this); + closeButton->setText(tr("Close")); + connect(closeButton, &QPushButton::clicked, this, &UtilityPanel::toggle); + m_bottomLayout->addWidget(closeButton); +} + +void UtilityPanel::fillCaptureTools( + QList> captureToolObjects) +{ + int currentSelection = m_captureTools->currentRow(); + m_captureTools->clear(); + m_captureTools->addItem(tr("")); + + for (auto toolItem : captureToolObjects) { + QListWidgetItem* item = new QListWidgetItem( + toolItem->icon(QColor(Qt::white), false), toolItem->name()); + m_captureTools->addItem(item); + } + if (currentSelection >= 0 && currentSelection < m_captureTools->count()) { + m_captureTools->setCurrentRow(currentSelection); + } +} + +void UtilityPanel::setActiveLayer(int index) +{ + index++; + if (index >= 0 && index < m_captureTools->count()) { + m_captureTools->setCurrentRow(index); + } +} + +int UtilityPanel::activeLayerIndex() +{ + return m_captureTools->currentRow() >= 0 ? m_captureTools->currentRow() - 1 + : -1; +} + +void UtilityPanel::slotCaptureToolsCurrentRowChanged(int currentRow) +{ + if (currentRow > 0) { + m_buttonDelete->setDisabled(false); + } else { + m_buttonDelete->setDisabled(true); + } + emit layerChanged(currentRow); +} + +void UtilityPanel::slotButtonDelete(bool clicked) +{ + Q_UNUSED(clicked) + int currentRow = m_captureTools->currentRow(); + if (currentRow > 0) { + m_captureWidget->removeToolObject(currentRow); + if (currentRow >= m_captureTools->count()) { + currentRow = m_captureTools->count() - 1; + } + } else { + currentRow = 0; + } + m_captureTools->setCurrentRow(currentRow); } diff --git a/src/widgets/panel/utilitypanel.h b/src/widgets/panel/utilitypanel.h index 6473d3b7..f26cab33 100644 --- a/src/widgets/panel/utilitypanel.h +++ b/src/widgets/panel/utilitypanel.h @@ -3,6 +3,7 @@ #pragma once +#include "src/tools/capturetool.h" #include #include @@ -10,12 +11,16 @@ class QVBoxLayout; class QPropertyAnimation; class QScrollArea; class QPushButton; +class QListWidget; +class CaptureTool; +class QPushButton; +class CaptureWidget; class UtilityPanel : public QWidget { Q_OBJECT public: - explicit UtilityPanel(QWidget* parent = nullptr); + explicit UtilityPanel(CaptureWidget* captureWidget); QWidget* toolWidget() const; void addToolWidget(QWidget* w); @@ -23,9 +28,18 @@ public: void pushWidget(QWidget* w); void hide(); void show(); + void fillCaptureTools( + QList> captureToolObjectsHistory); + void setActiveLayer(int index); + int activeLayerIndex(); + +signals: + void layerChanged(int layer); public slots: void toggle(); + void slotButtonDelete(bool clicked); + void slotCaptureToolsCurrentRowChanged(int currentRow); private: void initInternalPanel(); @@ -37,4 +51,8 @@ private: QVBoxLayout* m_layout; QPropertyAnimation* m_showAnimation; QPropertyAnimation* m_hideAnimation; + QVBoxLayout* m_layersLayout; + QListWidget* m_captureTools; + QPushButton* m_buttonDelete; + CaptureWidget* m_captureWidget; };