();
- private static GCHandle? _gcHandle;
- private static byte[] _soundBuffer;
-
- public static void Initialize() {
- if (_gcHandle == null) {
- try {
- ResourceManager resources = new ResourceManager("Greenshot.Sounds", Assembly.GetExecutingAssembly());
- _soundBuffer = (byte[])resources.GetObject("camera");
-
- if (CoreConfig.NotificationSound != null && CoreConfig.NotificationSound.EndsWith(".wav")) {
- try {
- if (File.Exists(CoreConfig.NotificationSound)) {
- _soundBuffer = File.ReadAllBytes(CoreConfig.NotificationSound);
- }
- } catch (Exception ex) {
- Log.WarnFormat("couldn't load {0}: {1}", CoreConfig.NotificationSound, ex.Message);
- }
- }
- // Pin sound so it can't be moved by the Garbage Collector, this was the cause for the bad sound
- _gcHandle = GCHandle.Alloc(_soundBuffer, GCHandleType.Pinned);
- } catch (Exception e) {
- Log.Error("Error initializing.", e);
- }
- }
- }
-
- public static void Play() {
- if (_soundBuffer != null) {
- //Thread playSoundThread = new Thread(delegate() {
- SoundFlags flags = SoundFlags.SND_ASYNC | SoundFlags.SND_MEMORY | SoundFlags.SND_NOWAIT | SoundFlags.SND_NOSTOP;
- try {
- if (_gcHandle != null) WinMM.PlaySound(_gcHandle.Value.AddrOfPinnedObject(), (UIntPtr)0, (uint)flags);
- } catch (Exception e) {
- Log.Error("Error in play.", e);
- }
- //});
- //playSoundThread.Name = "Play camera sound";
- //playSoundThread.IsBackground = true;
- //playSoundThread.Start();
- }
- }
-
- public static void Deinitialize() {
- try {
- if (_gcHandle != null) {
- WinMM.PlaySound(null, (UIntPtr)0, 0);
- _gcHandle.Value.Free();
- _gcHandle = null;
- }
- } catch (Exception e) {
- Log.Error("Error in deinitialize.", e);
- }
- }
- }
-}
diff --git a/Greenshot/Helpers/StartupHelper.cs b/Greenshot/Helpers/StartupHelper.cs
deleted file mode 100644
index 1ca5180e8..000000000
--- a/Greenshot/Helpers/StartupHelper.cs
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Windows.Forms;
-using log4net;
-using Microsoft.Win32;
-using System.IO;
-
-namespace Greenshot.Helpers {
- ///
- /// A helper class for the startup registry
- ///
- public static class StartupHelper {
- private static readonly ILog Log = LogManager.GetLogger(typeof(StartupHelper));
-
- private const string RunKey6432 = @"Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run";
- private const string RunKey = @"Software\Microsoft\Windows\CurrentVersion\Run";
-
- private const string ApplicationName = "Greenshot";
-
- private static string GetExecutablePath() {
- return "\"" + Application.ExecutablePath + "\"";
- }
-
- ///
- /// Return true if the current user can write the RUN key of the local machine.
- ///
- /// true if Greenshot can write key
- public static bool CanWriteRunAll() {
- try {
- using (Registry.LocalMachine.OpenSubKey(RunKey, true))
- {
- }
- } catch {
- return false;
- }
- return true;
- }
-
- ///
- /// Return true if the current user can write the RUN key of the current user.
- ///
- /// true if Greenshot can write key
- public static bool CanWriteRunUser() {
- try {
- using (Registry.CurrentUser.OpenSubKey(RunKey, true))
- {
- }
- } catch {
- return false;
- }
- return true;
- }
-
- ///
- /// Return the RUN key value of the local machine
- ///
- /// the RUN key value of the local machine
- public static object GetRunAllValue()
- {
- using (var key = Registry.LocalMachine.OpenSubKey(RunKey, false))
- {
- object runValue = key?.GetValue(ApplicationName);
- if (runValue != null)
- {
- return runValue;
- }
- }
- // for 64-bit systems we need to check the 32-bit keys too
- if (IntPtr.Size != 8)
- {
- return null;
- }
- using (var key = Registry.LocalMachine.OpenSubKey(RunKey6432, false))
- {
- object runValue = key?.GetValue(ApplicationName);
- if (runValue != null)
- {
- return runValue;
- }
- }
- return null;
- }
-
- ///
- /// Return the RUN key value of the current user
- ///
- /// the RUN key value of the current user
- public static object GetRunUserValue() {
- using (var key = Registry.CurrentUser.OpenSubKey(RunKey, false)) {
- object runValue = key?.GetValue(ApplicationName);
- if (runValue != null) {
- return runValue;
- }
- }
- // for 64-bit systems we need to check the 32-bit keys too
- if (IntPtr.Size != 8)
- {
- return null;
- }
- using (var key = Registry.CurrentUser.OpenSubKey(RunKey6432, false)) {
- object runValue = key?.GetValue(ApplicationName);
- if (runValue != null) {
- return runValue;
- }
- }
- return null;
- }
-
- ///
- /// Return true if the local machine has a RUN entry for Greenshot
- ///
- /// true if there is a run key
- public static bool HasRunAll() {
- try {
- return GetRunAllValue() != null;
- } catch (Exception e) {
- Log.Error("Error retrieving RunAllValue", e);
- }
- return false;
- }
-
- ///
- /// Return true if the current user has a RUN entry for Greenshot
- ///
- /// true if there is a run key
- public static bool HasRunUser() {
- object runValue = null;
- try {
- runValue = GetRunUserValue();
- } catch (Exception e) {
- Log.Error("Error retrieving RunUserValue", e);
- }
- return runValue != null;
- }
-
- ///
- /// Delete the RUN key for the localmachine ("ALL")
- ///
- public static void DeleteRunAll() {
- if (!HasRunAll())
- {
- return;
- }
- try
- {
- using var key = Registry.LocalMachine.OpenSubKey(RunKey, true);
- key?.DeleteValue(ApplicationName);
- } catch (Exception e) {
- Log.Error("Error in deleteRunAll.", e);
- }
- try
- {
- // for 64-bit systems we need to delete the 32-bit keys too
- if (IntPtr.Size != 8)
- {
- return;
- }
-
- using var key = Registry.LocalMachine.OpenSubKey(RunKey6432, false);
- key?.DeleteValue(ApplicationName);
- } catch (Exception e) {
- Log.Error("Error in deleteRunAll.", e);
- }
- }
-
- ///
- /// Delete the RUN key for the current user
- ///
- public static void DeleteRunUser() {
- if (!HasRunUser())
- {
- return;
- }
- try
- {
- using var key = Registry.CurrentUser.OpenSubKey(RunKey, true);
- key?.DeleteValue(ApplicationName);
- } catch (Exception e) {
- Log.Error("Error in deleteRunUser.", e);
- }
- try
- {
- // for 64-bit systems we need to delete the 32-bit keys too
- if (IntPtr.Size != 8)
- {
- return;
- }
-
- using var key = Registry.CurrentUser.OpenSubKey(RunKey6432, false);
- key?.DeleteValue(ApplicationName);
- } catch (Exception e) {
- Log.Error("Error in deleteRunUser.", e);
- }
- }
-
- ///
- /// Set the RUN key for the current user
- ///
- public static void SetRunUser() {
- try
- {
- using var key = Registry.CurrentUser.OpenSubKey(RunKey, true);
- key?.SetValue(ApplicationName, GetExecutablePath());
- } catch (Exception e) {
- Log.Error("Error in setRunUser.", e);
- }
- }
-
- ///
- /// Test if there is a link in the Startup folder
- ///
- /// bool
- public static bool IsInStartupFolder() {
- try {
- string lnkName = Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".lnk";
- string startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
- if (Directory.Exists(startupPath)) {
- Log.DebugFormat("Startup path: {0}", startupPath);
- if (File.Exists(Path.Combine(startupPath, lnkName))) {
- return true;
- }
- }
- string startupAll = Environment.GetEnvironmentVariable("ALLUSERSPROFILE") + @"\Microsoft\Windows\Start Menu\Programs\Startup";
- if (Directory.Exists(startupAll)) {
- Log.DebugFormat("Startup all path: {0}", startupAll);
- if (File.Exists(Path.Combine(startupAll, lnkName))) {
- return true;
- }
- }
- }
- catch
- {
- // ignored
- }
- return false;
- }
- }
-}
diff --git a/Greenshot/Helpers/ToolStripItemEndisabler.cs b/Greenshot/Helpers/ToolStripItemEndisabler.cs
deleted file mode 100644
index db5a5d178..000000000
--- a/Greenshot/Helpers/ToolStripItemEndisabler.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Windows.Forms;
-
-namespace Greenshot.Helpers {
- ///
- /// Enables or disables toolstrip items, taking care of the hierarchy.
- /// (parent) OwnerItems are ENabled with ToolStripItems,
- /// (child) DropDownItems are ENabled and DISabled with ToolStripItems.
- ///
- public static class ToolStripItemEndisabler {
- [Flags]
- private enum PropagationMode {NONE=0, CHILDREN=1, ANCESTORS=2};
-
- ///
- /// Enables all of a ToolStrip's children (recursively),
- /// but not the ToolStrip itself
- ///
- public static void Enable(ToolStrip ts) {
- Endisable(ts, true, PropagationMode.CHILDREN);
- }
-
- ///
- /// Disables all of a ToolStrip's children (recursively),
- /// but not the ToolStrip itself
- ///
- public static void Disable(ToolStrip ts) {
- Endisable(ts, false, PropagationMode.CHILDREN);
- }
-
- ///
- /// Enables the ToolStripItem, including children (ToolStripDropDownItem)
- /// and ancestor (OwnerItem)
- ///
- public static void Enable(ToolStripItem tsi) {
- Endisable(tsi, true, PropagationMode.CHILDREN | PropagationMode.ANCESTORS);
- }
-
- ///
- /// Disables the ToolStripItem, including children (ToolStripDropDownItem),
- /// but NOT the ancestor (OwnerItem)
- ///
- public static void Disable(ToolStripItem tsi) {
- Endisable(tsi, false, PropagationMode.CHILDREN);
- }
-
- private static void Endisable(ToolStrip ts, bool enable, PropagationMode mode)
- {
- if ((mode & PropagationMode.CHILDREN) != PropagationMode.CHILDREN) return;
-
- foreach(ToolStripItem tsi in ts.Items) {
- Endisable(tsi, enable, PropagationMode.CHILDREN);
- }
- }
-
- private static void Endisable(ToolStripItem tsi, bool enable, PropagationMode mode){
- if (tsi is ToolStripDropDownItem item) {
- Endisable(item, enable, mode);
- } else {
- tsi.Enabled = enable;
- }
-
- if ((mode & PropagationMode.ANCESTORS) != PropagationMode.ANCESTORS) return;
-
- if (tsi.OwnerItem != null) Endisable(tsi.OwnerItem, enable, PropagationMode.ANCESTORS);
-
- }
-
- private static void Endisable(ToolStripDropDownItem tsddi, bool enable, PropagationMode mode) {
-
- if((mode & PropagationMode.CHILDREN) == PropagationMode.CHILDREN) {
- foreach(ToolStripItem tsi in tsddi.DropDownItems) {
- Endisable(tsi, enable, PropagationMode.CHILDREN);
- }
- }
- tsddi.Enabled = enable;
- }
- }
-}
diff --git a/Greenshot/Languages/help-it-IT.html b/Greenshot/Languages/help-it-IT.html
deleted file mode 100644
index 1d5744287..000000000
--- a/Greenshot/Languages/help-it-IT.html
+++ /dev/null
@@ -1,395 +0,0 @@
-
-
-
-
- Guida in linea di Greenshot
-
-
-
-
- Guida in linea di Greenshot
-
- Versione 0.8
-
- Contenuti
-
- - Creazione immagine dello schermo
-
- - Cattura regione
- - Cattura ultima regione
- - Cattura finestra
- - Cattura schermo intero
- - Cattura Internet Explorer
-
-
- - Uso della Gestione Immagini
-
- - Disegnare forme
- - Aggiungere testo
- - Evidenziare qualcosa
- - Offuscare qualcosa
- - Ritagliare l'immagine
- - Aggiungere elementi grafici all'immagine
- - Riutilizzare gli elementi disegnati
- - Esportare l'immagine
-
- - La pagina delle Impostazioni
-
- - Impostazioni Generali
- - Impostazioni di Cattura
- - Impostazioni di Emissione
- - Impostazioni Stampante
-
- - Vuoi aiutarci?
-
- - Considera una donazione
- - Spargi la parola
- - Invia una traduzione
-
-
-
-
- Creazione immagine dello schermo
-
- L'immagine può essere creata utilizzando il tasto Stamp della tastiera,
- oppure cliccando il tasto destro del mouse sull'icona di Greenshot nella barra.
- Ci sono varie opzioni per creare un'immagine:
-
-
-
- Cattura regione Stamp
-
- Il metodo cattura regione consente di selezionare una parte dello schermo da "fotografare".
- Dopo aver avviato il metodo regione, apparirà un mirino sulla posizione del mouse sullo
- schermo. Cliccare e tenere premuto dove si vuole impostare un angolo della regione da
- fotografare. Tenendo premuto il pulsante del mouse, muovere il mouse fino a definire il
- rettangolo da fotografare. Rilasciare quindi il pulsante quando il rettangolo verde avrà
- coperto l'area da catturare nell'immagine.
-
-
- Si può usare il tasto Spazio per cambiare da metodo regione a metodo
- finestra.
-
-
- Se si vuol catturare precisamente un'area, potrebbe risultare più facile selezionare
- un'area più grande e quindi ritagliare l'immagine in
- seguito, utilizzando la Gestione Immagini di Greenshot.
-
-
-
- Cattura ultima regione Maiusc + Stamp
-
- Usando questa opzione, se avete già eseguito un cattura regione o finestra,
- si può ricatturare automaticamente la stessa regione.
-
-
-
- Cattura finestra Alt + Stamp
-
- Crea un'immagine della finestra che è attiva in quel momento.
-
-
- La pagina delle impostazioni offre una possibilità per non catturare
- direttamente la finestra attiva, consentendo quindi di sceglierne una interattivamente.
- Se si seleziona questa opzione, la finestra può essere scelta cliccandovi (come nel metodo
- regione, Greenshot evidenzierà l'area che verrà catturata).
-
Se si vuol catturare una finestra figlia (es: una browser
- viewport (senza barra strumenti, ecc...) o un singolo frame di una pagina web che usa i framesets)
- si può puntare il cursore del mouse sulla finestra e premere il tasto PgDown. Dopo di questo, sarà
- possibile selezionare elementi da catturare nella finestra figlia.
-
-
-
- Cattura schermo intero Ctrl + Stamp
-
- Crea un'immagine dell'intero schermo.
-
-
Cattura Internet Explorer Ctrl + Maiusc + Stamp
-
- Crea facilmente un'immagine della pagina web attiva in quel momento su Internet Explorer.
- Si può usare il menu sensibile al contesto di Greenshot per selezionare la tab di Internet Explorer da catturare, oppure premere
- Crtl + Maiusc + Stamp per catturare la tab attiva.
-
-
-
- Uso della Gestione Immagini
-
- Greenshot fornisce anche una pratica gestione delle immagini, che include degli utili strumenti
- per aggiungere note e forme alle immagini. Essa permette inoltre di evidenziare o
- offuscare parti dell'immagine.
-
-
- La Gestioni Immagini di Greenshot non è solo per le immagini catturate. Si può usare
- anche per aprire e modificare immagini da file o da Appunti. E' sufficiente premere il tasto destro
- sull'icona di Greenshot nella barra, e selezionare rispettivamente Apri immagine da file
- o Apri immagine da Appunti.
-
-
- Come default, la gestione immagini verrà aperta ogniqualvolta un'immagine viene catturata.
- Se non si vuole passare per la gestione immagini, si può disabilitare questo funzionamento
- nella pagina delle impostazioni.
-
-
-
-
- Disegnare forme
-
- Selezionare uno degli strumenti di disegno dalla barra degli strumenti sul lato sinistro
- della gestione immagini o dal menù Oggetti. Per facilitarne la selezione, ciascun
- strumento è assegnato ad un tasto.
- Le forme disponibili sono: rettangolo R, ellisse E, linea L
- e freccia A.
- Cliccare, tenendo premuto il pulsante del mouse e trascinare per definire la posizione e la dimensione della forma.
- Completata la definizione, rilasciare il pulsante del mouse.
-
-
- Le forme possono essere mosse e ridimensionate facilmente, previa selezione mediante lo strumento
- ESC disponibile nella barra a sinistra.
Per ciascun tipo di elemento c'è un gruppo di
- opzioni specifiche per cambiarne l'aspetto (es: spessore linea,
- colore linea, colore di riempimento). Si possono modificare le opzioni di un elemento esistente, previa selezione,
- e anche quelle di nuovi elementi da disegnare, previa selezione dello strumento di disegno.
-
-
- Si possono inoltre selezionare più elementi per una modifica simultanea. Per selezionare più elementi,
- tenere premuto il tasto Maiusc mentre si clicca sugli elementi.
-
-
-
- Aggiungere testo
-
- L'uso dello strumento di testo T è simile all'uso degli strumenti di disegno
- forme. E' sufficiente disegnare l'elemento di testo delle dimensioni desiderate,
- e quindi digitare il testo.
- Per modificare il testo di un elemento esistente, premere il doppio click sull'elemento.
-
-
-
- Evidenziare qualcosa
-
- Dopo aver selezionato lo strumento di evidenziazione H, definire l'area da evidenziare esattamente
- come si volesse disegnare una forma.
- Ci sono varie opzioni per evidenziare, esse possono essere selezionate cliccando il pulsante
- più in alto a sinistra nella barra degli strumenti:
-
-
- - Evidenzia il testo: evidenzia un'area applicando un colore brillante ad essa, come un
- pennarello evidenziatore
- - Evidenzia l'area: sfuoca* e scurisce tutto all'esterno dell'area selezionata
- - Scala di grigi: tutto ciò che è al di fuori dell'area selezionata viene trasformato in scala di grigi
- - Ingrandisci: l'area selezionata verrà visualizzata come ingrandita da una lente
-
-
-
- Offuscare qualcosa
-
- Offuscare parti di un'immagine può essere una buona idea se essa contiene dati privati che non devono essere
- visti da altre persone, per esempio dati conto bancario, nomi, parole d'ordine o volti di persone.
- Usare lo strumento di offuscamento O esattamente come lo strumento di evidenziazione.
- Le opzioni disponibili per l'offuscamento, sono:
-
-
- - Offusca/pixelize: aumenta le dimensioni dei pixel nell'area selezionata
- - Sfuma*: sfuma e sfuoca l'area selezionata
-
-
-
- * A seconda delle prestazioni del proprio PC, applicare un effetto di sfumatura potrebbe rallentare la Gestione
- Immagini di Greenshot. Se si vede che la Gestione Immagini risponde lentamente subito dopo aver eseguito una sfumatura,
- è utile provare a ridurre il valore di Qualità anteprima nella barra strumenti di offuscamento,
- o a diminuire il valore di Raggio sfumatura.
- Se le prestazioni della sfumatura sono ancora deludenti per poterci lavorare, si consiglia si usare invece
- l'effetto Offusca/pixelize.
-
-
-
- Ritagliare l'immagine
-
- Per ricavare solo una parte dell'immagine catturata, si può usare lo strumento di ritaglio C
- per ritagliare l'area desiderata.
- Dopo aver selezionato lo strumento di ritaglio, disegnare un rettangolo per l'area che si vuole mantenere.
- Come per gli atri elementi, si possono facilmente modificare le dimensioni dell'area selezionata.
- Dopo aver impostato correttamente la selezione dell'area, premere il pulsante di conferma della barra strumenti
- oppure premere il tasto Invio. Si può annullare l'azione di ritaglio, cliccando il pulsante di cancellazione o premendo
- ESC.
-
-
- Ritaglia Automaticamente: Se si ha la necessità di ritagliare un pezzo dell'immagine lungo i bordi di uno sfondo con colore compatto,
- è sufficiente scegliere Ritaglia Automaticamente dal menù Modifica e Greenshot automaticamente
- selezionerà l'area di ritaglio.
-
-
-
- Aggiunta elementi grafici all'immagine
-
- Si possono facilmente aggiungere degli elementi grafici o delle altre immagini alla immagine in lavorazione, è sufficiente trascinare un file di immagine
- all'interno della finestra di gestione immagini. Inoltre, selezionando Inserisci finestra dal menù Modifica, si possono inserire
- immagini prese da altre finestre. In questo caso, appare una lista con tutte le finestre aperte, consentendo quindi di scegliere quella che si
- vuole inserire.
-
-
-
-
- Ri-utilizzare elementi disegnati
-
- Se ci si ritrova a utilizzare lo stesso o simile elemento nella maggior parte delle immagini,
- (es: campo di testo contenente tipo browser e versione, oppure offuscamento dello stesso elemento
- su più immagini), è possibile riutilizzare gli elementi in modo semplice.
- Selezionare Salva oggetti su file dal menù Oggetti per salvare di elementi correnti
- per poterli riutilizzare poi. Carica oggetti da file viene invece usato per applicare su un'altra immagine
- gli elementi salvati in precedenza.
-
-
-
- Esportare l'immagine
-
- Dopo aver modificato l'immagine, si può esportare il risultato per vari scopi, a seconda delle necessità.
- Si può accedere a tutte le opzioni di esportazione mediante il menù File,
- sulla barra principale, o per mezzo delle seguenti scorciatoie:
-
-
- - Salva Ctrl + S: salva l'immagine su un file (se l'immagine è già stata salvata, altrimenti emette la finestra di Salva come...)
- - Salva come... Ctrl + Maiusc + S: permette di scegliere la destinazione, il nome file e il formato immagine per il file da salvare
- - Copia immagine sugli appunti Ctrl + Maiusc + C: mette una copia dell'immagine sugli appunti, consentendo poi di incollarla dentro altri programmi
- - Stampa... Ctrl + P: invia l'immagine a una stampante
- - E-Mail Ctrl + E: apre un nuovo messaggio sul programma di e-mail di default, aggiungendo l'immagine come allegato
-
-
- Dopo aver salvato un'immagine dalla gestione, cliccando con il tasto destro del mouse sulla barra di stato in basso sulla finestra
- della gestione immagini, è possibile copiare il percorso sugli appunti, oppure aprire la cartella di destinazione con la gestione risorse.
-
-
-
-
- Le Preferenze
-
-
- Impostazioni Generali
-
- - Lingua: La lingua che si preferisce usare.
- Si possono scaricare i file per le lingue aggiuntive di Greenshot qui.
- - Lancia Greenshot all'avvio: Avvia il programma in automatico all'accensione del sistema.
- - Scorciatoie di tastiera: Personalizza le scorciatoie (hotkeys) da usare per catturare le immagini.
- - Usa il proxy di default del sistema: Se selezionato, Greenshot usa il proxy di default del sistema per controllare se ci sono aggiornamenti.
- - Intervallo di controllo aggiornamento, in giorni: Greenshot può controllare automaticamente se ci sono aggiornamenti. Questo parametro può essere
- utilizzato per specificare l'intervallo (in giorni); per disabilitare il controllo aggiornamento si può usare il valore 0.
-
-
-
- Impostazioni di Cattura
-
- - Cattura puntatore mouse: Se selezionato, il puntatore del mouse verrà catturato. Il puntatore viene gestito come un elemento separato, in modo che possa essere spostato o rimosso in seguito.
- - Emetti suono fotocamera: Attiva il riscontro udibile dell'azione di cattura (suono dello scatto fotografico).
- - Millisecondi di attesa prima di catturare: Utile per aggiungere un tempo di ritardo prima dell'effettiva cattura dello schermo.
- - Usa la modalità di cattura via finestra interattiva: Invece di catturare direttamente la finestra attiva, la modalità interattiva
- consente di selezionare la finestra da catturare. E' inoltre possibile catturare le finestre figlie, vedi Cattura finestra.
- -
- Cattura in stile Aero (so Windows Vista / 7): Se si sta usando Greenshot su Windows Vista or Windows 7 con lo stile di visualizzazione Aero abilitato, è possibile
- scegliere come devono essere gestiti i bordi della finestra trasparente quando vengono create le immagini in modalità finestra. Questa impostazione è da usare per evitare
- la cattura di elementi dello sfondo che appaiono attraverso i bordi trasparenti.
-
- - Automaticamente: Greenshot deciderà come gestire la trasparenza.
- - Come visualizzata: I bordi trasparenti verranno catturati come visualizzati sullo schermo.
- - Usa i colori di default: Al posto della trasparenza verrà applicato un colore compatto di default.
- - Usa colori personalizzati: Si può scegliere il colore che sarà applicato al posto della trasparenza.
- - Conserva la trasparenza: I bordi verranno catturati conservando la trasparenza, senza però catturare gli elementi che potrebbero essere sullo sfondo. (Nota: le aree
- trasparenti verrano visualizzate usando un modello selezionato nella gestione immagini. Il modello non verrà esportato se si salverà l'immagine su file. Ricordarsi di salvare
- il file come PNG se si vuole conservance il pieno supporto della trasparenza.)
-
-
- - Cattura Internet Explorer: Abilita la comoda cattura delle pagine web utilizzando Internet Explorer.
- - Adatta finestra Gestione a dimensioni di cattura: Se selezionata, la finestra della Gestione immagini verrà automaticamente ridimensionata in base alla dimensione dell'immagine catturata.
-
-
-
- Impostazioni di Emissione
-
- - Destinazione dell'immagine: Consente di scegliere la destinazione/i automatiche delle immagini subito dopo l'azione di cattura.
- - Impostazioni Preferite per l'Emissione File: Cartella e nome file da usare quando si salva automaticamente, o da suggerire quando si salva (usando la finestra "Salva come"). Cliccare il pulsante ? per sapere di più sulle variabili che possono essere usate nel modello del nome file.
- - Impostazioni JPEG: Qualità da usare quando si salvano file JPEG.
-
-
-
- Impostazioni Stampante
-
- - Riduci alle dimensioni pagina: Se l'immagine eccede le dimensioni della pagina, essa verrà ridotta e adattata alle dimensioni della pagina.
- - Ingrandisci fino alle dimensioni pagina: Se l'immagine è più piccola delle dimensioni della pagina, essa verrà ingrandita per stamparla più grande possibile senza superare le dimensioni della pagina.
- - Ruota a seconda dell'orientamento pagina: Ruoterà l'immagine in formato orizzontale di 90° per la stampa.
- - Centra nella pagina: L'immagine verrà stampata al centro della pagina.
- - Stampa data / ora sul piede della pagina: La data e l'ora di stampa verranno stampati sul piede della pagina.
- - Stampa con colori inverititi (negativo): Trasformerà l'immagine in negativo prima di stamparla, utile per esempio quando si stampa un'immagine con testo bianco su sfondo nero (per risparmiare toner o inchiostro).
- - Visualizza scelta opzioni di stampa ogni volta che si stampa un'immagine: Permette di scegliere se visualizzare o meno la finestra di scelta opzioni per le stampe successive alla prima.
-
-
-
- Impostazioni Componenti Aggiuntivi
-
- Visualizza la lista dei componenti aggiuntivi di Greenshot che sono attualmente installati. La configurazione del singolo componente aggiuntivo è disponibile selezionando
- il componente dalla lista e quindi cliccando su Configura.
-
-
-
-
- Desideri aiutarci?
-
-
- Attualmente non abbiamo bisogno di aiuto per lo sviluppo. Tuttavia, ci sono molte cose che puoi fare per
- supportare Greenshot e il team di sviluppo.
- Grazie anticipatamente :)
-
-
-
- Considera una donazione
-
- Stiamo lavorando molto su Greenshot e stiamo spendendo molto tempo per fornire
- un buon prodotto software gratuito e open source. Se ti sei reso conto che Greenshot
- ti ha reso più produttivo, e se fa risparmiare a te (o alla tua società)
- molto tempo e denaro, o se semplicemente ti piace Greenshot e l'idea
- di software open source: per cortesia, considera di onorare i nostri sforzi con una donazione.
- Per cortesia dai un'occhiata alla nostra home page per vedere come puoi aiutare il team di sviluppo di Greenshot:
- http://getgreenshot.org/support/
-
-
-
- Spargi la parola
-
- Se ti piace Greenshot, fallo sapere anche agli altri: racconta ai tuoi amici di Greenshot.
- Anche loro, a loro volta :)
- Commenta positivamente Greenshot sui portali di software, oppure metti un link sulla tua home page, blog o sito web.
-
-
-
- Invia una traduzione
-
- Greenshot non è disponibile nella tua lingua preferita? Se ti senti in grado di tradurre un pezzo di software,
- sei più che benvenuto.
- Se sei un utente registrato su sourceforge.net, puoi inviare le traduzioni al nostro
- translations tracker.
- Prima di farlo, assicurati che non esista già la traduzione sulla nostra
- pagina di download. Controlla anche il nostro translations tracker,
- ci potrebbe essere una traduzione in lavorazione, o almeno in discussione.
- Ti preghiamo di notare che forniremo una traduzione della nostra pagina di download solo se è stata inviata mediante
- il tuo conto utente su sourceforge.net. Visto che molto probabilmente non siamo in grado di capire la traduzione, è opportuno
- che gli altri utenti di sourceforge possano essere in grado di contattarti per revisioni o miglioramenti
- in caso di nuove versioni di Greenshot.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Greenshot/Memento/AddElementMemento.cs b/Greenshot/Memento/AddElementMemento.cs
deleted file mode 100644
index 07b4f18d3..000000000
--- a/Greenshot/Memento/AddElementMemento.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using Greenshot.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento {
- ///
- /// The AddElementMemento makes it possible to undo adding an element
- ///
- public class AddElementMemento : IMemento {
- private IDrawableContainer _drawableContainer;
- private Surface _surface;
-
- public AddElementMemento(Surface surface, IDrawableContainer drawableContainer) {
- _surface = surface;
- _drawableContainer = drawableContainer;
- }
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing) {
- //if (disposing) { }
- _drawableContainer = null;
- _surface = null;
- }
-
- public bool Merge(IMemento otherMemento) {
- return false;
- }
-
- public IMemento Restore() {
- // Before
- _drawableContainer.Invalidate();
- // Store the selected state, as it's overwritten by the RemoveElement
-
- DeleteElementMemento oldState = new DeleteElementMemento(_surface, _drawableContainer);
- _surface.RemoveElement(_drawableContainer, false);
- _drawableContainer.Selected = true;
-
- // After
- _drawableContainer.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/AddElementsMemento.cs b/Greenshot/Memento/AddElementsMemento.cs
deleted file mode 100644
index 1f73f2106..000000000
--- a/Greenshot/Memento/AddElementsMemento.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using Greenshot.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento
-{
- ///
- /// The AddElementMemento makes it possible to undo adding an element
- ///
- public class AddElementsMemento : IMemento
- {
- private IDrawableContainerList _containerList;
- private Surface _surface;
-
- public AddElementsMemento(Surface surface, IDrawableContainerList containerList)
- {
- _surface = surface;
- _containerList = containerList;
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- _containerList?.Dispose();
- }
- _containerList = null;
- _surface = null;
- }
-
- public bool Merge(IMemento otherMemento)
- {
- return false;
- }
-
- public IMemento Restore()
- {
- var oldState = new DeleteElementsMemento(_surface, _containerList);
-
- _surface.RemoveElements(_containerList, false);
-
- // After, so everything is gone
- _surface.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/ChangeFieldHolderMemento.cs b/Greenshot/Memento/ChangeFieldHolderMemento.cs
deleted file mode 100644
index 225e8de20..000000000
--- a/Greenshot/Memento/ChangeFieldHolderMemento.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento
-{
- ///
- /// The ChangeFieldHolderMemento makes it possible to undo-redo an IDrawableContainer move
- ///
- public class ChangeFieldHolderMemento : IMemento
- {
- private IDrawableContainer _drawableContainer;
- private readonly IField _fieldToBeChanged;
- private readonly object _oldValue;
-
- public ChangeFieldHolderMemento(IDrawableContainer drawableContainer, IField fieldToBeChanged)
- {
- _drawableContainer = drawableContainer;
- _fieldToBeChanged = fieldToBeChanged;
- _oldValue = fieldToBeChanged.Value;
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- _drawableContainer?.Dispose();
- }
- _drawableContainer = null;
- }
-
- public bool Merge(IMemento otherMemento)
- {
- if (otherMemento is not ChangeFieldHolderMemento other) return false;
-
- if (!other._drawableContainer.Equals(_drawableContainer)) return false;
-
- return other._fieldToBeChanged.Equals(_fieldToBeChanged);
- }
-
- public IMemento Restore()
- {
- // Before
- _drawableContainer.Invalidate();
- ChangeFieldHolderMemento oldState = new ChangeFieldHolderMemento(_drawableContainer, _fieldToBeChanged);
- _fieldToBeChanged.Value = _oldValue;
- // After
- _drawableContainer.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/DeleteElementMemento.cs b/Greenshot/Memento/DeleteElementMemento.cs
deleted file mode 100644
index cf921713f..000000000
--- a/Greenshot/Memento/DeleteElementMemento.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using Greenshot.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento {
- ///
- /// The DeleteElementMemento makes it possible to undo deleting an element
- ///
- public class DeleteElementMemento : IMemento {
- private IDrawableContainer _drawableContainer;
- private readonly Surface _surface;
-
- public DeleteElementMemento(Surface surface, IDrawableContainer drawableContainer) {
- _surface = surface;
- _drawableContainer = drawableContainer;
- }
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing) return;
-
- if (_drawableContainer != null) {
- _drawableContainer.Dispose();
- _drawableContainer = null;
- }
- }
-
- public bool Merge(IMemento otherMemento) {
- return false;
- }
-
- public IMemento Restore() {
- // Before
- _drawableContainer.Invalidate();
-
- var oldState = new AddElementMemento(_surface, _drawableContainer);
- _surface.AddElement(_drawableContainer, false);
- // The container has a selected flag which represents the state at the moment it was deleted.
- if (_drawableContainer.Selected) {
- _surface.SelectElement(_drawableContainer);
- }
-
- // After
- _drawableContainer.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/DeleteElementsMemento.cs b/Greenshot/Memento/DeleteElementsMemento.cs
deleted file mode 100644
index 33b0fe0ac..000000000
--- a/Greenshot/Memento/DeleteElementsMemento.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using Greenshot.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento
-{
- ///
- /// The DeleteElementMemento makes it possible to undo deleting an element
- ///
- public class DeleteElementsMemento : IMemento
- {
- private IDrawableContainerList _containerList;
- private Surface _surface;
-
- public DeleteElementsMemento(Surface surface, IDrawableContainerList containerList)
- {
- _surface = surface;
- _containerList = containerList;
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- _containerList?.Dispose();
- }
- _containerList = null;
- _surface = null;
- }
-
- public bool Merge(IMemento otherMemento)
- {
- return false;
- }
-
- public IMemento Restore()
- {
- var oldState = new AddElementsMemento(_surface, _containerList);
- _surface.AddElements(_containerList, false);
- // After
- _surface.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/DrawableContainerBoundsChangeMemento.cs b/Greenshot/Memento/DrawableContainerBoundsChangeMemento.cs
deleted file mode 100644
index 32870a88a..000000000
--- a/Greenshot/Memento/DrawableContainerBoundsChangeMemento.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using Greenshot.Drawing;
-using GreenshotPlugin.Core;
-using System.Collections.Generic;
-using System.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento
-{
- ///
- /// The DrawableContainerBoundsChangeMemento makes it possible to undo-redo an IDrawableContainer resize & move
- ///
- public class DrawableContainerBoundsChangeMemento : IMemento
- {
- private readonly List _points = new();
- private readonly List _sizes = new();
- private IDrawableContainerList _listOfdrawableContainer;
-
- private void StoreBounds()
- {
- foreach (IDrawableContainer drawableContainer in _listOfdrawableContainer)
- {
- _points.Add(drawableContainer.Location);
- _sizes.Add(drawableContainer.Size);
- }
- }
-
- public DrawableContainerBoundsChangeMemento(IDrawableContainerList listOfdrawableContainer)
- {
- _listOfdrawableContainer = listOfdrawableContainer;
- StoreBounds();
- }
-
- public DrawableContainerBoundsChangeMemento(IDrawableContainer drawableContainer)
- {
- _listOfdrawableContainer = new DrawableContainerList
- {
- drawableContainer
- };
- _listOfdrawableContainer.Parent = drawableContainer.Parent;
- StoreBounds();
- }
-
- public void Dispose()
- {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- _listOfdrawableContainer?.Dispose();
- }
- _listOfdrawableContainer = null;
- }
-
- public bool Merge(IMemento otherMemento)
- {
- if (otherMemento is not DrawableContainerBoundsChangeMemento other) return false;
-
- if (ObjectExtensions.CompareLists(_listOfdrawableContainer, other._listOfdrawableContainer))
- {
- // Lists are equal, as we have the state already we can ignore the new memento
- return true;
- }
- return false;
- }
-
- public IMemento Restore()
- {
- var oldState = new DrawableContainerBoundsChangeMemento(_listOfdrawableContainer);
- for (int index = 0; index < _listOfdrawableContainer.Count; index++)
- {
- IDrawableContainer drawableContainer = _listOfdrawableContainer[index];
- // Before
- drawableContainer.Invalidate();
- drawableContainer.Left = _points[index].X;
- drawableContainer.Top = _points[index].Y;
- drawableContainer.Width = _sizes[index].Width;
- drawableContainer.Height = _sizes[index].Height;
- // After
- drawableContainer.Invalidate();
- drawableContainer.Parent.Modified = true;
- }
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/SurfaceBackgroundChangeMemento.cs b/Greenshot/Memento/SurfaceBackgroundChangeMemento.cs
deleted file mode 100644
index a20823878..000000000
--- a/Greenshot/Memento/SurfaceBackgroundChangeMemento.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using Greenshot.Drawing;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento {
- ///
- /// The SurfaceCropMemento makes it possible to undo-redo an surface crop
- ///
- public class SurfaceBackgroundChangeMemento : IMemento {
- private Image _image;
- private Surface _surface;
- private Matrix _matrix;
-
- public SurfaceBackgroundChangeMemento(Surface surface, Matrix matrix) {
- _surface = surface;
- _image = surface.Image;
- _matrix = matrix.Clone();
- // Make sure the reverse is applied
- _matrix.Invert();
- }
-
- public void Dispose() {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing) return;
-
- if (_matrix != null) {
- _matrix.Dispose();
- _matrix = null;
- }
- if (_image != null) {
- _image.Dispose();
- _image = null;
- }
- _surface = null;
- }
-
- public bool Merge(IMemento otherMemento) {
- return false;
- }
-
- public IMemento Restore() {
- SurfaceBackgroundChangeMemento oldState = new SurfaceBackgroundChangeMemento(_surface, _matrix);
- _surface.UndoBackgroundChange(_image, _matrix);
- _surface.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/Memento/TextChangeMemento.cs b/Greenshot/Memento/TextChangeMemento.cs
deleted file mode 100644
index 4971b8ff0..000000000
--- a/Greenshot/Memento/TextChangeMemento.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using Greenshot.Drawing;
-using GreenshotPlugin.Interfaces.Drawing;
-
-namespace Greenshot.Memento {
- ///
- /// The TextChangeMemento makes it possible to undo-redo an IDrawableContainer move
- ///
- public class TextChangeMemento : IMemento {
- private TextContainer _textContainer;
- private readonly string _oldText;
-
- public TextChangeMemento(TextContainer textContainer) {
- _textContainer = textContainer;
- _oldText = textContainer.Text;
- }
-
- public void Dispose() {
- Dispose(true);
- }
-
- protected virtual void Dispose(bool disposing) {
- if (disposing) {
- _textContainer = null;
- }
- }
-
- public bool Merge(IMemento otherMemento) {
- if (otherMemento is not TextChangeMemento other) return false;
-
- return other._textContainer.Equals(_textContainer);
- }
-
- public IMemento Restore() {
- // Before
- _textContainer.Invalidate();
- TextChangeMemento oldState = new TextChangeMemento(_textContainer);
- _textContainer.ChangeText(_oldText, false);
- // After
- _textContainer.Invalidate();
- return oldState;
- }
- }
-}
diff --git a/Greenshot/releases/innosetup/Languages/Bosnian.isl b/Greenshot/releases/innosetup/Languages/Bosnian.isl
deleted file mode 100644
index 93488c918..000000000
--- a/Greenshot/releases/innosetup/Languages/Bosnian.isl
+++ /dev/null
@@ -1,329 +0,0 @@
-; *** Inno Setup version 5.5.3+ Bosnian messages ***
-;
-; Bosnian translation by Kenan Dervisevic (kenan3008@gmail.com)
-;
-
-[LangOptions]
-LanguageName=Bosanski
-LanguageID=$141a
-LanguageCodePage=1250
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=Instalacija
-SetupWindowTitle=Instalacija - %1
-UninstallAppTitle=Deinstalacija
-UninstallAppFullTitle=%1 Deinstalacija
-
-; *** Misc. common
-InformationTitle=Informacija
-ConfirmTitle=Potvrda
-ErrorTitle=Greka
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=Zapoeli ste instalaciju programa %1. elite li nastaviti?
-LdrCannotCreateTemp=Ne mogu kreirati privremenu datoteku. Instalacija prekinuta
-LdrCannotExecTemp=Ne mogu izvriti datoteku u privremenom folderu. Instalacija prekinuta
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%nGreka %2: %3
-SetupFileMissing=Datoteka %1 se ne nalazi u instalacijskom folderu. Molimo vas da rijeite problem ili nabavite novu kopiju programa.
-SetupFileCorrupt=Instalacijske datoteke sadre greku. Molimo vas da nabavite novu kopiju programa.
-SetupFileCorruptOrWrongVer=Instalacijske datoteke sadre greku, ili nisu kompatibilne sa ovom verzijom instalacije. Molimo vas rijeite problem ili nabavite novu kopiju programa.
-InvalidParameter=Neispravan parametar je proslijeen komandnoj liniji:%n%n%1
-SetupAlreadyRunning=Instalacija je ve pokrenuta.
-WindowsVersionNotSupported=Ovaj program ne podrava verziju Windowsa koja je instalirana na ovom raunaru.
-WindowsServicePackRequired=Ovaj program zahtjeva %1 Service Pack %2 ili noviji.
-NotOnThisPlatform=Ovaj program ne radi na %1.
-OnlyOnThisPlatform=Ovaj program se mora pokrenuti na %1.
-OnlyOnTheseArchitectures=Ovaj program se moe instalirati samo na verzijama Windowsa napravljenim za sljedee arhitekture procesora:%n%n%1
-MissingWOW64APIs=Verzija Windowsa koju koristite ne sadri funkcionalnosti potrebne da bi instalacijski program mogao instalirati 64-bitnu verziju. Da bi ispravili taj problem, molimo instalirajte Service Pack %1.
-WinVersionTooLowError=Ovaj program zahtjeva %1 verzije %2 ili noviju.
-WinVersionTooHighError=Ovaj program se ne moe instalirati na %1 verziji %2 ili novijoj.
-AdminPrivilegesRequired=Morate imati administratorska prava pri instaliranju ovog programa.
-PowerUserPrivilegesRequired=Morate imati administratorska prava ili biti lan grupe Power Users prilikom instaliranja ovog programa.
-SetupAppRunningError=Instalacija je detektovala da je %1 pokrenut.%n%nMolimo zatvorite program i sve njegove kopije i potom kliknite Dalje za nastavak ili Odustani za prekid.
-UninstallAppRunningError=Deinstalacija je detektovala da je %1 trenutno pokrenut.%n%nMolimo zatvorite program i sve njegove kopije i potom kliknite Dalje za nastavak ili Odustani za prekid.
-
-; *** Misc. errors
-ErrorCreatingDir=Instalacija nije mogla kreirati folder "%1"
-ErrorTooManyFilesInDir=Instalacija nije mogla kreirati datoteku u folderu "%1" zato to on sadri previe datoteka
-
-; *** Setup common messages
-ExitSetupTitle=Prekid instalacije
-ExitSetupMessage=Instalacija nije zavrena. Ako sada izaete, program nee biti instaliran.%n%nInstalaciju moete pokrenuti kasnije u sluaju da je elite zavriti.%n%nPrekid instalacije?
-AboutSetupMenuItem=&O instalaciji...
-AboutSetupTitle=O instalaciji
-AboutSetupMessage=%1 verzija %2%n%3%n%n%1 poetna stranica:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< Na&zad
-ButtonNext=Da&lje >
-ButtonInstall=&Instaliraj
-ButtonOK=U redu
-ButtonCancel=Otkai
-ButtonYes=&Da
-ButtonYesToAll=Da za &sve
-ButtonNo=&Ne
-ButtonNoToAll=N&e za sve
-ButtonFinish=&Zavri
-ButtonBrowse=&Izaberi...
-ButtonWizardBrowse=Iza&beri...
-ButtonNewFolder=&Napravi novi folder
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Izaberite jezik instalacije
-SelectLanguageLabel=Izaberite jezik koji elite koristiti pri instalaciji:
-
-; *** Common wizard text
-ClickNext=Kliknite na Dalje za nastavak ili Otkai za prekid instalacije.
-BeveledLabel=
-BrowseDialogTitle=Izaberite folder
-BrowseDialogLabel=Izaberite folder iz liste ispod, pa onda kliknite na U redu.
-NewFolderName=Novi folder
-
-; *** "Welcome" wizard page
-WelcomeLabel1=Dobro doli u instalaciju programa [name]
-WelcomeLabel2=Ovaj program e instalirati [name/ver] na va raunar.%n%nPreporuujemo da zatvorite sve druge programe prije nastavka i da privremeno onemoguite va antivirus i firewall.
-
-; *** "Password" wizard page
-WizardPassword=ifra
-PasswordLabel1=Instalacija je zatiena ifrom.
-PasswordLabel3=Upiite ifru i kliknite Dalje za nastavak. ifre su osjetljive na mala i velika slova.
-PasswordEditLabel=&ifra:
-IncorrectPassword=Upisali ste pogrenu ifru. Pokuajte ponovo.
-
-; *** "License Agreement" wizard page
-WizardLicense=Ugovor o koritenju
-LicenseLabel=Molimo vas da, prije nastavka, paljivo proitajte sljedee informacije.
-LicenseLabel3=Molimo vas da paljivo proitate Ugovor o koritenju. Morate prihvatiti uslove ugovora kako biste mogli nastaviti s instalacijom.
-LicenseAccepted=&Prihvatam ugovor
-LicenseNotAccepted=&Ne prihvatam ugovor
-
-; *** "Information" wizard pages
-WizardInfoBefore=Informacija
-InfoBeforeLabel=Molimo vas da, prije nastavka, proitate sljedee informacije.
-InfoBeforeClickLabel=Kada budete spremni nastaviti instalaciju, kliknite na Dalje.
-WizardInfoAfter=Informacija
-InfoAfterLabel=Molimo vas da, prije nastavka, proitate sljedee informacije.
-InfoAfterClickLabel=Kada budete spremni nastaviti instalaciju, kliknite na Dalje.
-
-; *** "User Information" wizard page
-WizardUserInfo=Informacije o korisniku
-UserInfoDesc=Upiite vae line informacije.
-UserInfoName=&Ime korisnika:
-UserInfoOrg=&Organizacija:
-UserInfoSerial=&Serijski broj:
-UserInfoNameRequired=Morate upisati ime.
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Odaberite odredini folder
-SelectDirDesc=Gdje elite da instalirate [name]?
-SelectDirLabel3=Instalacija e instalirati [name] u sljedei folder.
-SelectDirBrowseLabel=Za nastavak, kliknite Dalje. Ako elite izabrati drugi folder, kliknite Izaberi.
-DiskSpaceMBLabel=Ovaj program zahtjeva najmanje [mb] MB slobodnog prostora na disku.
-CannotInstallToNetworkDrive=Instalacija nije mogua na mrenom disku.
-CannotInstallToUNCPath=Instalacija nije mogua za UNC putanju.
-InvalidPath=Morate unijeti punu putanju zajedno sa slovom diska; npr:%n%nC:\APP%n%nili UNC putanju u obliku:%n%n\\server\share
-InvalidDrive=Disk ili UNC share koji ste odabrali ne postoji ili je nedostupan. Odaberite neki drugi.
-DiskSpaceWarningTitle=Nedovoljno prostora na disku
-DiskSpaceWarning=Instalacija zahtjeva bar %1 KB slobodnog prostora, a odabrani disk ima samo %2 KB na raspolaganju.%n%nDa li elite nastaviti?
-DirNameTooLong=Naziv ili putanja do foldera su predugi.
-InvalidDirName=Naziv foldera nije ispravan.
-BadDirName32=Naziv foldera ne smije sadravati niti jedan od sljedeih znakova:%n%n%1
-DirExistsTitle=Folder postoji
-DirExists=Folder:%n%n%1%n%nve postoji. elite li i dalje izvriti instalaciju u njega?
-DirDoesntExistTitle=Folder ne postoji
-DirDoesntExist=Folder:%n%n%1%n%nne postoji. elite li ga napraviti?
-
-; *** "Select Components" wizard page
-WizardSelectComponents=Odaberite komponente
-SelectComponentsDesc=Koje komponente elite instalirati?
-SelectComponentsLabel2=Odaberite komponente koje elite instalirati ili uklonite kvaicu pored komponenti koje ne elite. Kliknite Dalje kad budete spremni da nastavite.
-FullInstallation=Puna instalacija
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Kompaktna instalacija
-CustomInstallation=Instalacija prema elji
-NoUninstallWarningTitle=Komponente postoje
-NoUninstallWarning=Instalacija je detektovala da na vaem raunaru ve postoje sljedee komponente:%n%n%1%n%nAko ove komponente ne odaberete, nee doi do njihove deinstalacije.%n%nelite li ipak nastaviti?
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=Trenutni izbor zahtjeva bar [mb] MB prostora na disku.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Izaberite dodatne radnje
-SelectTasksDesc=Koje dodatne radnje elite da se izvre?
-SelectTasksLabel2=Izaberite radnje koje e se izvriti tokom instalacije programa [name], onda kliknite Dalje.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Izaberite programsku grupu
-SelectStartMenuFolderDesc=Gdje instalacija treba da napravi preice?
-SelectStartMenuFolderLabel3=Izaberite folder iz Start menija u koji elite da instalacija kreira preicu, a zatim kliknite na Dalje.
-SelectStartMenuFolderBrowseLabel=Za nastavak, kliknite Dalje. Ako elite da izaberete drugi folder, kliknite Izaberi.
-MustEnterGroupName=Morate unijeti ime programske grupe.
-GroupNameTooLong=Naziv foldera ili putanje je predug.
-InvalidGroupName=Naziv foldera nije ispravan.
-BadGroupName=Naziv foldera ne smije sadravati niti jedan od sljedeih znakova:%n%n%1
-NoProgramGroupCheck2=&Ne kreiraj programsku grupu
-
-; *** "Ready to Install" wizard page
-WizardReady=Spreman za instalaciju
-ReadyLabel1=Sada smo spremni za instalaciju [name] na va raunar.
-ReadyLabel2a=Kliknite na Instaliraj ako elite instalirati program ili na Nazad ako elite pregledati ili promjeniti postavke.
-ReadyLabel2b=Kliknite na Instaliraj ako elite nastaviti sa instalacijom programa.
-ReadyMemoUserInfo=Informacije o korisniku:
-ReadyMemoDir=Odredini folder:
-ReadyMemoType=Tip instalacije:
-ReadyMemoComponents=Odabrane komponente:
-ReadyMemoGroup=Programska grupa:
-ReadyMemoTasks=Dodatne radnje:
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=Pripremam instalaciju
-PreparingDesc=Pripreme za instalaciju [name] na va raunar.
-PreviousInstallNotCompleted=Instalacija/deinstalacija prethodnog programa nije zavrena. Morate restartovati va raunar kako bi zavrili tu instalaciju.%n%nNakon toga, ponovno pokrenite ovaj program kako bi dovrili instalaciju za [name].
-CannotContinue=Instalacija ne moe nastaviti. Molimo vas da kliknete na Odustani za izlaz.
-ApplicationsFound=Sljedee aplikacije koriste datoteke koje ova instalacija treba da nadogradi. Preporuujemo vam da omoguite instalaciji da automatski zatvori ove aplikacije.
-ApplicationsFound2=Sljedee aplikacije koriste datoteke koje ova instalacija treba da nadogradi. Preporuujemo vam da omoguite instalaciji da automatski zatvori ove aplikacije. Nakon to se sve zavri, bit e izvren pokuaj ponovnog pokretanja ovih aplikacija.
-CloseApplications=&Automatski zatvori aplikacije
-DontCloseApplications=&Ne zatvaraj aplikacije
-ErrorCloseApplications=Instalacija nije mogla automatski zatvoriti sve aplikacije. Prije nego nastavite, preporuujemo vam da zatvorite sve aplikacije koje koriste datoteke koje e ova instalacija trebati da aurira.
-
-; *** "Installing" wizard page
-WizardInstalling=Instaliram
-InstallingLabel=Priekajte dok se ne zavri instalacija programa [name] na va raunar.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=Zavravam instalaciju [name]
-FinishedLabelNoIcons=Instalacija programa [name] je zavrena.
-FinishedLabel=Instalacija programa [name] je zavrena. Program moete pokrenuti koristei instalirane ikone.
-ClickFinish=Kliknite na Zavri da biste izali iz instalacije.
-FinishedRestartLabel=Da biste instalaciju programa [name] zavrili, potrebno je restartovati raunar. elite li to sada uiniti?
-FinishedRestartMessage=Zavretak instalacije programa [name] zahtjeva restart vaeg raunara.%n%nelite li to sada uiniti?
-ShowReadmeCheck=Da, elim proitati README datoteku.
-YesRadio=&Da, restartuj raunar sada
-NoRadio=&Ne, restartovat u raunar kasnije
-; used for example as 'Run MyProg.exe'
-RunEntryExec=Pokreni %1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=Proitaj %1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=Instalacija treba sljedei disk
-SelectDiskLabel2=Molimo ubacite Disk %1 i kliknite U redu.%n%nAko se datoteke na ovom disku nalaze u drugom folderu a ne u onom prikazanom ispod, unesite ispravnu putanju ili kliknite na Izaberi.
-PathLabel=&Putanja:
-FileNotInDir2=Datoteka "%1" ne postoji u "%2". Molimo vas ubacite odgovorajui disk ili odaberete drugi folder.
-SelectDirectoryLabel=Molimo odaberite lokaciju sljedeeg diska.
-
-; *** Installation phase messages
-SetupAborted=Instalacija nije zavrena.%n%nMolimo vas da rijeite problem i opet pokrenete instalaciju.
-EntryAbortRetryIgnore=Kliknite na Retry da pokuate opet, Ignore da nastavite, ili Abort da prekinete instalaciju.
-
-; *** Installation status messages
-StatusClosingApplications=Zatvaram aplikacije...
-StatusCreateDirs=Kreiram foldere...
-StatusExtractFiles=Raspakujem datoteke...
-StatusCreateIcons=Kreiram preice...
-StatusCreateIniEntries=Kreiram INI datoteke...
-StatusCreateRegistryEntries=Kreiram podatke za registracijsku bazu...
-StatusRegisterFiles=Registrujem datoteke...
-StatusSavingUninstall=Snimam deinstalacijske informacije...
-StatusRunProgram=Zavravam instalaciju...
-StatusRestartingApplications=Restartujem aplikaciju...
-StatusRollback=Ponitavam promjene...
-
-; *** Misc. errors
-ErrorInternal2=Interna greka: %1
-ErrorFunctionFailedNoCode=%1 nije uspjelo
-ErrorFunctionFailed=%1 nije uspjelo; kod %2
-ErrorFunctionFailedWithMessage=%1 nije uspjelo; kod %2.%n%3
-ErrorExecutingProgram=Ne mogu pokrenuti datoteku:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=Greka pri otvaranju registracijskog kljua:%n%1\%2
-ErrorRegCreateKey=Greka pri kreiranju registracijskog kljua:%n%1\%2
-ErrorRegWriteKey=Greka pri zapisivanju registracijskog kljua:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=Greka pri kreiranju INI podataka u datoteci "%1".
-
-; *** File copying errors
-FileAbortRetryIgnore=Kliknite Retry da pokuate ponovo, Ignore da preskoite ovu datoteku (nije preporueno), ili Abort da prekinete instalaciju.
-FileAbortRetryIgnore2=Kliknite Retry da pokuate ponovo, Ignore da preskoite ovu datoteku (nije preporueno), ili Abort da prekinete instalaciju.
-SourceIsCorrupted=Izvorna datoteka je oteena
-SourceDoesntExist=Izvorna datoteka "%1" ne postoji
-ExistingFileReadOnly=Postojea datoteka je oznaena kao samo za itanje.%n%nKliknite Retry da uklonite ovu oznaku i pokuate ponovo, Ignore da preskoite ovu datoteku, ili Abort da prekinete instalaciju.
-ErrorReadingExistingDest=Dolo je do greke prilikom pokuaja itanja postojee datoteke:
-FileExists=Datoteka ve postoji.%n%nelite li pisati preko nje?
-ExistingFileNewer=Postojea datoteka je novija od one koju pokuavate instalirati. Preporuujemo vam da zadrite postojeu datoteku.%n%nelite li zadrati postojeu datoteku?
-ErrorChangingAttr=Pojavila se greka prilikom pokuaja promjene atributa postojee datoteke:
-ErrorCreatingTemp=Pojavila se greka prilikom pokuaja kreiranja datoteke u odredinom folderu:
-ErrorReadingSource=Pojavila se greka prilikom pokuaja itanja izvorne datoteke:
-ErrorCopying=Pojavila se greka prilikom pokuaja kopiranja datoteke:
-ErrorReplacingExistingFile=Pojavila se greka prilikom pokuaja zamjene datoteke:
-ErrorRestartReplace=Ponovno pokretanje i zamjena nije uspjela:
-ErrorRenamingTemp=Pojavila se greka prilikom pokuaja preimenovanja datoteke u odredinom folderu:
-ErrorRegisterServer=Ne mogu registrovati DLL/OCX: %1
-ErrorRegSvr32Failed=RegSvr32 nije ispravno izvren, kod na kraju izvravanja %1
-ErrorRegisterTypeLib=Ne mogu registrovati tip biblioteke: %1
-
-; *** Post-installation errors
-ErrorOpeningReadme=Pojavila se greka prilikom pokuaja otvaranja README datoteke.
-ErrorRestartingComputer=Instalacija ne moe restartovati va raunar. Molimo vas da to uinite runo.
-
-; *** Uninstaller messages
-UninstallNotFound=Datoteka "%1" ne postoji. Deinstalacija prekinuta.
-UninstallOpenError=Datoteka "%1" se ne moe otvoriti. Deinstalacija nije mogua
-UninstallUnsupportedVer=Deinstalacijska log datoteka "%1" je u formatu koji nije prepoznat od ove verzije deinstalera. Nije mogua deinstalacija
-UninstallUnknownEntry=Nepoznat zapis (%1) je pronadjen u deinstalacijskoj log datoteci
-ConfirmUninstall=Da li ste sigurni da elite ukloniti %1 i sve njegove komponente?
-UninstallOnlyOnWin64=Ovaj program se moe deinstalirati samo na 64-bitnom Windowsu.
-OnlyAdminCanUninstall=Ova instalacija moe biti uklonjena samo od korisnika sa administratorskim privilegijama.
-UninstallStatusLabel=Molimo priekajte dok %1 ne bude uklonjen s vaeg raunara.
-UninstalledAll=Program %1 je uspjeno uklonjen sa vaeg raunara.
-UninstalledMost=Deinstalacija programa %1 je zavrena.%n%nNeke elemente nije bilo mogue ukloniti. Molimo vas da to uinite runo.
-UninstalledAndNeedsRestart=Da bi zavrili deinstalaciju %1, Va raunar morate restartati%n%nelite li to uiniti sada?
-UninstallDataCorrupted="%1" datoteka je oteena. Deinstalacija nije mogua.
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Ukloni dijeljenu datoteku
-ConfirmDeleteSharedFile2=Sistem smatra da sljedee dijeljene datoteke ne koristi nijedan drugi program. elite li ukloniti te dijeljene datoteke?%n%nAko neki programi i dalje koriste ove datoteke, a one se obriu, ti programi nee raditi ispravno. Ako niste sigurni, odaberite Ne. Ostavljanje datoteka nee uzrokovati tetu vaem sistemu.
-SharedFileNameLabel=Datoteka:
-SharedFileLocationLabel=Putanja:
-WizardUninstalling=Status deinstalacije
-StatusUninstalling=Deinstaliram %1...
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=Instaliram %1.
-ShutdownBlockReasonUninstallingApp=Deinstaliram %1.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1 verzija %2
-AdditionalIcons=Dodatne ikone:
-CreateDesktopIcon=Kreiraj &desktop ikonu
-CreateQuickLaunchIcon=Kreiraj ikonu za &brzo pokretanje
-ProgramOnTheWeb=%1 na webu
-UninstallProgram=Deinstaliraj %1
-LaunchProgram=Pokreni %1
-AssocFileExtension=&Asociraj %1 sa %2 ekstenzijom
-AssocingFileExtension=Asociram %1 sa %2 ekstenzijom...
-AutoStartProgramGroupDescription=Pokretanje:
-AutoStartProgram=Automatski pokrei %1
-AddonHostProgramNotFound=%1 nije mogao biti pronaen u folderu koji ste odabrali.%n%nDa li i dalje elite nastaviti s ovom akcijom?
diff --git a/Greenshot/releases/innosetup/Languages/Esperanto.isl b/Greenshot/releases/innosetup/Languages/Esperanto.isl
deleted file mode 100644
index 5896c824c..000000000
--- a/Greenshot/releases/innosetup/Languages/Esperanto.isl
+++ /dev/null
@@ -1,342 +0,0 @@
-; *** Inno Setup version 5.5.3+ Esperanto messages ***
-;
-; Author: Alexander Gritchin (E-mail - alexgrimo@mail.ru)
-;
-; Au`toro: Alexander Gritc`in (E-mail - alexgrimo@mail.ru)
-; Versio del traduko - 15.06.08
-;
-;
-;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Esperanto
-LanguageID=$0
-LanguageCodePage=0
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
-
-
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=Instalado
-SetupWindowTitle=Instalado de - %1
-UninstallAppTitle=Forigado
-UninstallAppFullTitle=Forigado de %1
-
-; *** Misc. common
-InformationTitle=Informacio
-ConfirmTitle=Konfirmado
-ErrorTitle=Eraro
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=Nun estos instalado de %1. C`u vi volas kontinui?
-LdrCannotCreateTemp=Nepoveble estas krei tempan dosieron. La Majstro estas s`topita
-LdrCannotExecTemp=Nepoveble estas plenumi la dosieron en tempa dosierujo. La Majstro estas s`topita
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%nEraro %2: %3
-SetupFileMissing=La dosiero %1 estas preterpasita el instala dosierujo.Bonvolu korekti problemon au` ricevu novan kopion de programo.
-SetupFileCorrupt=Instalaj dosieroj estas kriplitaj. Bonvolu ricevu novan kopion de programo.
-SetupFileCorruptOrWrongVer=Instalaj dosieroj estas kriplitaj, au` ne komparablaj kun tia versio del Majstro. Bonvolu korekti problemon au` ricevu novan kopion de programo.
-InvalidParameter=Malg`usta parametro estis en komandlinio:%n%n%1
-SetupAlreadyRunning=La Majstro jam funkcias.
-WindowsVersionNotSupported=C`i tia programo ne povas subteni la version de Vindoso en via komputilo.
-WindowsServicePackRequired=Por c`i tia programo bezonas %1 Service Pack %2 au` pli olda.
-NotOnThisPlatform=C`i tia programo ne funkcios en %1.
-OnlyOnThisPlatform=C`i tia programo devas funkcii en %1.
-OnlyOnTheseArchitectures=C`i tia programo nur povas esti instalita en version de Vindoso por sekvaj procesoraj arkitekturoj:%n%n%1
-MissingWOW64APIs=La versio de Vindoso kian vi lanc`is, ne havas posedon bezonatan por ke Majstro plenumis 64-bit instaladon. Por korekti tian problemon bonvolu instali Service Pack %1.
-WinVersionTooLowError=Por c`i tia programo bezonas %1 version %2 au` pli olda.
-WinVersionTooHighError=C`i tia programo ne povas esti instalita en %1 versio %2 au` pli olda.
-AdminPrivilegesRequired=Vi devas eniri kiel administranto kiam instalas c`i tian programon.
-PowerUserPrivilegesRequired=Vi devas eniri kiel administranto au` kiel membro de grupo de Posedaj Uzantoj kiam instalas c`i tia programo.
-SetupAppRunningError=La Majstro difinis ke %1 nun funkcias.%n%nBonvolu s`topi g`in, kaj poste kliku Jes por kontinui, au` S`topi por eliri.
-UninstallAppRunningError=Forigados difinis ke %1 nun funkcias.%n%nBonvolu s`topi g`in, kaj poste kliku Jes por kontinui, au` S`topi por eliri.
-
-; *** Misc. errors
-ErrorCreatingDir=La Majstro ne povas krei dosierujon "%1"
-ErrorTooManyFilesInDir=Estas nepoveble krei dosieron en dosierujo "%1" pro tio ke g`i havas tro multe da dosierojn
-
-; *** Setup common messages
-ExitSetupTitle=S`topo Majstron
-ExitSetupMessage=La instalado ne estas plena. Se vi eliros nun, la programo ne estos instalita.%n%nPor vi bezonas s`alti Majstron denove en alia tempo por plenumi instaladon.%n%nC`u fini la Majstron?
-AboutSetupMenuItem=&Pri instalo...
-AboutSetupTitle=Pri instalo
-AboutSetupMessage=%1 version %2%n%3%n%n%1 hejma pag`o:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< &Reen
-ButtonNext=&Antau`en >
-ButtonInstall=&Instali
-ButtonOK=Jes
-ButtonCancel=S`topi
-ButtonYes=&Jes
-ButtonYesToAll=Jes por &c`iaj
-ButtonNo=&Ne
-ButtonNoToAll=Ne por c`iaj
-ButtonFinish=&Fino
-ButtonBrowse=&Elekto...
-ButtonWizardBrowse=Elekto...
-ButtonNewFolder=&Fari la novan dosierujon
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Elektu la lingvon
-SelectLanguageLabel=Elektu la lingvon por uzo dum instalado:
-
-; *** Common wizard text
-ClickNext=Kliku Antau`en por kontinui, au` S`topi por eliri Instaladon.
-BeveledLabel=
-BrowseDialogTitle=Elekto de dosierujo
-BrowseDialogLabel=Elektu la dosierujon en listo malalte, kaj kliku Jes.
-NewFolderName=Nova dosierujo
-
-; *** "Welcome" wizard page
-WelcomeLabel1=Bonvenon al Majstro de instalado de [name]
-WelcomeLabel2=Nun komencos instalado de [name/ver] en via komputilo.%n%nEstas rekomendite ke vi s`topu c`iajn viajn programojn antau` komenco.
-
-; *** "Password" wizard page
-WizardPassword=Pasvorto
-PasswordLabel1=C`i tia instalado postulas pasvorton.
-PasswordLabel3=Bonvolu tajpi pasvorton kaj poste kliku Antau`en por kontinui. La pasvortoj estas tajp sentemaj.
-PasswordEditLabel=&Pasvorto:
-IncorrectPassword=La pasvorto, kian vi tajpis estas malg`usta. Bonvolu provi denove.
-
-; *** "License Agreement" wizard page
-WizardLicense=Licenza konvenio
-LicenseLabel=Bonvolu legi sekvan gravan informacion antau` komenci.
-LicenseLabel3=Bonvolu legi sekvan Licenzan Konvenion. Vi devas akcepti dotaj`oj de tia konvenio antau` ke kontinui instaladon.
-LicenseAccepted=Mi akceptas konvenion
-LicenseNotAccepted=Mi ne akceptas konvenion
-
-; *** "Information" wizard pages
-WizardInfoBefore=Informacio
-InfoBeforeLabel=Bonvolu legi sekvan gravan informacion antau` komenci.
-InfoBeforeClickLabel=Kiam vi estas preta por kontinui per instalo, kliku Antau`en.
-WizardInfoAfter=Informacio
-InfoAfterLabel=Bonvolu legi sekvan gravan informacion antau` komenci.
-InfoAfterClickLabel=Kiam vi estas preta por kontinui per instalo, kliku Antau`en.
-
-; *** "User Information" wizard page
-WizardUserInfo= Informacio pri uzanto
-UserInfoDesc=Bonvolu skribi vian informacion.
-UserInfoName=Nomo de uzanto:
-UserInfoOrg=&Organizacio:
-UserInfoSerial=&Seria Numero:
-UserInfoNameRequired=Vi devas skribi nomon de uzanto.
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Elektu Destinan Locon
-SelectDirDesc=Kie devos [name] esti instalita?
-SelectDirLabel3=La Majstro instalos [name] en sekvan dosierujon.
-SelectDirBrowseLabel=Por kontinui, kliku Antau`en. Se vi volas elekti diversan dosierujon, kliku Elekto.
-DiskSpaceMBLabel=Almenau` [mb] MB de neta diska spaco bezonas.
-CannotInstallToNetworkDrive=Majstro ne povas instali lokan diskon.
-CannotInstallToUNCPath=Majstro ne povas instali lau` UNC vojo.
-InvalidPath=Vi devas skribi plenan vojon de diska litero; por ekzamplo:%n%nC:\APP%n%sed ne UNC vojo lau` formo:%n%n\\server\share
-InvalidDrive=Disko au` UNC kian vi elektis ne ekzistas au` ne estas difinita. Bonvolu elekti denove.
-DiskSpaceWarningTitle=Mankas Diskan Spacon
-DiskSpaceWarning=Por instalo bezonas almenau` %1 KB de neta spaco por instalado, sed electita disko havas nur %2 KB.%n%nC`u vi volas kontinui per c`iokaze?
-DirNameTooLong=La nomo de dosierujo au` vojo estas tro longa.
-InvalidDirName=La nomo de dosierujo estas malg`usta.
-BadDirName32=La nomoj de dosierujoj ne povas havi de sekvaj karakteroj:%n%n%1
-DirExistsTitle=Dosierujo ekzistas
-DirExists=La dosierujo:%n%n%1%n%njam ekzistas. C`u vi volas instali en g`i c`iokaze?
-DirDoesntExistTitle=La dosierujo ne ekzistas
-DirDoesntExist=La dosierujo:%n%n%1%n%nne ekzistas. C`u vi volas por ke tia dosierujo estos farita?
-
-; *** "Select Components" wizard page
-WizardSelectComponents=Elektu komponentoj
-SelectComponentsDesc=Kiaj komponentoj devas esti instalitaj?
-SelectComponentsLabel2=Elektu komponentoj kiaj vi volas instali; forigu la komponentojn kiaj vi ne volas instali. Kliku Antau`en kiam vi estas preta por kontinui.
-FullInstallation=Tuta instalado
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Kompakta instalado
-CustomInstallation=Kutima instalado
-NoUninstallWarningTitle=Komponentoj ekzistas
-NoUninstallWarning=La Majstro difinis ke sekvaj komponentoj jam estas instalitaj en via komputilo:%n%n%1%n%nNuligo de elekto de tiaj komponentoj ne forigos g`in.%n%nC`u vi volas kontinui c`iokaze?
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=Nuna elekto bezonas almenau` [mb] MB de diska spaco.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Elektu aldonaj taskoj
-SelectTasksDesc=Kiaj aldonaj taskoj devos esti montrotaj?
-SelectTasksLabel2=Elektu aldonaj taskoj kiaj bezonas por ke Majstro montros dum instalado [name], kaj poste kliku Antau`en.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Elektu dosierujon de starta menuo
-SelectStartMenuFolderDesc=Kie Majstro devas krei tujklavon de programo?
-SelectStartMenuFolderLabel3=La Majstro kreos tujklavojn de programo en sekva dosierujo de starta menuo.
-SelectStartMenuFolderBrowseLabel=Por kontinui, kliku Antau`en. Se vi volas elekti alian dosierujon, kliku Elekto.
-MustEnterGroupName=Vi devas skribi la nomo de dosierujo.
-GroupNameTooLong=La nomo de dosierujo au` vojo estas tro longa.
-InvalidGroupName=La nomo de dosierujo estas malg`usta.
-BadGroupName=La nomoj de dosierujoj ne povas havi de sekvaj karakteroj:%n%n%1
-NoProgramGroupCheck2=Ne krei dosierujon de starta menuo
-
-; *** "Ready to Install" wizard page
-WizardReady=Preparado por Instalo
-ReadyLabel1=Nun c`io estas preparita por komenci instaladon [name] en via komputilo.
-ReadyLabel2a=Kliku Instali por kontinui instaladon, au`kliku Reen se vi volas rigardi au` s`ang`i ajnajn statojn.
-ReadyLabel2b=Kliku Instali por kontinui instaladon.
-ReadyMemoUserInfo=Informacio de uzanto:
-ReadyMemoDir=Destina loko:
-ReadyMemoType=Majstra tipo:
-ReadyMemoComponents=Elektitaj komponentoj:
-ReadyMemoGroup=La dosierujo de starta menuo:
-ReadyMemoTasks=Aldonaj taskoj:
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=Preparado por Instalo
-PreparingDesc=Majstro estas preparata por instalo [name] en via komputilo.
-PreviousInstallNotCompleted=Instalado/Forigo de antau`a programo ne estas plena. Por vi bezonas relanc`i vian komputilon por plenigi tian instaladon.%n%nPost relanc`o de via komputilo, s`altu Majstron denove por finigi instaladon de [name].
-CannotContinue=La Majstro ne povas kontinui. Bonvolu kliki Fino por eliri.
-ApplicationsFound=Sekvaj aplikaj`oj uzas dosierojn kiajn bezonas renovigi per Instalado. Estas rekomendite ke vi permesu al Majstro automate fermi tiajn aplikaj`ojn.
-ApplicationsFound2=Sekvaj aplikaj`oj uzas dosierojn kiajn bezonas renovigi per Instalado. Estas rekomendite ke vi permesu al Majstro automate fermi tiajn aplikaj`ojn. Poste de instalado Majstro provos relanc`i aplikaj`ojn.
-CloseApplications=&Automate fermi aplikaj`ojn
-DontCloseApplications=Ne fermu aplikaj`ojn
-ErrorCloseApplications=Majstro estis nepovebla au`tomate fermi c`iajn aplikaj`ojn. Estas rekomendite ke vi fermu c`iajn aplikaj`ojn, uzantaj dosierojn, kiaj estas bezonatajn por renovigo per la Majstro antau` kontinui.
-
-; *** "Installing" wizard page
-WizardInstalling=Instalado
-InstallingLabel=Bonvolu atenti dum Majstro instalas [name] en via komputilo.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel= Fino de instalado
-FinishedLabelNoIcons=La Majstro finigis instaladon [name] en via komputilo.
-FinishedLabel=La Majstro finigis instaladon [name] en via komputilo. La aplikaj`o povos esti lanc`ita per elekto de instalaj ikonoj.
-ClickFinish= Kliku Fino por finigi instaladon.
-FinishedRestartLabel=Por plenumigi instaladon de [name], Majstro devas relanc`i vian komputilon. C`u vi volas relanc`i nun?
-FinishedRestartMessage=Por plenumigi instaladon de [name], Majstro devas relanc`i vian komputilon.%n%nC`u vi volas relanc`i nun?
-ShowReadmeCheck=Jes, mi volas rigardi dosieron README
-YesRadio=&Jes, relanc`u komputilon nun
-NoRadio=&Ne, mi volas relanc`i komputilon poste
-; used for example as 'Run MyProg.exe'
-RunEntryExec=S`altu %1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=Rigardi %1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=La Majstro postulas sekvan diskon
-SelectDiskLabel2=Bonvolu inserti Diskon %1 kaj kliku Jes.%n%nSe dosieroj en tia disko povos esti diversaj de prezentitaj malalte, enskribu korektan vojon au` kliku Elekto.
-PathLabel=&Vojo:
-FileNotInDir2=Dosieron "%1" estas nepoveble lokigi en "%2". Bonvolu inserti korectan diskon au` elektu alian dosierujon.
-SelectDirectoryLabel=Bonvolu difini lokon de alia disko.
-
-; *** Installation phase messages
-SetupAborted=Instalado ne estis plena.%n%nBonvolu korekti problemon kaj lanc`u Majstron denove.
-EntryAbortRetryIgnore=Kliku Reen por provi ankorau`, Ignori por fari c`iokaze, au` S`topi por finigi instaladon.
-
-; *** Installation status messages
-StatusClosingApplications=Fermado de aplikaj`oj...
-StatusCreateDirs=Kreado de dosierujojn...
-StatusExtractFiles=Ekstraktado de dosierojn...
-StatusCreateIcons=Kreado de tujklavojn...
-StatusCreateIniEntries=Kreado de INI dosierojn...
-StatusCreateRegistryEntries=Kreado de registraj pointoj...
-StatusRegisterFiles=Registrado de dosierojn...
-StatusSavingUninstall=Konservas informacio por forigo...
-StatusRunProgram=Finig`as instalado...
-StatusRestartingApplications=Relanc`o de aplikaj`oj...
-StatusRollback=Renovigo de s`ang`oj...
-
-; *** Misc. errors
-ErrorInternal2=Interna eraro: %1
-ErrorFunctionFailedNoCode=%1 estas kripligita
-ErrorFunctionFailed=%1 estas kripligita; kodnomo %2
-ErrorFunctionFailedWithMessage=%1 estas kripligita; kodnomo %2.%n%3
-ErrorExecutingProgram=Estas nepoveble plenumi dosieron:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=Eraro dum malfermo de registra s`losilo:%n%1\%2
-ErrorRegCreateKey=Eraro dum kreado de registra s`losilo:%n%1\%2
-ErrorRegWriteKey=Eraro dum skribado en registra s`losilo:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=Eraro dum kreado de INI pointo en dosiero "%1".
-
-; *** File copying errors
-FileAbortRetryIgnore=Kliku Reen por provi denove, Ignori por lasi tian dosieron (ne estas rekomendite), au` S`topi por finigi instaladon.
-FileAbortRetryIgnore2=Kliku Reen por provi denove, Ignori por plenumi c`iokaze (ne estas rekomendite), au` S`topi por finigi instaladon.
-SourceIsCorrupted=La fonta dosiero estas kripligita
-SourceDoesntExist=La fonta dosiero "%1" ne ekzistas
-ExistingFileReadOnly=Ekzista dosiero estas markita kiel nurlega.%n%nKliku Reen por forigi la nurlegan atributon kaj provu reen, Ignori por lasi tian dosieron, au` S`topi por fini instaladon.
-ErrorReadingExistingDest=Eraro aperis dum legado de ekzista dosiero:
-FileExists=La dosiero jam ekzistas.%n%nC`u vi volas ke Majstro reskribu g`in?
-ExistingFileNewer=Ekzista dosiero estas pli nova ol Majstro provas instali. Estas rekomendita ke vi konservu ekzistan dosieron.%n%nC`u vi volas konservi ekzistan dosieron?
-ErrorChangingAttr=Eraro aperis dum provo c`ang`i atributoj de ekzista dosiero:
-ErrorCreatingTemp=Eraro aperis dum kreado dosieron en destina dosierujo:
-ErrorReadingSource=Eraro aperis dum legado de dosiero:
-ErrorCopying=Eraro aperis dum kopiado de dosiero:
-ErrorReplacingExistingFile=Eraro aperis dum relokig`o de ekzistan dosieron:
-ErrorRestartReplace=Relanc`o/Relokig`o estas kripligita:
-ErrorRenamingTemp=Eraro aperis dum renomig`o del dosiero en destina dosierujo:
-ErrorRegisterServer=Estas nepoveble registri DLL/OC`: %1
-ErrorRegSvr32Failed=RegSvr32estas kripligita kun elira codo %1
-ErrorRegisterTypeLib=Estas nepoveble registri bibliotekon de tipo : %1
-
-; *** Post-installation errors
-ErrorOpeningReadme=Eraro aperis dum malfermado de README dosiero.
-ErrorRestartingComputer=Majstro ne povis relanc`i komputilo. Bonvolu fari tion permane.
-
-; *** Uninstaller messages
-UninstallNotFound=Dosiero "%1" ne ekzistas. Estas nepoveble forigi.
-UninstallOpenError=Dosieron "%1" nepoveble estas malfermi. Estas nepoveble forigi
-UninstallUnsupportedVer=\Foriga protokolo "%1" estas en nekonata formato per c`i tia versio de forigprogramo. Estas nepoveble forigi
-UninstallUnknownEntry=Ekzistas nekonata pointo (%1) en foriga protokolo
-ConfirmUninstall=C`u vi reale volas tute forigi %1 kaj c`iaj komponentoj de g`i?
-UninstallOnlyOnWin64=C`i tian instaladon povos forigi nur en 64-bit Vindoso.
-OnlyAdminCanUninstall=C`i tian instaladon povos forigi nur uzanto kun administrantaj rajtoj.
-UninstallStatusLabel=Bonvolu atendi dum %1 forig`os de via komputilo.
-UninstalledAll=%1 estis sukcese forigita de via komputilo.
-UninstalledMost=Forigo de %1 estas plena.%n%nKelkaj elementoj ne estis forigitaj. G`in poveble estas forigi permane.
-UninstalledAndNeedsRestart=Por plenumi forigadon de %1, via komputilo devas esti relanc`ita.%n%nC`u vi volas relanc`i nun?
-UninstallDataCorrupted="%1" dosiero estas kriplita. Estas nepoveble forigi
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Forigi komune uzatan dosieron?
-ConfirmDeleteSharedFile2=La sistemo indikas ke sekva komune uzata dosiero jam ne estas uzata per neniel aplikaj`oj. C`u vi volas forigi c`i tian dosieron?%n%nSe ajna programo jam uzas tian dosieron, dum forigo g`i povos malg`uste funkcii. Se vi ne estas certa elektu Ne. Restante en via sistemo la dosiero ne damag`os g`in.
-SharedFileNameLabel=nomo de dosiero:
-SharedFileLocationLabel=Loko:
-WizardUninstalling=Stato de forigo
-StatusUninstalling=Forigado %1...
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=Instalado %1.
-ShutdownBlockReasonUninstallingApp=Forigado %1.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1 versio %2
-AdditionalIcons=Aldonaj ikonoj:
-CreateDesktopIcon=Krei &Labortablan ikonon
-CreateQuickLaunchIcon=Krei &Rapida lanc`o ikonon
-ProgramOnTheWeb=%1 en Reto
-UninstallProgram=Rorig`ado %1
-LaunchProgram=Lanc`o %1
-AssocFileExtension=&Asociigi %1 kun %2 dosieraj finaj`oj
-AssocingFileExtension=Asociig`as %1 kun %2 dosiera finaj`o...
-AutoStartProgramGroupDescription=Lanc`o:
-AutoStartProgram=Automate s`alti %1
-AddonHostProgramNotFound=%1 nepoveble estas loki en dosierujo kian vi elektis.%n%nC`u vi volas kontinui c`iokaze?
diff --git a/Greenshot/releases/innosetup/Languages/Farsi.isl b/Greenshot/releases/innosetup/Languages/Farsi.isl
deleted file mode 100644
index 232a7ce3b..000000000
--- a/Greenshot/releases/innosetup/Languages/Farsi.isl
+++ /dev/null
@@ -1,337 +0,0 @@
-; *** Inno Setup version 5.5.3+ Farsi messages ***
-;Translator:Hessam Mohamadi
-;Email:hessam55@hotmail.com
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
-;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Farsi
-LanguageID=$0429
-LanguageCodePage=1256
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-DialogFontName=Tahoma
-DialogFontSize=8
-WelcomeFontName=Tahoma
-WelcomeFontSize=11
-TitleFontName=Tahoma
-TitleFontSize=28
-CopyrightFontName=Tahoma
-CopyrightFontSize=8
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=
-SetupWindowTitle=%1 -
-UninstallAppTitle=
-UninstallAppFullTitle=%1
-
-; *** Misc. common
-InformationTitle=
-ConfirmTitle=
-ErrorTitle=
-
-; *** SetupLdr messages
-SetupLdrStartupMessage= . Ͽ %1
-LdrCannotCreateTemp= .
-LdrCannotExecTemp= .
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%n %2: %3
-SetupFileMissing= . Ԙ %1
-SetupFileCorrupt= ϡ
-SetupFileCorruptOrWrongVer= ϡ . Ԙ
-InvalidParameter= :%n%n%1
-SetupAlreadyRunning=
-WindowsVersionNotSupported= ʡ
-WindowsServicePackRequired= %1 %2
-NotOnThisPlatform= %1
-OnlyOnThisPlatform= %1
-OnlyOnTheseArchitectures= Ԑ ʡ :%n%n%1
-MissingWOW64APIs= %1 ǘ ʡ Ԙ
-WinVersionTooLowError= %1 %2
-WinVersionTooHighError= %1 %2
-AdminPrivilegesRequired=
-PowerUserPrivilegesRequired=
-SetupAppRunningError=ǘ %1 %n%n Ӂ
-UninstallAppRunningError=ǘ %1 %n%n Ӂ
-
-; *** Misc. errors
-ErrorCreatingDir= "%1"
-ErrorTooManyFilesInDir= "%1"
-
-; *** Setup common messages
-ExitSetupTitle=
-ExitSetupMessage= . ǐ ǘ ϡ %n%n . Ͽ
-AboutSetupMenuItem=... &
-AboutSetupTitle=
-AboutSetupMessage=%2 %1%n%3%n%n%1 :%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< &
-ButtonNext=& >
-ButtonInstall=&
-ButtonOK=&
-ButtonCancel=&
-ButtonYes=&
-ButtonYesToAll= &
-ButtonNo=&
-ButtonNoToAll= &
-ButtonFinish=&
-ButtonBrowse=&
-ButtonWizardBrowse=&
-ButtonNewFolder=
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=
-SelectLanguageLabel= :
-
-; *** Common wizard text
-ClickNext=
-BeveledLabel=
-BrowseDialogTitle=
-BrowseDialogLabel= ϡ Ӂ
-NewFolderName=
-
-; *** "Welcome" wizard page
-WelcomeLabel1= [name]
-WelcomeLabel2= [name/ver] %n%n ϡ
-
-; *** "Password" wizard page
-WizardPassword=
-PasswordLabel1=
-PasswordLabel3= ϡӁ . 捘 ѐ
-PasswordEditLabel=:
-IncorrectPassword= .
-
-; *** "License Agreement" wizard page
-WizardLicense=
-LicenseLabel=
-LicenseLabel3= . ȁ
-LicenseAccepted= &흁
-LicenseNotAccepted= &흁
-
-; *** "Information" wizard pages
-WizardInfoBefore=
-InfoBeforeLabel=
-InfoBeforeClickLabel= ϡ
-WizardInfoAfter=
-InfoAfterLabel=
-InfoAfterClickLabel= ϡ
-
-; *** "User Information" wizard page
-WizardUserInfo=
-UserInfoDesc=
-UserInfoName= &:
-UserInfoOrg=&:
-UserInfoSerial= &:
-UserInfoNameRequired=
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=
-SelectDirDesc= Ͽ [name]
-SelectDirLabel3= [name]
-SelectDirBrowseLabel= . ʡ
-DiskSpaceMBLabel=ʝ [mb]
-CannotInstallToNetworkDrive= Ș
-CannotInstallToUNCPath=
-InvalidPath= ϡ :%n%nC:\APP%n%n :%n%n\\server\share
-InvalidDrive= ǘ ϡ .
-DiskSpaceWarningTitle=
-DiskSpaceWarning= %1 ʡ %2 .%n%n Ͽ
-DirNameTooLong=
-InvalidDirName=
-BadDirName32= ǘ Ȑ:%n%n%1
-DirExistsTitle=
-DirExists= :%n%n%1%n%nǘ . ϡ Ͽ
-DirDoesntExistTitle=
-DirDoesntExist= :%n%n%1%n%n . Ͽ
-
-; *** "Select Components" wizard page
-WizardSelectComponents=
-SelectComponentsDesc= Ͽ
-SelectComponentsLabel2= ȡ ϡ . ϡ
-FullInstallation=
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=
-CustomInstallation=
-NoUninstallWarningTitle=
-NoUninstallWarning= ǘ :%n%n%1%n%n .%n%n Ͽ
-ComponentSize1=%1
-ComponentSize2=%1
-ComponentsDiskSpaceMBLabel= ʝ [mb] Ә
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=
-SelectTasksDesc= Ͽ
-SelectTasksLabel2= ȡӁ [name]
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=
-SelectStartMenuFolderDesc= Ͽ
-SelectStartMenuFolderLabel3= ҡ
-SelectStartMenuFolderBrowseLabel= . ʡ
-MustEnterGroupName=
-GroupNameTooLong=
-InvalidGroupName=
-BadGroupName= ǘ :%n%n%1
-NoProgramGroupCheck2=
-
-; *** "Ready to Install" wizard page
-WizardReady=
-ReadyLabel1= [name] ҡ
-ReadyLabel2a=
-ReadyLabel2b= ȡ
-ReadyMemoUserInfo= :
-ReadyMemoDir= :
-ReadyMemoType= :
-ReadyMemoComponents= :
-ReadyMemoGroup= :
-ReadyMemoTasks= :
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=
-PreparingDesc= [name]
-PreviousInstallNotCompleted= ȡ %n%n [name]
-CannotContinue= ϡ
-ApplicationsFound= . Ϙ
-ApplicationsFound2= . Ϙ . ȡ .
-CloseApplications=& Ϙ
-DontCloseApplications=&
-ErrorCloseApplications= Ϙ .
-
-; *** "Installing" wizard page
-WizardInstalling=
-InstallingLabel= [name]
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel= [name]
-FinishedLabelNoIcons= [name]
-FinishedLabel= [name]
-ClickFinish=
-FinishedRestartLabel= . Ͽ [name]
-FinishedRestartMessage= [name] %n%n Ͽ
-ShowReadmeCheck=
-YesRadio=
-NoRadio=ѡ
-; used for example as 'Run MyProg.exe'
-RunEntryExec=%1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=%1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle= Ә
-SelectDiskLabel2= %1 Ә%n%nǐ Ә ϡ
-PathLabel=&:
-FileNotInDir2= "%1" "%2" . Ә
-SelectDirectoryLabel= Ә
-
-; *** Installation phase messages
-SetupAborted= %n%n Ԙ
-EntryAbortRetryIgnore= ʡ
-
-; *** Installation status messages
-StatusClosingApplications=...
-StatusCreateDirs=...
-StatusExtractFiles=...
-StatusCreateIcons=...
-StatusCreateIniEntries=...INI
-StatusCreateRegistryEntries=..
-StatusRegisterFiles=...
-StatusSavingUninstall=...
-StatusRunProgram=...
-StatusRestartingApplications=...
-StatusRollback=... Ґ
-
-; *** Misc. errors
-ErrorInternal2= : %1
-ErrorFunctionFailedNoCode=%1
-ErrorFunctionFailed=%1 ϡ %2
-ErrorFunctionFailedWithMessage=%1 ϡ %2.%n%3
-ErrorExecutingProgram= :%n%1
-
-; *** Registry errors
-ErrorRegOpenKey= Ҙ :%n%1\%2
-ErrorRegCreateKey= :%n%1\%2
-ErrorRegWriteKey= :%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=" "%1
-
-; *** File copying errors
-FileAbortRetryIgnore= ( )
-FileAbortRetryIgnore2= ( )
-SourceIsCorrupted=
-SourceDoesntExist= "%1"
-ExistingFileReadOnly= %n%n 塍
-ErrorReadingExistingDest= :
-FileExists= %n%n Ͽ
-ExistingFileNewer= . .%n%n Ͽ
-ErrorChangingAttr= :
-ErrorCreatingTemp= :
-ErrorReadingSource= :
-ErrorCopying= :
-ErrorReplacingExistingFile= :
-ErrorRestartReplace= :
-ErrorRenamingTemp= :
-ErrorRegisterServer= / : %1
-ErrorRegSvr32Failed=%1
-ErrorRegisterTypeLib= : %1
-
-; *** Post-installation errors
-ErrorOpeningReadme=
-ErrorRestartingComputer= .
-
-; *** Uninstaller messages
-UninstallNotFound= . "%1"
-UninstallOpenError= . "%1"
-UninstallUnsupportedVer= . "%1"
-UninstallUnknownEntry= (%1)
-ConfirmUninstall= Ͽ %1
-UninstallOnlyOnWin64= ҝ 64
-OnlyAdminCanUninstall=
-UninstallStatusLabel= %1
-UninstalledAll= %1
-UninstalledMost= %1 %n%n ϡ
-UninstalledAndNeedsRestart= %1 %n%n Ͽ
-UninstallDataCorrupted= . "%1"
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle= ј Ͽ
-ConfirmDeleteSharedFile2= ǘ . ǘ Ͽ%n%nǐ 흘 ϡ . ǐ . Ԙ
-SharedFileNameLabel= :
-SharedFileLocationLabel=:
-WizardUninstalling=
-StatusUninstalling=...%1
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=%1
-ShutdownBlockReasonUninstallingApp=%1
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1 %2
-AdditionalIcons= :
-CreateDesktopIcon= Әǁ
-CreateQuickLaunchIcon=
-ProgramOnTheWeb=%1
-UninstallProgram=%1
-LaunchProgram=%1
-AssocFileExtension= %1 %2 &
-AssocingFileExtension= %1 %2
-AutoStartProgramGroupDescription= :
-AutoStartProgram=%1 Ϙ
-AddonHostProgramNotFound=%1 .%n%n Ͽ
diff --git a/Greenshot/releases/innosetup/Languages/Hungarian.isl b/Greenshot/releases/innosetup/Languages/Hungarian.isl
deleted file mode 100644
index 7fdee0b99..000000000
--- a/Greenshot/releases/innosetup/Languages/Hungarian.isl
+++ /dev/null
@@ -1,366 +0,0 @@
-;Inno Setup version 6.0.3+ Hungarian messages
-;Based on the translation of Kornl Pl, kornelpal@gmail.com
-;Istvn Szab, E-mail: istvanszabo890629@gmail.com
-;
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
-;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Magyar
-LanguageID=$040E
-LanguageCodePage=1250
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial CE
-;TitleFontSize=29
-;CopyrightFontName=Arial CE
-;CopyrightFontSize=8
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=Telept
-SetupWindowTitle=%1 - Telept
-UninstallAppTitle=Eltvolt
-UninstallAppFullTitle=%1 Eltvolt
-
-; *** Misc. common
-InformationTitle=Informcik
-ConfirmTitle=Megerst
-ErrorTitle=Hiba
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=%1 teleptve lesz. Szeretn folytatni?
-LdrCannotCreateTemp=tmeneti fjl ltrehozsa nem lehetsges. A telepts megszaktva
-LdrCannotExecTemp=Fjl futattsa nem lehetsges az tmeneti knyvtrban. A telepts megszaktva
-HelpTextNote=
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%nHiba %2: %3
-SetupFileMissing=A(z) %1 fjl hinyzik a telept knyvtrbl. Krem hrtsa el a problmt, vagy szerezzen be egy msik pldnyt a programbl!
-SetupFileCorrupt=A teleptsi fjlok srltek. Krem, szerezzen be j msolatot a programbl!
-SetupFileCorruptOrWrongVer=A teleptsi fjlok srltek, vagy inkompatibilisek a telept ezen verzijval. Hrtsa el a problmt, vagy szerezzen be egy msik pldnyt a programbl!
-InvalidParameter=A parancssorba tadott paramter rvnytelen:%n%n%1
-SetupAlreadyRunning=A Telept mr fut.
-WindowsVersionNotSupported=A program nem tmogatja a Windows ezen verzijt.
-WindowsServicePackRequired=A program futtatshoz %1 Service Pack %2 vagy jabb szksges.
-NotOnThisPlatform=Ez a program nem futtathat %1 alatt.
-OnlyOnThisPlatform=Ezt a programot %1 alatt kell futtatni.
-OnlyOnTheseArchitectures=A program kizrlag a kvetkez processzor architektrkhoz tervezett Windows-on telepthet:%n%n%1
-WinVersionTooLowError=A program futtatshoz %1 %2 verzija vagy ksbbi szksges.
-WinVersionTooHighError=Ez a program nem telepthet %1 %2 vagy ksbbire.
-AdminPrivilegesRequired=Csak rendszergazdai mdban telepthet ez a program.
-PowerUserPrivilegesRequired=Csak rendszergazdaknt vagy kiemelt felhasznlknt telepthet ez a program.
-SetupAppRunningError=A telept gy szlelte %1 jelenleg fut.%n%nZrja be az sszes pldnyt, majd kattintson az 'OK'-ra a folytatshoz, vagy a 'Mgse'-re a kilpshez.
-UninstallAppRunningError=Az eltvolt gy szlelte %1 jelenleg fut.%n%nZrja be az sszes pldnyt, majd kattintson az 'OK'-ra a folytatshoz, vagy a 'Mgse'-re a kilpshez.
-
-; *** Startup questions
-PrivilegesRequiredOverrideTitle=Teleptsi md kivlasztsa
-PrivilegesRequiredOverrideInstruction=Vlasszon teleptsi mdot
-PrivilegesRequiredOverrideText1=%1 telepthet az sszes felhasznlnak (rendszergazdai jogok szksgesek), vagy csak magnak.
-PrivilegesRequiredOverrideText2=%1 csak magnak telepthet, vagy az sszes felhasznlnak (rendszergazdai jogok szksgesek).
-PrivilegesRequiredOverrideAllUsers=Telepts &mindenkinek
-PrivilegesRequiredOverrideAllUsersRecommended=Telepts &mindenkinek (ajnlott)
-PrivilegesRequiredOverrideCurrentUser=Telepts csak &nekem
-PrivilegesRequiredOverrideCurrentUserRecommended=Telepts csak &nekem (ajnlott)
-
-; *** Misc. errors
-ErrorCreatingDir=A Telept nem tudta ltrehozni a(z) "%1" knyvtrat
-ErrorTooManyFilesInDir=Nem hozhat ltre fjl a(z) "%1" knyvtrban, mert az mr tl sok fjlt tartalmaz
-
-; *** Setup common messages
-ExitSetupTitle=Kilps a teleptbl
-ExitSetupMessage=A telepts mg folyamatban van. Ha most kilp, a program nem kerl teleptsre.%n%nMsik alkalommal is futtathat a telepts befejezshez%n%nKilp a teleptbl?
-AboutSetupMenuItem=&Nvjegy...
-AboutSetupTitle=Telept nvjegye
-AboutSetupMessage=%1 %2 verzi%n%3%n%nAz %1 honlapja:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< &Vissza
-ButtonNext=&Tovbb >
-ButtonInstall=&Telept
-ButtonOK=OK
-ButtonCancel=Mgse
-ButtonYes=&Igen
-ButtonYesToAll=&Mindet
-ButtonNo=&Nem
-ButtonNoToAll=&Egyiket se
-ButtonFinish=&Befejezs
-ButtonBrowse=&Tallzs...
-ButtonWizardBrowse=T&allzs...
-ButtonNewFolder=j &knyvtr
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Telept nyelvi bellts
-SelectLanguageLabel=Vlassza ki a telepts alatt hasznlt nyelvet.
-
-; *** Common wizard text
-ClickNext=A folytatshoz kattintson a 'Tovbb'-ra, a kilpshez a 'Mgse'-re.
-BeveledLabel=
-BrowseDialogTitle=Vlasszon knyvtrt
-BrowseDialogLabel=Vlasszon egy knyvtrat az albbi listbl, majd kattintson az 'OK'-ra.
-NewFolderName=j knyvtr
-
-; *** "Welcome" wizard page
-WelcomeLabel1=dvzli a(z) [name] Teleptvarzslja.
-WelcomeLabel2=A(z) [name/ver] teleptsre kerl a szmtgpn.%n%nAjnlott minden, egyb fut alkalmazs bezrsa a folytats eltt.
-
-; *** "Password" wizard page
-WizardPassword=Jelsz
-PasswordLabel1=Ez a telepts jelszval vdett.
-PasswordLabel3=Krem adja meg a jelszt, majd kattintson a 'Tovbb'-ra. A jelszavak kis- s nagy bet rzkenyek lehetnek.
-PasswordEditLabel=&Jelsz:
-IncorrectPassword=Az n ltal megadott jelsz helytelen. Prblja jra.
-
-; *** "License Agreement" wizard page
-WizardLicense=Licencszerzds
-LicenseLabel=Olvassa el figyelmesen az informcikat folytats eltt.
-LicenseLabel3=Krem, olvassa el az albbi licencszerzdst. A telepts folytatshoz, el kell fogadnia a szerzdst.
-LicenseAccepted=&Elfogadom a szerzdst
-LicenseNotAccepted=&Nem fogadom el a szerzdst
-
-; *** "Information" wizard pages
-WizardInfoBefore=Informcik
-InfoBeforeLabel=Olvassa el a kvetkez fontos informcikat a folytats eltt.
-InfoBeforeClickLabel=Ha kszen ll, kattintson a 'Tovbb'-ra.
-WizardInfoAfter=Informcik
-InfoAfterLabel=Olvassa el a kvetkez fontos informcikat a folytats eltt.
-InfoAfterClickLabel=Ha kszen ll, kattintson a 'Tovbb'-ra.
-
-; *** "User Information" wizard page
-WizardUserInfo=Felhasznl adatai
-UserInfoDesc=Krem, adja meg az adatait
-UserInfoName=&Felhasznlnv:
-UserInfoOrg=&Szervezet:
-UserInfoSerial=&Sorozatszm:
-UserInfoNameRequired=Meg kell adnia egy nevet.
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Vlasszon clknyvtrat
-SelectDirDesc=Hova telepljn a(z) [name]?
-SelectDirLabel3=A(z) [name] az albbi knyvtrba lesz teleptve.
-SelectDirBrowseLabel=A folytatshoz, kattintson a 'Tovbb'-ra. Ha msik knyvtrat vlasztana, kattintson a 'Tallzs'-ra.
-DiskSpaceGBLabel=At least [gb] GB szabad terletre van szksg.
-DiskSpaceMBLabel=Legalbb [mb] MB szabad terletre van szksg.
-CannotInstallToNetworkDrive=A Telept nem tud hlzati meghajtra telepteni.
-CannotInstallToUNCPath=A Telept nem tud hlzati UNC elrsi tra telepteni.
-InvalidPath=Teljes tvonalat adjon meg, a meghajt betjelvel; pldul:%n%nC:\Alkalmazs%n%nvagy egy hlzati tvonalat a kvetkez alakban:%n%n\\kiszolgl\megoszts
-InvalidDrive=A kivlasztott meghajt vagy hlzati megoszts nem ltezik vagy nem elrhet. Vlasszon egy msikat.
-DiskSpaceWarningTitle=Nincs elg szabad terlet
-DiskSpaceWarning=A Teleptnek legalbb %1 KB szabad lemezterletre van szksge, viszont a kivlasztott meghajtn csupn %2 KB ll rendelkezsre.%n%nMindenkppen folytatja?
-DirNameTooLong=A knyvtr neve vagy az tvonal tl hossz.
-InvalidDirName=A knyvtr neve rvnytelen.
-BadDirName32=A knyvtrak nevei ezen karakterek egyikt sem tartalmazhatjk:%n%n%1
-DirExistsTitle=A knyvtr mr ltezik
-DirExists=A knyvtr:%n%n%1%n%nmr ltezik. Mindenkpp ide akar telepteni?
-DirDoesntExistTitle=A knyvtr nem ltezik
-DirDoesntExist=A knyvtr:%n%n%1%n%nnem ltezik. Szeretn ltrehozni?
-
-; *** "Select Components" wizard page
-WizardSelectComponents=sszetevk kivlasztsa
-SelectComponentsDesc=Mely sszetevk kerljenek teleptsre?
-SelectComponentsLabel2=Jellje ki a teleptend sszetevket; trlje a telepteni nem kvnt sszetevket. Kattintson a 'Tovbb'-ra, ha kszen ll a folytatsra.
-FullInstallation=Teljes telepts
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Szoksos telepts
-CustomInstallation=Egyni telepts
-NoUninstallWarningTitle=Ltez sszetev
-NoUninstallWarning=A telept gy tallta, hogy a kvetkez sszetevk mr teleptve vannak a szmtgpre:%n%n%1%n%nEzen sszetevk kijellsnek trlse, nem tvoltja el azokat a szmtgprl.%n%nMindenkppen folytatja?
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=A jelenlegi kijells legalbb [gb] GB lemezterletet ignyel.
-ComponentsDiskSpaceMBLabel=A jelenlegi kijells legalbb [mb] MB lemezterletet ignyel.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Tovbbi feladatok
-SelectTasksDesc=Mely kiegszt feladatok kerljenek vgrehajtsra?
-SelectTasksLabel2=Jellje ki, mely kiegszt feladatokat hajtsa vgre a Telept a(z) [name] teleptse sorn, majd kattintson a 'Tovbb'-ra.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Start Men knyvtra
-SelectStartMenuFolderDesc=Hova helyezze a Telept a program parancsikonjait?
-SelectStartMenuFolderLabel3=A Telept a program parancsikonjait a Start men kvetkez mappjban fogja ltrehozni.
-SelectStartMenuFolderBrowseLabel=A folytatshoz kattintson a 'Tovbb'-ra. Ha msik mappt vlasztana, kattintson a 'Tallzs'-ra.
-MustEnterGroupName=Meg kell adnia egy mappanevet.
-GroupNameTooLong=A knyvtr neve vagy az tvonal tl hossz.
-InvalidGroupName=A knyvtr neve rvnytelen.
-BadGroupName=A knyvtrak nevei ezen karakterek egyikt sem tartalmazhatjk:%n%n%1
-NoProgramGroupCheck2=&Ne hozzon ltre mappt a Start menben
-
-; *** "Ready to Install" wizard page
-WizardReady=Kszen llunk a teleptsre
-ReadyLabel1=A Telept kszen ll, a(z) [name] szmtgpre teleptshez.
-ReadyLabel2a=Kattintson a 'Telepts'-re a folytatshoz, vagy a "Vissza"-ra a belltsok ttekintshez vagy megvltoztatshoz.
-ReadyLabel2b=Kattintson a 'Telepts'-re a folytatshoz.
-ReadyMemoUserInfo=Felhasznl adatai:
-ReadyMemoDir=Telepts clknyvtra:
-ReadyMemoType=Telepts tpusa:
-ReadyMemoComponents=Vlasztott sszetevk:
-ReadyMemoGroup=Start men mappja:
-ReadyMemoTasks=Kiegszt feladatok:
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=Felkszls a teleptsre
-PreparingDesc=A Telept felkszl a(z) [name] szmtgpre trtn teleptshez.
-PreviousInstallNotCompleted=gy korbbi program teleptse/eltvoltsa nem fejezdtt be. jra kell indtania a szmtgpt a msik telepts befejezshez.%n%nA szmtgpe jraindtsa utn ismt futtassa a Teleptt a(z) [name] teleptsnek befejezshez.
-CannotContinue=A telepts nem folytathat. A kilpshez kattintson a 'Mgse'-re
-ApplicationsFound=A kvetkez alkalmazsok olyan fjlokat hasznlnak, amelyeket a Teleptnek frissteni kell. Ajnlott, hogy engedlyezze a Teleptnek ezen alkalmazsok automatikus bezrst.
-ApplicationsFound2=A kvetkez alkalmazsok olyan fjlokat hasznlnak, amelyeket a Teleptnek frissteni kell. Ajnlott, hogy engedlyezze a Teleptnek ezen alkalmazsok automatikus bezrst. A telepts befejezse utn a Telept megksrli az alkalmazsok jraindtst.
-CloseApplications=&Alkalmazsok automatikus bezrsa
-DontCloseApplications=&Ne zrja be az alkalmazsokat
-ErrorCloseApplications=A Telept nem tudott minden alkalmazst automatikusan bezrni. A folytats eltt ajnlott minden, a Telept ltal frisstend fjlokat hasznl alkalmazst bezrni.
-PrepareToInstallNeedsRestart=A teleptnek jra kell indtania a szmtgpet. jaindtst kveten, futassa jbl a teleptt, a [name] teleptsnek befejezshez .%n%njra szeretn indtani most a szmtgpet?
-
-; *** "Installing" wizard page
-WizardInstalling=Telepts
-InstallingLabel=Krem vrjon, amg a(z) [name] teleptse zajlik.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=A(z) [name] teleptsnek befejezse
-FinishedLabelNoIcons=A Telept vgzett a(z) [name] teleptsvel.
-FinishedLabel=A Telept vgzett a(z) [name] teleptsvel. Az alkalmazst a ltrehozott ikonok kivlasztsval indthatja.
-ClickFinish=Kattintson a 'Befejezs'-re a kilpshez.
-FinishedRestartLabel=A(z) [name] teleptsnek befejezshez jra kell indtani a szmtgpet. jraindtja most?
-FinishedRestartMessage=A(z) [name] teleptsnek befejezshez, a Teleptnek jra kell indtani a szmtgpet.%n%njraindtja most?
-ShowReadmeCheck=Igen, szeretnm elolvasni a FONTOS fjlt
-YesRadio=&Igen, jraindts most
-NoRadio=&Nem, ksbb indtom jra
-; used for example as 'Run MyProg.exe'
-RunEntryExec=%1 futtatsa
-; used for example as 'View Readme.txt'
-RunEntryShellExec=%1 megtekintse
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=A Teleptnek szksge van a kvetkez lemezre
-SelectDiskLabel2=Helyezze be a(z) %1. lemezt s kattintson az 'OK'-ra.%n%nHa a fjlok a lemez egy a megjelentettl klnbz mappjban tallhatk, rja be a helyes tvonalat vagy kattintson a 'Tallzs'-ra.
-PathLabel=&tvonal:
-FileNotInDir2=A(z) "%1" fjl nem tallhat a kvetkez helyen: "%2". Helyezze be a megfelel lemezt vagy vlasszon egy msik mappt.
-SelectDirectoryLabel=Adja meg a kvetkez lemez helyt.
-
-; *** Installation phase messages
-SetupAborted=A telepts nem fejezdtt be.%n%nHrtsa el a hibt s futtassa jbl a Teleptt.
-AbortRetryIgnoreSelectAction=Vlasszon mveletet
-AbortRetryIgnoreRetry=&jra
-AbortRetryIgnoreIgnore=&Hiba elvetse s folytats
-AbortRetryIgnoreCancel=Telepts megszaktsa
-
-; *** Installation status messages
-StatusClosingApplications=Alkalmazsok bezrsa...
-StatusCreateDirs=Knyvtrak ltrehozsa...
-StatusExtractFiles=Fjlok kibontsa...
-StatusCreateIcons=Parancsikonok ltrehozsa...
-StatusCreateIniEntries=INI bejegyzsek ltrehozsa...
-StatusCreateRegistryEntries=Rendszerler bejegyzsek ltrehozsa...
-StatusRegisterFiles=Fjlok regisztrlsa...
-StatusSavingUninstall=Eltvolt informcik mentse...
-StatusRunProgram=Telepts befejezse...
-StatusRestartingApplications=Alkalmazsok jraindtsa...
-StatusRollback=Vltoztatsok visszavonsa...
-
-; *** Misc. errors
-ErrorInternal2=Bels hiba: %1
-ErrorFunctionFailedNoCode=Sikertelen %1
-ErrorFunctionFailed=Sikertelen %1; kd: %2
-ErrorFunctionFailedWithMessage=Sikertelen %1; kd: %2.%n%3
-ErrorExecutingProgram=Nem hajthat vgre a fjl:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=Nem nyithat meg a rendszerler kulcs:%n%1\%2
-ErrorRegCreateKey=Nem hozhat ltre a rendszerler kulcs:%n%1\%2
-ErrorRegWriteKey=Nem mdosthat a rendszerler kulcs:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=Bejegyzs ltrehozsa sikertelen a kvetkez INI fjlban: "%1".
-
-; *** File copying errors
-FileAbortRetryIgnoreSkipNotRecommended=&Fjl kihagysa (nem ajnlott)
-FileAbortRetryIgnoreIgnoreNotRecommended=&Hiba elvetse s folytats (nem ajnlott)
-SourceIsCorrupted=A forrsfjl megsrlt
-SourceDoesntExist=A(z) "%1" forrsfjl nem ltezik
-ExistingFileReadOnly2=A fjl csak olvashatknt van jellve.
-ExistingFileReadOnlyRetry=Csak &olvashat tulajdonsg eltvoltsa s jra prblkozs
-ExistingFileReadOnlyKeepExisting=&Ltez fjl megtartsa
-ErrorReadingExistingDest=Hiba lpett fel a fjl olvassa kzben:
-FileExists=A fjl mr ltezik.%n%nFell kvnja rni?
-ExistingFileNewer=A ltez fjl jabb a teleptsre kerlnl. Ajnlott a ltez fjl megtartsa.%n%nMeg kvnja tartani a ltez fjlt?
-ErrorChangingAttr=Hiba lpett fel a fjl attribtumnak mdostsa kzben:
-ErrorCreatingTemp=Hiba lpett fel a fjl teleptsi knyvtrban trtn ltrehozsa kzben:
-ErrorReadingSource=Hiba lpett fel a forrsfjl olvassa kzben:
-ErrorCopying=Hiba lpett fel a fjl msolsa kzben:
-ErrorReplacingExistingFile=Hiba lpett fel a ltez fjl cserje kzben:
-ErrorRestartReplace=A fjl cserje az jraindts utn sikertelen volt:
-ErrorRenamingTemp=Hiba lpett fel fjl teleptsi knyvtrban trtn tnevezse kzben:
-ErrorRegisterServer=Nem lehet regisztrlni a DLL-t/OCX-et: %1
-ErrorRegSvr32Failed=Sikertelen RegSvr32. A visszaadott kd: %1
-ErrorRegisterTypeLib=Nem lehet regisztrlni a tpustrat: %1
-
-; *** Uninstall display name markings
-; used for example as 'My Program (32-bit)'
-UninstallDisplayNameMark=%1 (%2)
-; used for example as 'My Program (32-bit, All users)'
-UninstallDisplayNameMarks=%1 (%2, %3)
-UninstallDisplayNameMark32Bit=32-bit
-UninstallDisplayNameMark64Bit=64-bit
-UninstallDisplayNameMarkAllUsers=Minden felhasznl
-UninstallDisplayNameMarkCurrentUser=Jelenlegi felhasznl
-
-; *** Post-installation errors
-ErrorOpeningReadme=Hiba lpett fel a FONTOS fjl megnyitsa kzben.
-ErrorRestartingComputer=A Telept nem tudta jraindtani a szmtgpet. Indtsa jra kzileg.
-
-; *** Uninstaller messages
-UninstallNotFound=A(z) "%1" fjl nem ltezik. Nem tvolthat el.
-UninstallOpenError=A(z) "%1" fjl nem nyithat meg. Nem tvolthat el
-UninstallUnsupportedVer=A(z) "%1" eltvoltsi naplfjl formtumt nem tudja felismerni az eltvolt jelen verzija. Az eltvolts nem folytathat
-UninstallUnknownEntry=Egy ismeretlen bejegyzs (%1) tallhat az eltvoltsi naplfjlban
-ConfirmUninstall=Biztosan el kvnja tvoltani a(z) %1 programot s minden sszetevjt?
-UninstallOnlyOnWin64=Ezt a teleptst csak 64-bites Windowson lehet eltvoltani.
-OnlyAdminCanUninstall=Ezt a teleptst csak adminisztrcis jogokkal rendelkez felhasznl tvolthatja el.
-UninstallStatusLabel=Legyen trelemmel, amg a(z) %1 szmtgprl trtn eltvoltsa befejezdik.
-UninstalledAll=A(z) %1 sikeresen el lett tvoltva a szmtgprl.
-UninstalledMost=A(z) %1 eltvoltsa befejezdtt.%n%nNhny elemet nem lehetetett eltvoltani. Trlje kzileg.
-UninstalledAndNeedsRestart=A(z) %1 eltvoltsnak befejezshez jra kell indtania a szmtgpt.%n%njraindtja most?
-UninstallDataCorrupted=A(z) "%1" fjl srlt. Nem tvolthat el.
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Trli a megosztott fjlt?
-ConfirmDeleteSharedFile2=A rendszer azt jelzi, hogy a kvetkez megosztott fjlra mr nincs szksge egyetlen programnak sem. Eltvoltja a megosztott fjlt?%n%nHa ms programok mg mindig hasznljk a megosztott fjlt, akkor az eltvoltsa utn lehet, hogy nem fognak megfelelen mkdni. Ha bizonytalan, vlassza a Nemet. A fjl megtartsa nem okoz problmt a rendszerben.
-SharedFileNameLabel=Fjlnv:
-SharedFileLocationLabel=Helye:
-WizardUninstalling=Eltvolts llapota
-StatusUninstalling=%1 eltvoltsa...
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=%1 teleptse.
-ShutdownBlockReasonUninstallingApp=%1 eltvoltsa.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1, verzi: %2
-AdditionalIcons=Tovbbi parancsikonok:
-CreateDesktopIcon=&Asztali ikon ltrehozsa
-CreateQuickLaunchIcon=&Gyorsindts parancsikon ltrehozsa
-ProgramOnTheWeb=%1 az interneten
-UninstallProgram=Eltvolts - %1
-LaunchProgram=Indts %1
-AssocFileExtension=A(z) %1 &trstsa a(z) %2 fjlkiterjesztssel
-AssocingFileExtension=A(z) %1 trstsa a(z) %2 fjlkiterjesztssel...
-AutoStartProgramGroupDescription=Indtpult:
-AutoStartProgram=%1 automatikus indtsa
-AddonHostProgramNotFound=A(z) %1 nem tallhat a kivlasztott knyvtrban.%n%nMindenkppen folytatja?
diff --git a/Greenshot/releases/innosetup/Languages/Indonesian.isl b/Greenshot/releases/innosetup/Languages/Indonesian.isl
deleted file mode 100644
index b86e81e26..000000000
--- a/Greenshot/releases/innosetup/Languages/Indonesian.isl
+++ /dev/null
@@ -1,364 +0,0 @@
-; *** Inno Setup version 6.0.3+ Indonesian messages ***
-;
-; Untuk mengunduh berkas terjemahan hasil konstribusi pengguna, kunjungi:
-; http://www.jrsoftware.org/files/istrans/
-;
-; Alih bahasa oleh: MozaikTM (mozaik.tm@gmail.com)
-;
-; Catatan: Saat menerjemahkan pesan ini, jangan masukkan titik (.) pada
-; akhir pesan tanpa titik, karena Inno Setup menambahkan titik pada pesan tersebut
-; secara otomatis (menambahkan sebuah titik akan memunculkan dua titik).
-
-[LangOptions]
-; Tiga baris berikut sangat penting. Pastikan untuk membaca dan
-; memahami topik 'bagian [LangOption]' dalam berkas bantuan.
-LanguageName=Bahasa Indonesia
-LanguageID=$0421
-LanguageCodePage=0
-; Bila target bahasa Anda memerlukan fon atau ukuran khusus,
-; hapus tanda komentar (;) dari salah satu atau beberapa baris berikut dan ubah seperlunya.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
-
-[Messages]
-
-; *** Judul aplikasi
-SetupAppTitle=Pemasang
-SetupWindowTitle=Pemasangan %1
-UninstallAppTitle=Pelepas
-UninstallAppFullTitle=Pelepasan %1
-
-; *** Misc. common
-InformationTitle=Informasi
-ConfirmTitle=Konfirmasi
-ErrorTitle=Ada Masalah
-
-; *** Pesan untuk SetupLdr
-SetupLdrStartupMessage=Kami akan memasang %1. Lanjutkan?
-LdrCannotCreateTemp=Tidak dapat membuat berkas sementara. Pemasangan dibatalkan
-LdrCannotExecTemp=Tidak dapat mengeksekusi berkas di dalam direktori sementara. Pemasangan dibatalkan
-HelpTextNote=
-
-; *** Pesan kesalahan saat memuat Pemasang
-LastErrorMessage=%1.%n%nKesalahan %2: %3
-SetupFileMissing=Berkas %1 hilang dari lokasi pemasangan. Silakan selesaikan masalah atau dapatkan salinan baru dari pemasang ini.
-SetupFileCorrupt=Berkas Pemasang telah rusak. Silakan dapatkan salinan baru dari pemasang ini.
-SetupFileCorruptOrWrongVer=Berkas-berkas pemasang telah rusak, atau tidak cocok dengan versi pemasang ini. Silakan selesaikan masalah atau dapatkan salinan baru dari berkas ini.
-InvalidParameter=Ada parameter tidak sah pada baris perintah:%n%n%1
-SetupAlreadyRunning=Pemasang sudah berjalan.
-WindowsVersionNotSupported=Program ini tidak mendukung Windows yang terpasang pada komputer ini.
-WindowsServicePackRequired=Program ini memerlukan %1 Service Pack %2 atau yang terbaru.
-NotOnThisPlatform=Program ini tidak akan berjalan pada %1.
-OnlyOnThisPlatform=Program ini harus dijalankan pada %1.
-OnlyOnTheseArchitectures=Program ini hanya dapat dipasang pada versi Windows yang didesain untuk arsitektur prosesor berikut:%n%n%1
-WinVersionTooLowError=Program ini memerlukan %1 versi %2 atau yang terbaru.
-WinVersionTooHighError=Program ini tidak dapat dipasang pada %1 versi %2 atau yang terbaru.
-AdminPrivilegesRequired=Anda wajib masuk sebagai seorang administrator saat memasang program ini.
-PowerUserPrivilegesRequired=Anda wajib masuk sebagai seorang administrator atau pengguna dari grup Power Users saat memasang program ini.
-SetupAppRunningError=Pemasang mendeteksi bahwa %1 sedang berjalan.%n%nSilakan tutup semua program terkait, kemudian klik OK untuk lanjut, atau Batal untuk keluar.
-UninstallAppRunningError=Pelepas mendeteksi bahwa %1 sedang berjalan.%n%nSilakan tutup semua program terkait, kemudian klik OK untuk lanjut, atau Batal untuk keluar.
-
-; *** Pertanyaan saat memuat Pemasang
-PrivilegesRequiredOverrideTitle=Pilih Mode Pemasang
-PrivilegesRequiredOverrideInstruction=Pilih mode pemasangan
-PrivilegesRequiredOverrideText1=%1 bisa dipasang untuk semua pengguna (perlu izin administratif), atau hanya untuk Anda.
-PrivilegesRequiredOverrideText2=%1 bisa dipasang hanya untuk Anda, atau untuk semua pengguna (perlu izin administratif).
-PrivilegesRequiredOverrideAllUsers=Pasang untuk &semua pengguna
-PrivilegesRequiredOverrideAllUsersRecommended=Pasang untuk &semua pengguna (disarankan)
-PrivilegesRequiredOverrideCurrentUser=Pasang hanya untuk saya
-PrivilegesRequiredOverrideCurrentUserRecommended=Pasang hanya untuk saya (disarankan)
-
-; *** Macam-macam galat
-ErrorCreatingDir=Pemasang tidak dapat membuat direktori "%1"
-ErrorTooManyFilesInDir=Tidak dapat membuat berkas dalam direktori "%1" karena berisi terlalu banyak berkas.
-
-; *** Pesan umum pada Pemasamg
-ExitSetupTitle=Tutup Pemasang
-ExitSetupMessage=Pemasangan tidak lengkap. Bila Anda keluar sekarang, program tidak akan terpasang.%n%nAnda dapat menjalankan kembali Pemasang ini lain kali untuk melengkapi pemasangan.%n%nTutup Pemasang?
-AboutSetupMenuItem=&Tentang Pemasang ....
-AboutSetupTitle=Tentang Pemasang
-AboutSetupMessage=%1 versi %2%n%3%n%n%1 laman muka:%n%4
-AboutSetupNote=
-TranslatorNote=Bila Anda menemukan typo (kesalahan pengetikan), terjemahan yang salah atau kurang tepat, atau Anda ingin mendapatkan terjemahan untuk versi lawas, silakan kirimkan surel (email) ke mozaik(dot)tm(at)gmail(dot)com
-
-; *** Tombol-tombol
-ButtonBack=< &Sebelumnya
-ButtonNext=&Berikutnya >
-ButtonInstall=&Pasang
-ButtonOK=OK
-ButtonCancel=Batal
-ButtonYes=&Iya
-ButtonYesToAll=Iya &semuanya
-ButtonNo=&Tidak
-ButtonNoToAll=&Tidak semuanya
-ButtonFinish=&Selesai
-ButtonBrowse=&Jelajahi ....
-ButtonWizardBrowse=J&elajahi ....
-ButtonNewFolder=&Buat Map Baru
-
-; *** Halaman "Pilih Bahasa"
-SelectLanguageTitle=Pilih Bahasa Pemasang
-SelectLanguageLabel=Pilih bahasa untuk digunakan selama pemasangan.
-
-; *** Pesan umum pada Pemasang
-ClickNext=Klik Berikutnya untuk melanjutkan, atau Batal untuk menutup Pemasang.
-BeveledLabel=
-BrowseDialogTitle=Pilih Map
-BrowseDialogLabel=Pilih satu map dalam daftar di bawah, kemudian klik OK.
-NewFolderName=Map Baru
-
-; *** Halaman "Selamat Datang"
-WelcomeLabel1=Selamat datang di Asisten Pemasangan [name]
-WelcomeLabel2=Kami akan memasang [name/ver] pada komputer Anda.%n%nAnda disarankan untuk menutup semua aplikasi sebelum melanjutkan.
-
-; *** Halaman "Kata Sandi"
-WizardPassword=Kata Sandi
-PasswordLabel1=Pemasang ini dilindungi kata sandi.
-PasswordLabel3=Silakan masukkan kata sandi, lalu klik Berikutnya untuk melanjutkan. Kata sandi bersifat sensitif kapitalisasi.
-PasswordEditLabel=&Kata Sandi:
-IncorrectPassword=Kata sandi yang Anda masukkan salah. Silakan coba lagi.
-
-; *** Halaman "Kesepakatan Lisensi"
-WizardLicense=Kesepakatan Lisensi
-LicenseLabel=Silakan baca informasi penting berikut sebelum melanjutkan.
-LicenseLabel3=Silakan baca Kesepakatan Lisensi berikut. Anda wajib menyetujui syarat-syarat kesepakatan ini sebelum melanjutkan pemasangan.
-LicenseAccepted=Saya &setuju dengan kesepakatan ini
-LicenseNotAccepted=Saya &tidak setuju dengan kesepakatan ini
-
-; *** Halaman "Informasi"
-WizardInfoBefore=Informasi
-InfoBeforeLabel=Silakan baca informasi penting berikut sebelum melanjutkan.
-InfoBeforeClickLabel=Bila Anda sudah siap melanjutkan pemasangan, klik Berikutnya.
-WizardInfoAfter=Informasi
-InfoAfterLabel=Silakan baca informasi penting berikut sebelum melanjutkan.
-InfoAfterClickLabel=Bila Anda sudah siap melanjutkan pemasangan, klik Berikutnya.
-
-; *** Halaman "Informasi Pengguna"
-WizardUserInfo=Informasi Pengguna
-UserInfoDesc=Silakan masukkan informasi Anda.
-UserInfoName=&Nama Pengguna:
-UserInfoOrg=&Organisasi:
-UserInfoSerial=Nomor Seri:
-UserInfoNameRequired=Anda wajib memasukkan nama.
-
-; *** Halaman "Pilih Lokasi Pemasangan"
-WizardSelectDir=Pilih Lokasi Pemasangan
-SelectDirDesc=Di manakah [name] sebaiknya dipasang?
-SelectDirLabel3=Kami akan memasang [name] di dalam map berikut.
-SelectDirBrowseLabel=Klik Berikutnya untuk melanjutkan. Bila Anda ingin memilih map lain, klik Jelajahi.
-DiskSpaceGBLabel=Diperlukan sedikitnya [gb] GB ruang kosong.
-DiskSpaceMBLabel=Diperlukan sedikitnya [mb] MB ruang kosong.
-CannotInstallToNetworkDrive=Kami tidak dapat memasang pada kandar jaringan.
-CannotInstallToUNCPath=Kami tidak dapat memasang pada lokasi UNC.
-InvalidPath=Anda wajib memasukkan lokasi map lengkap dengan nama kandar; misalnya:%n%nC:\APP%n%natau sebuah alamat UNC dengan format:%n%n\\server\share
-InvalidDrive=Kandar atau alamat UNC yang Anda pilih tidak ada atau tidak dapat diakses. Silakan pilih yang lain.
-DiskSpaceWarningTitle=Ruang Kosong Tidak Mencukupi
-DiskSpaceWarning=Pemasang memerlukan sedikitnya %1 KB ruang kosong, tetapi kandar terpilih hanya memiliki %2 KB tersedia.%n%nTetap lanjutkan?
-DirNameTooLong=Alamat atau nama map terlalu panjang.
-InvalidDirName=Nama map ini tidak sah.
-BadDirName32=Nama map dilarang berisi karakter berikut:%n%n%1
-DirExistsTitle=Map Sudah Ada
-DirExists=Map:%n%n%1%n%nsudah ada. Tetap pasang di map tersebut?
-DirDoesntExistTitle=Map Belum Ada
-DirDoesntExist=Map:%n%n%1%n%nbelum ada. Buat map tersebut?
-
-; *** Halaman "Pilih Komponen"
-WizardSelectComponents=Pilih Komponen
-SelectComponentsDesc=Komponen mana sajakah yang sebaiknya dipasang?
-SelectComponentsLabel2=Pilih komponen-komponen yang Anda ingin pasang; hapus centang pada komponen yang Anda tidak ingin pasang. Klik Berikutnya bila Anda siap melanjutkan.
-FullInstallation=Pasang secara penuh
-; kalau bisa, jangan terjemahkan "Padat" (Compact) menjadi "Minimal". Maksudnya, "Minimal" dalam bahasa Anda
-CompactInstallation=Pemasangan Padat
-CustomInstallation=Suka-suka saya
-NoUninstallWarningTitle=Komponen Sudah Ada
-NoUninstallWarning=Kami mendeteksi bahwa komponen-komponen berikut sudah terpasang pada komputer Anda:%n%n%1%n%nKomponen-komponen tersebut tidak akan dihapus walau Anda batal memilihnya.%n%nTetap lanjutkan?
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceGBLabel=Pilihan Anda saat ini memerlukan sedikitnya [gb] GB ruang kosong.
-ComponentsDiskSpaceMBLabel=Pilihan Anda saat ini memerlukan sedikitnya [mb] MB ruang kosong.
-
-; *** Halaman "Pilih Tugas Tambahan"
-WizardSelectTasks=Pilih Tugas Tambahan
-SelectTasksDesc=Tugas tambahan mana sajakah yang Anda ingin jalankan?
-SelectTasksLabel2=Pilih tugas tambahan yang Anda ingin agar kami jalankan saat memasang [name], lalu klik Berikutnya.
-
-; *** Halaman "Pilih Map Menu Start"
-WizardSelectProgramGroup=Pilih Map Menu Start
-SelectStartMenuFolderDesc=Di manakah sebaiknya kami menempatkan pintasan program?
-SelectStartMenuFolderLabel3=Kami akan membuat pintasan program di dalam map Menu Start berikut.
-SelectStartMenuFolderBrowseLabel=Klik Berikutnya untuk melanjutkan. Bila Anda ingin memilih map lain, klik Jelajahi.
-MustEnterGroupName=Anda wajib memasukkan nama map.
-GroupNameTooLong=Alamat atau nama map terlalu panjang.
-InvalidGroupName=Nama map tidak sah.
-BadGroupName=Nama map dilarang berisi karakter berikut:%n%n%1
-NoProgramGroupCheck2=&Jangan buat map Menu Start
-
-; *** Halaman "Siap Memasang"
-WizardReady=Siap Memasang
-ReadyLabel1=Kami telah siap untuk mulai memasang [name] pada komputer Anda.
-ReadyLabel2a=Klik Pasang untuk melanjutkan dengan pengaturan yang Anda pilih, atau klik Sebelumnya bila Anda ingin melihat ulang atau mengubah pengaturan.
-ReadyLabel2b=Klik Pasang untuk melanjutkan dengan pengaturan yang Anda pilih
-ReadyMemoUserInfo=Informasi pengguna:
-ReadyMemoDir=Lokasi pemasangan:
-ReadyMemoType=Jenis pemasangan:
-ReadyMemoComponents=Komponen terpilih:
-ReadyMemoGroup=Map Menu Start:
-ReadyMemoTasks=Tugas Tambahan:
-
-; *** Halaman "Bersiap Memasang"
-WizardPreparing=Bersiap Memasang
-PreparingDesc=Kami sedang bersiap memasang [name] pada komputer Anda.
-PreviousInstallNotCompleted=Pemasangan/pelepasan dari program sebelumnya tidaklah lengkap. Anda perlu memulai ulang komputer untuk melengkapi pemasangan tersebut.%n%nSeusai memulai ulang komputer, jalankan Pemasang ini lagi untuk melengkapi pemasangan [name].
-CannotContinue=Kami tidak dapat melanjutkan. Silakan klik Batal untuk keluar.
-ApplicationsFound=Aplikasi-aplikasi berikut sedang memakai berkas-berkas yang perlu diperbarui oleh kami. Disarankan agar Anda mengizinkan kami untuk menutup aplikasi-aplikasi tersebut secara otomatis.
-ApplicationsFound2=Aplikasi-aplikasi berikut sedang memakai berkas-berkas yang perlu diperbaru oleh kami. Disarankan agar Anda mengizinkan kami untuk menutup aplikasi-aplikasi tersebut secara otomatis. Seusai memasang, kami akan berusaha menjalankan ulang aplikasi-aplikasi tersebut.
-CloseApplications=&Otomatis tutup aplikasi-aplikasi tersebut
-DontCloseApplications=&Jangan tutup aplikasi-aplikasi tersebut
-ErrorCloseApplications=Kami tidak dapat menutup semua aplikasi tersebut secara otomatis. Disarankan agar Anda menutup semua aplikasi yang memakai berkas-berkas yang perlu kami perbarui sebelum melanjutkan.
-PrepareToInstallNeedsRestart=Kami harus memulai ulang komputer Anda. Seusai memulai ulang, jalankan kembali Pemasang ini untuk melengkapi pemasangan [name].%n%nMulai ulang sekarang?
-
-; *** Halaman "Memasang"
-WizardInstalling=Memasang
-InstallingLabel=Silakan tunggu sementara kami memasang [name] pada komputer Anda.
-
-; *** Halaman "Pemasangan Lengkap"
-FinishedHeadingLabel=Menyelesaikan Asisten Pemasangan [name]
-FinishedLabelNoIcons=Kami telah selesai memasang [name] pada komputer Anda.
-FinishedLabel=Kami telah selesai memasang [name] pada komputer Anda. Program tersebut dapat dijalankan dengan memilih pintasan yang terpasang.
-ClickFinish=Klik Selesai untuk mengakhiri pemasangan.
-FinishedRestartLabel=Agar pemasangan [name] lengkap, kami harus memulai ulang komputer Anda. Mulai ulang sekarang?
-FinishedRestartMessage=Agar pemasangan [name] lengkap, kami harus memulai ulang komputer Anda.%n%nMulai ulang sekarang?
-ShowReadmeCheck=Ya, saya mau membaca berkas README
-YesRadio=&Ya, mulai ulang sekarang
-NoRadio=&Tidak, saya akan memulai ulang nanti
-; contoh: 'Jalankan MyProg.exe'
-RunEntryExec=Jalankan %1
-; contoh: 'Lihat Readme.txt'
-RunEntryShellExec=Lihat %1
-
-; *** Pesan yang berkaitan dengan "Setup Needs the Next Disk"
-ChangeDiskTitle=Kami Memerlukan Kandar Lanjutan
-SelectDiskLabel2=Silakan masukkan Kandar %1 dan klik OK.%n%nBila berkas-berkas pada kandar ini dapat ditemukan selain pada map berikut, masukkan alamat yang tepat atau klik Jelajahi.
-PathLabel=&Alamat:
-FileNotInDir2=Berkas "%1" tidak dapat ditemukan di dalam "%2". Silakan masukkan kandar yang tepat atau pilih map lain.
-SelectDirectoryLabel=Silakan tunjukkan lokasi kandar lanjutan.
-
-; *** Pesan untuk fase pemasangan
-SetupAborted=Pemasangan tidak lengkap.%n%nSilakan selesaikan masalah dan jalankan Pemasang ini kembali.
-AbortRetryIgnoreSelectAction=Pilih tindakan
-AbortRetryIgnoreRetry=&Coba lagi
-AbortRetryIgnoreIgnore=&Abaikan masalah dan lanjutkan
-AbortRetryIgnoreCancel=Batalkan pemasangan
-
-; *** Pesan untuk status pemasangan
-StatusClosingApplications=Menutup aplikasi ....
-StatusCreateDirs=Membuat direktori ....
-StatusExtractFiles=Mengekstrak berkas ....
-StatusCreateIcons=Membuat pintasan ....
-StatusCreateIniEntries=Membuat isi berkas INI ...
-StatusCreateRegistryEntries=Membuat daftar registri ....
-StatusRegisterFiles=Mendaftarkan berkas ....
-StatusSavingUninstall=Menyimpan informasi pelepasan ....
-StatusRunProgram=Mengakhiri pemasangan ....
-StatusRestartingApplications=Memulai ulang aplikasi ....
-StatusRollback=Membatalkan perubahan ....
-
-; *** Masalah secara umum
-ErrorInternal2=Masalah internal: %1
-ErrorFunctionFailedNoCode=%1 gagal
-ErrorFunctionFailed=%1 gagal; kode %2
-ErrorFunctionFailedWithMessage=%1 gagal; kode %2.%n%3
-ErrorExecutingProgram=Tidak dapat mengeksekusi berkas:%n%1
-
-; *** Masalah pada Registry
-ErrorRegOpenKey=Masalah saat membuka kunci registri:%n%1\%2
-ErrorRegCreateKey=Masalah saat membuat kunci registri:%n%1\%2
-ErrorRegWriteKey=Masalah saat menulis pada kunci registri:%n%1\%2
-
-; *** Masalah pada INI
-ErrorIniEntry=Terjadi masalah saat membuat entri INI dalam berkas "%1".
-
-; *** Masalah saat menyalin berkas
-FileAbortRetryIgnoreSkipNotRecommended=&Lewati berkas ini (tidak disarankan)
-FileAbortRetryIgnoreIgnoreNotRecommended=&Abaikan masalah dan lanjutkan (tidak disarankan)
-SourceIsCorrupted=Berkas sumber telah rusak
-SourceDoesntExist=Berkas sumber "%1" tidak ada
-ExistingFileReadOnly2=Berkas yang telah ada tidak bisa diganti karena ditandai hanya-baca.
-ExistingFileReadOnlyRetry=&Hapus atribut hanya-baca dan coba lagi
-ExistingFileReadOnlyKeepExisting=&Pertahankan berkas yang sudah ada
-ErrorReadingExistingDest=Terjadi masalah saat mencoba membaca berkas yang sudah ada:
-FileExists=Berkas sudah ada.%n%nTimpa berkas tersebut?
-ExistingFileNewer=Berkas yang sudah ada lebih baru dibanding dengan yang akan kami pasang. Disarankan agar Anda mempertahankan berkas tersebut.%n%nPertahankan berkas tersebut?
-ErrorChangingAttr=Terjadi masalah saat mencoba mengubah atribut berkas yang sudah ada:
-ErrorCreatingTemp=Terjadi masalah saat mencoba membuat berkas di dalam direktori pemasangan:
-ErrorReadingSource=Terjadi masalah saat mencoba membaca berkas sumber:
-ErrorCopying=Terjadi masalah saat mencoba menyalin berkas:
-ErrorReplacingExistingFile=Terjadi masalah saat mencoba menimpa berkas yang sudah ada:
-ErrorRestartReplace=Fungsi RestartReplace gagal:
-ErrorRenamingTemp=Terjadi masalah saat mencoba mengubah nama berkas dalam direktori pemasangan:
-ErrorRegisterServer=Tidak dapat mendaftarkan berkas DLL/OCX: %1
-ErrorRegSvr32Failed=RegSvr32 gagal dengan kode akhir %1
-ErrorRegisterTypeLib=Tidak dapat mendaftarkan pustaka: %1
-
-; *** Penandaan tampilan nama saat melepas
-; contoh 'Program saya (32-bita)'
-UninstallDisplayNameMark=%1 (%2)
-; contoh 'Program saya (32-bita, Semua pengguna)'
-UninstallDisplayNameMarks=%1 (%2, %3)
-UninstallDisplayNameMark32Bit=32-bita
-UninstallDisplayNameMark64Bit=64-bita
-UninstallDisplayNameMarkAllUsers=Semua pengguna
-UninstallDisplayNameMarkCurrentUser=Pengguna saat ini
-
-; *** Masalah pasca-pemasangan
-ErrorOpeningReadme=Terjadi masalah saat mencoba membuka berkas README.
-ErrorRestartingComputer=Kami tidak dapat memulai ulang komputer. Silakan lakukan secara manual.
-
-; *** Pesan untuk Pelepas
-UninstallNotFound=Berkas "%1" tidak ada. Tidak bisa melepas.
-UninstallOpenError=Berkas "%1" tidak bisa dibuka. Tidak bisa melepas
-UninstallUnsupportedVer=Berkas catatan pelepas "%1" tertulis dalam format yang tak dikenali oleh pelepas versi ini. Tidak bisa melepas.
-UninstallUnknownEntry=Entri tak dikenal (%1) ditemukan dalam catatan pelepas
-ConfirmUninstall=Apakah Anda yakin hendak menghapus %1 beserta semua komponennya?
-UninstallOnlyOnWin64=Instalasi ini hanya dapat dilepas pada Windows 64-bita.
-OnlyAdminCanUninstall=Instalasi ini hanya dapat dilepas oleh pengguna dengan izin administratif.
-UninstallStatusLabel=Silakan tunggu sementara %1 dihapus dari komputer Anda.
-UninstalledAll=%1 berhasil dilepas dari komputer Anda.
-UninstalledMost=Selesai melepas %1.%n%nBeberapa elemen tidak dapat dihapus. Anda dapat menghapusnya secara manual.
-UninstalledAndNeedsRestart=Untuk melengkapi pelepasan %1, komputer Anda harus dimulai ulang.%n%nMulai ulang sekarang?
-UninstallDataCorrupted=Berkas "%1" telah rusak. Tidak bisa melepas
-
-; *** Pesan untuk fase pelepasan
-ConfirmDeleteSharedFileTitle=Hapus Berkas Bersama?
-ConfirmDeleteSharedFile2=Sistem mengindikasi bahwa berkas-berkas bersama berikut tidak lagi dipakai oleh program apa pun. Apakah Anda ingin kami menghapus berkas-berkas tersebut?%n%nJika berkas-berkas tersebut dihapus dan masih ada program yang memakainya, program tersebut mungkin akan berjalan di luar semestinya. Bila Anda tidak yakin, pilih Tidak. Membiarkan berkas tersebut pada komputer Anda tidak akan menimbulkan masalah.
-SharedFileNameLabel=Nama berkas:
-SharedFileLocationLabel=Lokasi:
-WizardUninstalling=Status Pelepasan
-StatusUninstalling=Melepas %1...
-
-; *** Blok alasan Shutdown
-ShutdownBlockReasonInstallingApp=Memasang %1.
-ShutdownBlockReasonUninstallingApp=Melepas %1.
-
-; Pesan khusus berikut tidak digunakan oleh Pemasang itu sendiri,
-; namun bila Anda memakainya di dalam skrip Anda, maka terjemahkan.
-
-[CustomMessages]
-NameAndVersion=%1 versi %2
-AdditionalIcons=Pintasan tambahan:
-CreateDesktopIcon=Buat pintasan di &Desktop
-CreateQuickLaunchIcon=Buat pintasan di &Quick Launch
-ProgramOnTheWeb=%1 di web
-UninstallProgram=Lepas %1
-LaunchProgram=Jalankan %1
-AssocFileExtension=&Asosiasikan %1 dengan ekstensi berkas %2
-AssocingFileExtension=Mengasosiasikan %1 dengan ekstensi berkas %2 ....
-AutoStartProgramGroupDescription=Startup:
-AutoStartProgram=Jalankan %1 secara otomatis
-AddonHostProgramNotFound=%1 tidak dapat ditemukan di dalam map yang Anda pilih.%n%nTetap lanjutkan?
diff --git a/Greenshot/releases/innosetup/Languages/Uyghur.islu b/Greenshot/releases/innosetup/Languages/Uyghur.islu
deleted file mode 100644
index 1f702c7a5..000000000
--- a/Greenshot/releases/innosetup/Languages/Uyghur.islu
+++ /dev/null
@@ -1,338 +0,0 @@
-; *** Inno Setup version 5.5.3+ Uyghur messages ***
-; Translated by Irshat ghalib [ uqkun09@msn.cn ]
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
-;
-; Note:When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-
-LanguageName=ئۇيغۇرچە
-LanguageID=$0480
-LanguageCodePage=0
-
-;If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-DialogFontName=ALKATIP
-;DialogFontSize=12
-WelcomeFontName=ALKATIP
-;WelcomeFontSize=18
-TitleFontName=ALKATIP
-;TitleFontSize=35
-CopyrightFontName=ALKATIP
-;CopyrightFontSize=11
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=قاچىلاش يېتەكچىسى
-SetupWindowTitle=قاچىلاش يېتەكچىسى - %1
-UninstallAppTitle=ئۆچۈرۈش يېتەكچىسى
-UninstallAppFullTitle=%1 ئۆچۈرۈش يېتەكچىسى
-
-; *** Misc. common
-InformationTitle=ئۇچۇر
-ConfirmTitle=جەزىملەش
-ErrorTitle=خاتالىق
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=قاچىلاش يېتەكچىسى سىزنىڭ كومپيۇتېرىڭىزغا %1نى قاچىلايدۇ. راستتىنلا داۋاملاشتۇرامسىز؟
-LdrCannotCreateTemp=ۋاقىتلىق ھۆججەت قۇرالمىدى. قاچىلاش توختىتىلدى
-LdrCannotExecTemp=ۋاقىتلىق ھۆججەت قىسقۇچتىكى ھۆججەت ئىجرا بولمىدى. قاچىلاش توختىتىلدى
-
-; *** Startup error messages خاتالىق كۆزنىكى
-LastErrorMessage=%1.%n%n خاتالىق %2:%3
-SetupFileMissing=قاچىلاش مۇندەرىجىسىدە %1 ھۆججىتى يوق. بۇ مەسىلىنى ھەل قىلىڭ ياكى قايتىدىن بىر نۇسخا كۆچۈرۈلمە دېتالغا ئېرىشىڭ.
-SetupFileCorrupt=قاچىلاش ھۆججىتى بۇزۇلغان. قايتىدىن بىر نۇسخا كۆچۈرۈلمە دېتالغا ئېرىشىڭ.
-SetupFileCorruptOrWrongVer=قاچىلاش ھۆججىتى بۇزۇلغان، ياكى بۇ قاچىلاش ھۆججىتى مۇقىم ئەمەس. بۇ مەسىلىنى ھەل قىلىڭ، ياكى قاچىلاش ھۆججىتىنى قايتىدىن چۈشۈرۈڭ.
-InvalidParameter=ئۈنۈمسىز بۇيرۇق پارامېتىرى:%n%n%1
-SetupAlreadyRunning=قاچىلاش يېتەكچىسى ئىجرا بولۇۋاتىدۇ.
-WindowsVersionNotSupported=دېتال بۇ كومپيۇتېرنىڭ نەشرىنى قوللىمايدۇ.
-WindowsServicePackRequired=دېتال %1 Service Pack %2 ياكى ئۇنىڭدىن يۇقىرى نەشرىنى تەلەپ قىلىدۇ.
-NotOnThisPlatform=دېتال %1 دە ئىجرا بولمايدۇ.
-OnlyOnThisPlatform=دېتال چوقۇم %1دە ئىجرا بولىدۇ.
-OnlyOnTheseArchitectures=دېتال پەقەت تۆۋەندىكى CPU بولغان Windows نەشرىگە قاچىلىغىلى بولىدۇ:%n%n%1
-MissingWOW64APIs=كومپيۇتېرىڭىزدا Windows نىڭ 64 لىك دېتاللىرى ئىجرا بولمايدۇ.Service Pack %1 ئارقىلىق مەسىلىڭىزنى ھەل قىلىڭ.
-WinVersionTooLowError=دېتال %2 نەشرىدىن يۇقىرى بولغان %1 نى تەلەپ قىلىدۇ.
-WinVersionTooHighError=دېتال %2 نەشرى ياكى %1 دىن يۇقىرى نەشىرىدە ئىجرا بولىدۇ.
-AdminPrivilegesRequired=باشقۇرغۇچىلىق سالاھىيتىدە كىرگەندىن كېيىن ئاندىن بۇ دېتالنى قاچىلالايسىز.
-PowerUserPrivilegesRequired=باشقۇرغۇچىلىق سالاھىيتىدە ياكى ئۇنىڭدىن يۇقىرى سالاھىيەتتە كىرگەندىن كېيىن ئاندىن بۇ دېتالنى قاچىلالايسىز.
-SetupAppRunningError=دېتال %1 تېخى ئىجرا بولۇۋېتىپتۇ.%n%n بارلىق ئېچىلغان كۆزنەكلەرنى تاقىۋېتىڭ، ئاندىن "مۇقىملاش" نى چېكىپ داۋاملاشتۇرۇڭ، ياكى "قالدۇرۇش" نى چېكىپ چېكىنىڭ.
-UninstallAppRunningError=دېتال %1 تېخى ئىجرا بولۇۋېتىپتۇ.%n%n بارلىق ئېچىلغان كۆزنەكلەرنى تاقىۋېتىڭ، ئاندىن "مۇقىملاش" نى چېكىپ داۋاملاشتۇرۇڭ، ياكى "قالدۇرۇش" نى چېكىپ چېكىنىڭ.
-
-; *** Misc. errors
-ErrorCreatingDir=قاچىلاش يېتەكچىسى"%1"
-ErrorTooManyFilesInDir=ھۆججەت قىسقۇچ"%1"نىڭ ئىچىدە ھۆججەت بەك كۆپكەن، ئىچىگە ھۆججەت قۇرغىلى بولمىدى
-
-; *** Setup common messages
-ExitSetupTitle=قاچىلاش يېتەكچىسىدىن چېكىنىش
-ExitSetupMessage=قاچىلاش تاماملانمىدى. ئەگەر ھازىر چېكىنسىڭىز، دېتال قاچىلانمايدۇ.%n%nسىز كېلەر قېتىمدا قاچىلاش يېتەكچىسىنى قايتا قوزغىتىپ قاچىلاشنى تاماملىسىڭىز بولىدۇ.%n%nقاچىلاش يېتەكچىسىدىن راستتىنلا چېكىنەمسىز؟
-AboutSetupMenuItem=قاچىلاش يېتەكچىسى ھەققىدە(&A)…
-AboutSetupTitle=قاچىلاش يېتەكچىسى ھەققىدە
-AboutSetupMessage=%1 نەشرى %2%n%3%n%n%1 تور بېكىتى:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons كۇنۇپكىلار
-ButtonBack=<ئالدىنقى قەدەم(&B)
-ButtonNext=كېيىنكى قەدەم(&N)>
-ButtonInstall=قاچىلاش(&I)
-ButtonOK=جەزىملەش
-ButtonCancel=ئىناۋەتسىز
-ButtonYes=ھەئە(&Y)
-ButtonYesToAll=ھەممىنى تاللاش(&A)
-ButtonNo=ياق(&N)
-ButtonNoToAll=ھەممىنى قالدۇرۇش(&O)
-ButtonFinish=تامام(&F)
-ButtonBrowse=…كۆرۈش(&B)
-ButtonWizardBrowse=…كۆرۈش(&R)
-ButtonNewFolder=ھۆججەت قىسقۇچ قۇرۇش(&M)
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=تىل تاللاڭ
-SelectLanguageLabel=قاچىلاش جەريانىدا ئىشلىتىدىغان تىلنى تاللاڭ:
-
-; *** Common wizard text
-ClickNext="كېيىنكى قەدەم"نى چېكىپ داۋاملاشتۇرۇڭ ياكى "ئىناۋەتسىز"نى چېكىپ قاچىلاش يېتەكچىسىدىن چېكىنىڭ.
-BeveledLabel=
-BrowseDialogTitle=تاللانغان ھۆججەت قىسقۇچنى كۆرۈش
-BrowseDialogLabel=تۆۋەندىكى تىزىملىكتىن ھۆججەت قىسقۇچتىن بىرنى تاللاڭ ھەمدە "جەزىملەش"نى چېكىڭ.
-NewFolderName=ھۆججەت قىسقۇچ قۇرۇش
-
-; *** "Welcome" wizard page
-WelcomeLabel1=[name]نىڭ قاچىلاش يېتەكچىسىنى ئىشلىتىشىڭىزنى قارشى ئالىمىز
-WelcomeLabel2=مەزكۇر قاچىلاش يېتەكچىسى سىزنىڭ كومپيۇتېرىڭىزغا [name/ver]نى قاچىلىماقچى.%n%nمەشغۇلاتنى داۋاملاشتۇرۇشتىن ئىلگىرى باشقا بارلىق دېتاللارنى ئۆچۈرۈۋېتىشىڭىزنى تەۋسىيە قىلىمىز.
-
-; *** "Password" wizard page
-WizardPassword=پارول
-PasswordLabel1=مەزكۇر دېتال پارول بىلەن قوغدالغان.
-PasswordLabel3=پارولنى كىرگۈزۈڭ ھەمدە "كېيىنكى قەدەم"نى چېكىڭ. پارول چوڭ-كىچىك ھەرپنى پەرقلەندۈرىدۇ.
-PasswordEditLabel=پارول(&P):
-IncorrectPassword=كىرگۈزگەن پارولىڭىز توغرا بولمىدى. قايتا سىناڭ.
-
-; *** "License Agreement" wizard page
-WizardLicense=ئىجازەت كېلىشىمنامىسى
-LicenseLabel=تۆۋەندىكى ئۇچۇرلارنى ئوقۇڭ، ئاندىن كېيىنكى قەدەمگە ئۆتۈڭ.
-LicenseLabel3=تۆۋەندىكى ئىجازەت كېلىشىمنامىسىنى ئوقۇڭ. سىز كېلىشىمنامىدىكى ماددىلارغا قوشۇلغاندىلا، قاچىلاشنى داۋاملاشتۇرالايسىز.
-LicenseAccepted=كېلىشىمگە قوشۇلىمەن(&A)
-LicenseNotAccepted=كېلىشىمگە قوشۇلمايمەن(&D)
-
-; *** "Information" wizard pages
-WizardInfoBefore=ئۇچۇر
-InfoBeforeLabel=تۆۋەندىكى ئۇچۇرلارنى ئوقۇپ، كېيىنكى قەدەمگە ئۆتۈڭ.
-InfoBeforeClickLabel=قاچىلاشنى داۋاملاشتۇرۇشقا تەييارلىنىپ بولۇپ، "كېيىنكى قەدەم"نى چېكىڭ.
-WizardInfoAfter=ئۇچۇر
-InfoAfterLabel=تۆۋەندىكى ئۇچۇرلارنى ئوقۇپ، كېيىنكى قەدەمگە ئۆتۈڭ.
-InfoAfterClickLabel=قاچىلاشنى داۋاملاشتۇرۇشقا تەييارلىنىپ بولۇپ، "كېيىنكى قەدەم"نى چېكىڭ.
-
-; *** "User Information" wizard page
-WizardUserInfo=ئابۇنت ئۇچۇرى
-UserInfoDesc=ئۇچۇرىڭىزنى تولدۇرۇڭ
-UserInfoName=ئابۇنت نامى(&U):
-UserInfoOrg=ئورگان نامى(&O):
-UserInfoSerial=تەرتىپ نومۇرى(&S):
-UserInfoNameRequired=ئابۇنت نامىنى چوقۇم تولدۇرىسىز
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=قاچىلاش ئورنىنى تاللاڭ
-SelectDirDesc=[name]نى قەيەرگە قاچىلايسىز؟
-SelectDirLabel3=قاچىلاش يېتەكچىسى [name]نى تۆۋەندىكى ھۆججەت قىسقۇچقا قاچىلايدۇ.
-SelectDirBrowseLabel="كېيىنكى قەدەم"نى چېكىپ داۋاملاشتۇرۇڭ. ئەگەر باشقا ھۆججەت قىسقۇچنى تاللىماقچى بولسىڭىز "كۆرۈش"نى چېكىڭ.
-DiskSpaceMBLabel=دىسكا بوشلۇقىڭىزدا كەم دېگەندە [mb]مېگابايت(MB) بوشلۇقىڭىز بولۇشى كېرەك.
-CannotInstallToNetworkDrive=تور قوزغاتقۇچىغا قاچىلىيالمايدۇ.
-CannotInstallToUNCPath=UNCيولىغا قاچىلىيالايدۇ.
-InvalidPath=دىسكا بەلگىسىنى ئۆز ئىچىگە ئالغان مۇكەممەل يولنى تولدۇرۇشىڭىز كېرەك، مەسىلەن:%n%nC:\دېتال%n%nياكى تۆۋەندىكى فورماتتىكى UNCيولى:%n%n\\مۇلازىمىتېر نامى\ئورتاقلاشقان مۇندەرىجە نامى
-InvalidDrive=سىز تاللىغان قوزغاتقۇچ ياكى UNC مەۋجۇت ئەمەس ياكى زىيارەت قىلغىلى بولمايدۇ.باشقا بىرىنى تاللاڭ.
-DiskSpaceWarningTitle=دىسكا بوشلۇقى يېتىشمىدى
-DiskSpaceWarning=ئاز دېگەندە%1(KB) بوشلۇق بولغاندا ئاندىن قاچىلغىلى بولىدۇ، نۆۋەتتىكى دىسكىدا%2(KB) ئىشلەتكىلى بولىدىغان بوشلۇق بار.%n%n داۋاملاشتۇرامسىز؟
-DirNameTooLong=ھۆججەت قىسقۇچ نامى ياكى يولى بەك ئۇزۇن بولۇپ كەتتى.
-InvalidDirName=ھۆججەت قىسقۇچ نامى ئۈنۈمسىز.
-BadDirName32=ھۆججەت قىسقۇچ نامى تۆۋەندىكى ھەرپ-بەلگىلەرنى ئۆز ئىچىگە ئالالمايدۇ:%n%n%1
-DirExistsTitle=ھۆججەت قىسقۇچ قۇرۇلۇپ بولغان
-DirExists=ھۆججەت قىسقۇچ%n%n%1%n%nقۇرۇلۇپ بولغان. راستتىنلا مۇشۇ ھۆججەت قىسقۇچقا قاچىلامسىز؟
-DirDoesntExistTitle=ھۆججەت قىسقۇچ يوق
-DirDoesntExist=ھۆججەت قىسقۇچ%n%n%1%n%nيوق. بۇ ھۆججەت قىسقۇچنى قۇرامسىز؟
-
-; *** "Select Components" wizard page
-WizardSelectComponents=قىستۇرما تاللاش
-SelectComponentsDesc=قايسى قىستۇرمىلارنى قاچىلايسىز؟
-SelectComponentsLabel2=قاچىلىماقچى بولغان قىستۇرمىنى تاللاڭ، قاچىلىمايدىغان قىستۇرمىلارنى تازىلىۋىتىڭ. تەييارلىنىپ بولغاندىن كېيىن "كېيىنكى قەدەم"نى چېكىڭ.
-FullInstallation=ھەممىنى قاچىلاش
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=ئاددىي قاچىلاش
-CustomInstallation=ئۆزى بەلگىلەپ قاچىلاش
-NoUninstallWarningTitle=قىستۇرما بار
-NoUninstallWarning=تۆۋەندىكى سەپلىمىلەرنى قاچىلاپ بولۇپسىز:%n%n%1%n%n تاللاشنى بىكار قىلىڭ.%n%n داۋاملاشتۇرامسىز؟
-ComponentSize1=%1كىلوبايت(KB)
-ComponentSize2=%1مېگابايت(MB)
-ComponentsDiskSpaceMBLabel=بۇ تۈرگە ئەڭ ئاز بولغاندا [mb](MB) بوشلۇق كېتىدۇ.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=قوشۇمچە ۋەزىپە تاللاڭ
-SelectTasksDesc=قايسى قوشۇمچە ۋەزىپىلەرنى ئىجرا قىلدۇرىسىز؟
-SelectTasksLabel2=[name]نى قاچىلاۋاتقان ۋاقىتتا ئىجرا قىلدۇرماقچى بولغان ۋەزىپىلەرنى تاللاڭ، ئاندىن "كېيىنكى قەدەم"نى چېكىڭ.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=باشلاش تىزىملىكىدىكى ھۆججەت قىسقۇچنى تاللاڭ
-SelectStartMenuFolderDesc=دېتالنىڭ قىسقا يولىنى قەيەرگە قۇرىسىز؟
-SelectStartMenuFolderLabel3=قاچىلاش يېتەكچىسى تۆۋەندىكى باشلاش تىزىملىكىدىكى ھۆججەت قىسقۇچقا دېتالنىڭ قىسقا يولىنى قۇرىدۇ.
-SelectStartMenuFolderBrowseLabel="كېيىنكى قەدەم"نى چېكىپ داۋاملاشتۇرۇڭ. ئەگەر باشقا ھۆججەت قىسقۇچنى تاللىماقچى بولسىڭىز "كۆرۈش"نى چېكىڭ.
-MustEnterGroupName=ھۆججەت قىسقۇچنىڭ نامىنى چوقۇم تولدۇرۇشىڭىز كېرەك
-GroupNameTooLong=ھۆججەت قىسقۇچ نامى ياكى يولى بەك ئۇزۇن بولۇپ كەتتى.
-InvalidGroupName=ھۆججەت قىسقۇچ نامى ئۈنۈمسىز.
-BadGroupName=ھۆججەت قىسقۇچ نامى تۆۋەندىكى ھەرپ-بەلگىلەرنى ئۆز ئىچىگە ئالالمايدۇ:%n%n%1
-NoProgramGroupCheck2=باشلاش تىزىملىكىگە ھۆججەت قىسقۇچ قۇرمايمەن(&D)
-
-; *** "Ready to Install" wizard page
-WizardReady=قاچىلاش تاماملىنىشقا تەييارلاندى
-ReadyLabel1=قاچىلاش يېتەكچىسى تاماملىنىشقا تەييارلاندى، سىزنىڭ كومپيۇتېرىڭىزغا [name]نى قاچىلاشنى باشلايدۇ.
-ReadyLabel2a=تەييارلىق پۈتكەن بولسا "قاچىلاش"نى چېكىپ قاچىلاشنى باشلاڭ. ئەگەر تەڭشەشنى ئۆزگەرتمەكچى ياكى تەكشۈرمەكچى بولسىڭىز "ئالدىنقى قەدەم"نى چېكىڭ.
-ReadyLabel2b="قاچىلاش"نى چېكىپ قاچىلاشنى باشلاڭ.
-ReadyMemoUserInfo=ئابۇنت ئۇچۇرى:
-ReadyMemoDir=قاچىلاش ئورنى:
-ReadyMemoType=قاچىلاش تىپى:
-ReadyMemoComponents=تاللانغان قىستۇرمىلار:
-ReadyMemoGroup=باشلاش تىزىملىكىدىكى ھۆججەت قىسقۇچ:
-ReadyMemoTasks=قوشۇمچە ۋەزىپە:
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=قاچىلاشقا تەييارلاندى
-PreparingDesc=قاچىلاش يېتەكچىسى سىزنىڭ كومپيۇتېرىڭىزغا [name]نى قاچىلاشقا تەييارلىنىۋاتىدۇ.
-PreviousInstallNotCompleted=ئالدىنقى قېتىملىق دېتال قاچىلاش/ئۆچۈرۈش تاماملىنالمىدى. سىز كومپيۇتېرنى قايتا قوزغىتىپ ئالدىنقى قېتىملىق قاچىلاشنى تاماملىشىڭىز كېرەك.%n%nكومپيۇتېر قايتا قوزغالغاندىن كېيىن، قاچىلاش يېتەكچىسىنى قايتا ئىجرا قىلىپ [name]نى قاچىلاڭ.
-CannotContinue=قاچىلاش داۋاملىشالمايدۇ. "ئىناۋەتسىز"نى چېكىپ چېكىنىڭ.
-ApplicationsFound=قاچىلاش يېتەكچىسى يېڭىلاشتا ئىشلىتىدىغان ھۆججەتنى باشقا دېتال ئىشلىتىۋېتىپتۇ. قاچىلاش يېتەكچىسىنىڭ بۇ پىروگراممىلارنى مەجبۇرىي ئۆچۈرۋېتىشىگە يول قويىشىڭىز كېرەك.
-ApplicationsFound2=قاچىلاش يېتەكچىسى يېڭىلاشتا ئىشلىتىدىغان ھۆججەتنى باشقا دېتال ئىشلىتىۋېتىپتۇ. قاچىلاش يېتەكچىسىنىڭ بۇ پىروگراممىلارنى مەجبۇرىي ئۆچۈرۋېتىشىگە يول قويىشىڭىز كېرەك. قاچىلاش تۈگىگەندە بۇ پىروگراممىلارنى قايتىدىن قوزغىتىدۇ.
-CloseApplications=دېتالنى ئاپتوماتىك ئۆچۈرسۇن(&A)
-DontCloseApplications=دېتالنى ئاپتوماتىك ئۆچۈرمىسۇن(&D)
-ErrorCloseApplications=قاچىلاش يېتەكچىسى بارلىق پىروگراممىلارنى ئاپتوماتىك ئۆچۈرەلمىدى. كېيىنكى باسقۇچقا ئۆتۈشتى ئاۋۋال بۇ پىروگراممىلارنى چوقۇم ئۆچۈرۋېتىشىڭىز كېرەك.
-
-; *** "Installing" wizard page
-WizardInstalling=قاچىلاۋاتىدۇ
-InstallingLabel=سەل ساقلاڭ، قاچىلاش يېتەكچىسى كومپيۇتېرىڭىزغا [name]نى قاچىلاۋاتىدۇ.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=[name]نى قاچىلاش تامام
-FinishedLabelNoIcons=قاچىلاش يېتەكچىسى كومپيۇتېرىڭىزغا [name]نى قاچىلاپ بولدى.
-FinishedLabel=قاچىلاش يېتەكچىسى كومپيۇتېرىڭىزغا [name]نى قاچىلاپ بولدى. سىز قۇرىۋالغان قىسقا يول ئارقىلىق بۇ دېتالنى ئاچالايسىز.
-ClickFinish="تامام"نى چېكىپ قاچىلاشنى تاماملاڭ.
-FinishedRestartLabel=[name]نى قاچىلاشنى تاماملاش ئۈچۈن، قاچىلاش يېتەكچىسى كومپيۇتېرىڭىزنى قايتا قوزغىتىشى كېرەك. ھازىرلا قايتا قوزغىتامسىز؟
-FinishedRestartMessage=[name]نى قاچىلاشنى تاماملاش ئۈچۈن، قاچىلاش يېتەكچىسى كومپيۇتېرىڭىزنى قايتا قوزغىتىشى كېرەك.%n%nھازىرلا قايتا قوزغىتامسىز؟
-ShowReadmeCheck=ھەئە، تونۇشتۇرۇش ھۆججىتىنى ئوقۇيمەن
-YesRadio=ھەئە، كومپيۇتېرنى ھازىرلا قايتا قوزغىتىمەن(&Y)
-NoRadio=ياق، سەل تۇرۇپ ئۆزۈم قايتا قوزغىتىمەن(&N)
-; used for example as 'Run MyProg.exe'
-RunEntryExec=%1نى ئىجرا قىلىش
-; used for example as 'View Readme.txt'
-RunEntryShellExec=تەكشۈرۈۋاتىدۇ %1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=تاللانغان دىسكىنى ئۆزگەرتىڭ
-SelectDiskLabel2=دىسكىنى سېلىپ%1 "مۇقىملاش" نى چېكىڭ.%n%n ئەگەر دىسكىدا تۆۋەندىكى ھۆججەت قىسقۇچ يوق بولسا، "كۆرۈش" دىن تاللاڭ.
-PathLabel=مۇندەرىجە(&P):
-FileNotInDir2=ھۆججەت"%1" "%2"نىڭ ئىچىدە يوقكەن. توغرا بولغان دىسكىنى سېلىڭ ياكى توغرا بولغان ھۆججەت قىسقۇچنى تاللاڭ.
-SelectDirectoryLabel=بىر دىسكىنى تاللاڭ
-
-; *** Installation phase messages
-SetupAborted=قاچىلاش تولۇق تاماملانمىدى.%n%nتۆۋەندىكى مەسىلىلەرنى ھەل قىلىپ قايتا قاچىلاڭ.
-EntryAbortRetryIgnore="قايتا سىناش" نى چېكىپ قايتا سىناڭ، "ئۆتكۈزۋېتىش" نى چېكىپ داۋاملاشتۇرۇڭ، "ئاخىرلاشتۇرۇش" نى چېكىپ قاچىلاشنى ئاخىرلاشتۇرۇڭ.
-
-; *** Installation status messages
-StatusClosingApplications=دېتالنى ئۆچۈرۈۋاتىدۇ…
-StatusCreateDirs=ھۆججەت قىسقۇچ قۇرۇۋاتىدۇ…
-StatusExtractFiles=ھۆججەتنى چىقىرىۋاتىدۇ…
-StatusCreateIcons=قىسقا يولىنى قۇرۇۋاتىدۇ…
-StatusCreateIniEntries=INI كۆرسەتكۈچىنى قۇرۇۋاتىدۇ…
-StatusCreateRegistryEntries=تىزىملاش جەدۋەل كۆرسەتكۈچىنى قۇرۇۋاتىدۇ…
-StatusRegisterFiles=تىزىملاش جەدۋەل تۈرىنى قۇرۇۋاتىدۇ…
-StatusSavingUninstall=ئۆچۈرۈش ئۇچۇرىنى ساقلاۋاتىدۇ…
-StatusRunProgram=قاچىلاشنى تاماملاۋاتىدۇ…
-StatusRestartingApplications=دېتالنى قايتا قوزغىتىۋاتىدۇ…
-StatusRollback=ئۆزگەرتىشنى بىكار قىلىۋاتىدۇ…
-
-; *** Misc. errors
-ErrorInternal2=ئىچكى خاتالىق:%1
-ErrorFunctionFailedNoCode=%1 مەغلۇپ بولدى
-ErrorFunctionFailed=%1 مەغلۇپ بولدى، خاتالىق نومۇرى %2
-ErrorFunctionFailedWithMessage=%1مەغلۇپ بولدى، خاتالىق نومۇرى %2.%n%3
-ErrorExecutingProgram=ئىجرا بولمىغان دېتال:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=تىزىملاش جەدۋىلىنى ئاچقاندا يۈز بەرگەن خاتالىق:%n%1\%2
-ErrorRegCreateKey=تىزىملاش جەدۋىلىنى قۇرغاندا يۈز بەرگەن خاتالىق:%n%1\%2
-ErrorRegWriteKey=تىزىملاش جەدۋىلىنى يازغاندا يۈز بەرگەن خاتالىق:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=ھۆججەت"%1"نىڭINI تۈرىنى قۇرۇشتا خاتالىق كۆرۈلدى.
-
-; *** File copying errors
-FileAbortRetryIgnore="قايتا سىناش" نى چېكىپ قايتا سىناڭ، "ئۆتكۈزۋېتىش" نى چېكىپ داۋاملاشتۇرۇڭ(تەۋسىيە قىلىنمايدۇ)، "ئاخىرلاشتۇرۇش" نى چېكىپ قاچىلاشنى ئاخىرلاشتۇرۇڭ.
-FileAbortRetryIgnore2="قايتا سىناش" نى چېكىپ قايتا سىناڭ، "ئۆتكۈزۋېتىش" نى چېكىپ داۋاملاشتۇرۇڭ(تەۋسىيە قىلىنمايدۇ)، "ئاخىرلاشتۇرۇش" نى چېكىپ قاچىلاشنى ئاخىرلاشتۇرۇڭ.
-SourceIsCorrupted=ھۆججەت بۇزۇلۇپ كېتىپتۇ
-SourceDoesntExist=ھۆججەت "%1" مەۋجۇت ئەمەسكەن
-ExistingFileReadOnly=ھازىر بار بولغان ھۆججەتنى پەقەت ئوقۇغىلى بولىدىكەن.%n%n ھۆججەتنىڭ پەقەت ئوقۇغىلى بولىدىغان خاسلىقىنى ئېلىۋېتىپ "قايتا سىناش" نى چېكىڭ, ياكى "ئۆتكۈزۋېتىش" نى چېكىپ ئاتلاپ ئۆتۈپ كېتىڭ, ياكى "ئاخىرلاشتۇرۇش" نى چېكىپ قاچىلاشنى ئاخىرلاشتۇرۇڭ.
-ErrorReadingExistingDest=ھۆججەت ئوقۇشتا خاتالىق كۆرۈلدى:
-FileExists=ھۆججەت مەۋجۇتكەن.%n%n باستۇرۋېتەمسىز؟
-ExistingFileNewer=ئەسلىدە بار ھۆججەت نەشرى ھازىر قاچىلىماقچى بولغان ھۆججەت نەشرىدىن يېڭىكەن. چوقۇم ساقلاپ قېلىشىڭىز كېرەك.%n%nساقلاپ قالامسىز؟
-ErrorChangingAttr=ھۆججەت خاسلىقىنى ئۆزگەرتىشتە خاتالىق كۆرۈلدى:
-ErrorCreatingTemp=ھۆججەت قۇرۇش مەغلۇپ بولدى:
-ErrorReadingSource=ھۆججەت ئوقۇشتا خاتالىق كۆرۈلدى:
-ErrorCopying=ھۆججەت كۆچۈرۈشتە خاتالىق كۆرۈلدى:
-ErrorReplacingExistingFile=ھۆججەت ئالماشتۇرۇش مەغلۇپ بولدى:
-ErrorRestartReplace=قايتا ئالماشتۇرۇش مەغلۇپ بولدى:
-ErrorRenamingTemp=نىشان مۇندەرىجىنىڭ نامىنى ئۆزگەرتىشتە خاتالىق كۆرۈلدى:
-ErrorRegisterServer=تىزىملاش مەغلۇپ بولغان كونتروللار (DLL/OCX):%1
-ErrorRegSvr32Failed=RegSvr32 نى ئىجرا قىلىش مەغلۇپ بولدى، قايتۇرغان قىممەت:%1
-ErrorRegisterTypeLib=تىزىملاش مەغلۇپ بولغان تۈرلەر:%1
-
-; *** Post-installation errors
-ErrorOpeningReadme=چۈشەندۈرۈش قوللانمىسىنى ئېچىشتا خاتالىق كۆرۈلدى.
-ErrorRestartingComputer=قاچىلاش يېتەكچىسى كومپيۇتېرنى قايتا قوزغىتالمىدى. قول ئارقىلىق قايتا قوزغىتىڭ.
-
-; *** Uninstaller messages
-UninstallNotFound="%1" ھۆججىتى يوق. ئۆچۈرەلمەيدۇ.
-UninstallOpenError="%1" ھۆججىتىنى ئاچالمىدى. ئۆچۈرەلمەيدۇ.
-UninstallUnsupportedVer=بۇ قاچىلاش يېتەكچىسى"%1" شەكىلدىكى ئۆچۈرۈش خاتىرىسىنى تونۇيالمىدى.ئۆچۈرۈش مەغلۇپ بولدى.
-UninstallUnknownEntry=ئۆچۈرۈش خاتىرىسىدە نامەلۇم تۈر (%1) بايقالدى
-ConfirmUninstall=سىز راستتىنلا %1 ۋە بارلىق قىستۇرمىلارنى پاكىز ئۆچۈرۈۋەتمەكچىمۇ؟
-UninstallOnlyOnWin64=بۇ قاچىلانما پەقەت 64بىتلىق Windows مۇھىتىدا ئۆچۈرۈلىدۇ.
-OnlyAdminCanUninstall=بۇ دېتالنى پەقەت باشقۇرغۇچىلىق سالاھىيتىدىكى ئىشلەتكۈچىلەرلا ئۆچۈرەلەيدۇ.
-UninstallStatusLabel=سەل ساقلاڭ، %1نى ئۆچۈرۈۋاتىدۇ.
-UninstalledAll=سىزنىڭ كومپيۇتېرىڭىزدىن %1نى ئۆچۈرۈش مۇۋەپپەقىيەتلىك بولدى.
-UninstalledMost=%1 ئۆچۈرۈش تاماملاندى.%n%nمەلۇم تۈرلەرنى ئۆچۈرۈش جەريانىدا ئۆچۈرەلمىدى. بۇلارنى قولدا ئۆچۈرۈۋەتسىڭىز بولىدۇ.
-UninstalledAndNeedsRestart=%1نى ئۆچۈرۈشنى تاماملاش ئۈچۈن، كومپيۇتېرنى قايتا قوزغىتىشىڭىز كېرەك. %n%nھازىرلا قايتا قوزغىتامسىز؟
-UninstallDataCorrupted="%1" ھۆججىتى بۇزۇلغان. ئۆچۈرەلمەيدۇ
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=ئورتاقلاشقان ھۆججەتنى ئۆچۈرەمسىز؟
-ConfirmDeleteSharedFile2=سىستېما تۆۋەندىكى ئورتاق ھۆججەتنى ئىشلەتمەيدۇ. بۇ ئورتاق ھۆججەتنى ئۆچۈرەمسىز؟%n%nئەگەر سىستېما بۇ ھۆججەتنى ئىشلەتسە، ئۆچۈرۈۋەتكەندىن كېيىن سىستېما نورمال ئىشلىمەسلىكى مۇمكىن. مۇقۇملاشتۇرالمىسىڭىز "ياق" نى تاللاڭ. بۇ ھۆججەت قېلىپ قالسا سىستېمىغا ھېچ قانداق ئەكس تەسىرى يوق.
-SharedFileNameLabel=ھۆججەت نامى:
-SharedFileLocationLabel=ئورنى:
-WizardUninstalling=ئۆچۈرۈش ھالىتى
-StatusUninstalling=%1نى ئۆچۈرۈۋاتىدۇ…
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=%1نى قاچىلاۋاتىدۇ.
-ShutdownBlockReasonUninstallingApp=%1نى ئۆچۈرۈۋاتىدۇ.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1نىڭ %2 نەشىرى
-AdditionalIcons=قوشۇمچە قىسقا يولى:
-CreateDesktopIcon=ئۈستەليۈزىگە قىسقا يول قۇرۇش(&D)
-CreateQuickLaunchIcon=تېز قوزغىتىش بالدىقىغا قىسقا يول قۇرۇش(&Q)
-ProgramOnTheWeb=%1تور بېكەت
-UninstallProgram=%1نى ئۆچۈرۈش
-LaunchProgram=%1نى ئىجرا قىلىش
-AssocFileExtension=%1 بىلەن %2 بولغان ھۆججەت نامىنى باغلاش (&A)
-AssocingFileExtension=ھازىر%1 بىلەن %2 بولغان ھۆججەت نامى باغلىنىۋاتىدۇ...…
-AutoStartProgramGroupDescription=قوزغىتىش:
-AutoStartProgram=%1 نى ئاپتوماتىك قوزغىتىش
-AddonHostProgramNotFound=سىز تاللىغان ھۆججەت قىسقۇچتا %1نى تاپالمىدى.%n%nشۇنداقتىمۇ داۋاملاشتۇرامسىز؟
\ No newline at end of file
diff --git a/Greenshot/web/htdocs/Help/index.de-DE.html b/Greenshot/web/htdocs/Help/index.de-DE.html
deleted file mode 100644
index 9f28a117d..000000000
--- a/Greenshot/web/htdocs/Help/index.de-DE.html
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
- Greenshot Hilfe
-
-
-
-
-
-
-
- Greenshot Hilfe
-
- Modi
-
- Bereichsmodus
-
-
- Aktivieren Sie den Bereichsmodus, indem Sie die Druck-Taste auf
- Ihrer Tastatur betätigen oder Bereich abfotografieren aus dem
- Kontextmenü wählen.
- Drücken und halten Sie die linke Maustaste gedrückt, um einen rechteckigen
- Bereich zu definieren, der abfotografiert werden soll.
- Nach dem Loslassen der Maustaste öffnet sich das Bildbearbeitungsfenster
- zur weiteren Bearbeitung Ihres Screenshots.
- Um den Bereich später noch einmal abzufotografieren, wählen Sie Zuletzt
- gewählten Bereich abfotografieren.
-
-
- Fenstermodus
-
-
- Aktivieren Sie den FensterModus, indem Sie Alt + Druck auf
- Ihrer Tastatur betätigen oder Fenster abfotografieren aus dem
- Kontextmenü wählen.
- Klicken Sie auf das Fenster, dass abfotografiern werden soll.
- Nachdem Sie geklickt haben öffnet sich das Bildbearbeitungsfenster
- zur weiteren Bearbeitung Ihres Screenshots.
-
-
- Bildschirmmodus
-
-
- Wenn Sie den gesamten Bildschirm abfotografieren wollen, drücken Sie einfach
- Ctrl + Print auf Ihrer Tastatur oder wählen Sie Kompletten
- Bildschirm abfotografieren.
- Der komplette Bildschirm wird sofort abfotografiert, das Bildbearbeitungsfenster
- öffnet sich zur weiteren Bearbeitung Ihres Screenshots.
-
-
- Bildbearbeitungsfenster
-
-
- Wenn Sie das Bildbearbeitungsfenster nicht nutzen wollen knnen Sie im
- Kontextmen oder im Einstellungsdialog festlegen, dass es nicht angezeigt
- werden soll. In diesem Fall wird der Screenshot sofort in eine Datei
- gespeichert. Speicherort, Dateiname und Bildformat sind dann abhngig von
- den bevorzugten Ausgabedatei-Einstellungen im Einstellungsdialog.
-
-
- Datei-Menü
-
-
- - Speichern: speichert die Grafik unter dem Pfad der beim letzten Speichern unter... Dialog gewählt wurde
- - Speichern unter...: öffnet einen Dialog zur Auswahl des Pfads und Dateinamens unter dem die Grafik gespeichert werden soll
- - Grafik in die Zwischenablage kopieren: kopiert die Grafik in die Zwischenablage, so dass sie in anderer Software verwendet werden kann
-
-
- Bearbeiten-Menü
-
-
- - Gewähltes Element in die Zwischenablage ausschneiden: entfernt das ausgewähltes Element und kopiert es in die Zwischenablage, so dass es in ein anderes Bildbearbeitungsfenster eingefügt werden kann
- - Gewähltes Element in die Zwischenablage kopieren: kopiert das ausgewähltes Element in die Zwischenablage, so dass es in ein anderes Bildbearbeitungsfenster eingefügt werden kann
- - Element aus der Zwischenablage einfügen: fügt ein vorher ausgeschnittenes/kopiertes Element in das Bildbearbeitungsfenster ein
- - Gewähltes Element duplizieren: dupliziert das gewählte Element
-
-
- Objekt-Menü
-
-
- - Rechteck hinzufügen: fügt ein Rechteck zur Grafik hinzu
- - Ellipse hinzufügen: fügt eine Ellipse zur Grafik hinzu
- - Textfeld hinzufügen: fügt ein Textfeld zur Grafik hinzu
- - Gewähltes Element löschen: entfernt das gewählte Element aus der Grafik
-
-
-
- Klicken Sie ein Element an um es auszuwählen. Anschließend können Sie die Größe oder
- Position verändern, oder es kopieren, ausschneiden oder entfernen. Die Größe
- eines Elements kann durch Klicken und Ziehen der Anfasser (kleine schwarze
- Quadrate) an der linken oberen oder der rechten unteren Ecke geändert werden.
-
-
-
-
-
diff --git a/Greenshot/web/htdocs/Help/index.en-US.html b/Greenshot/web/htdocs/Help/index.en-US.html
deleted file mode 100644
index 16bb57bc7..000000000
--- a/Greenshot/web/htdocs/Help/index.en-US.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
- Greenshot Help
-
-
-
-
-
-
-
- Greenshot Help
-
- Modes
-
- Region mode
-
-
- Activate region mode by hitting the Print key on your keyboard
- or by choosing Capture region from the context menu.
- Left-click and drag to define a rectangular area you want to be shot.
- After releasing the mouse button, the image editor window will open for
- further editing of your screenshot.
- For shooting the region again later, choose Capture last region from
- the context menu.
-
-
- Window mode
-
-
- Activate window mode by hitting Alt + Print on your keyboard
- or by choosing Capture window from the context menu.
- Click the window you want to be shot.
- After clicking, the image editor window will open for
- further editing of your screenshot.
-
-
- Fullscreen mode
-
-
- If you want to shoot the complete screen, just press Ctrl + Print on
- your keyboard or choose Capture full screen from the context menu.
- The complete screen will be shot instantly, the image editor window will open for
- further editing of your screenshot.
-
-
- Image Editor
-
-
- If you do not want to use the image editor window you can choose to skip
- in in the context menu or in the settings dialog. The screenshot will be
- saved directly to a file then. Storage location, filename and image format
- are defined by your preferred output file settings in the settings dialog.
-
-
- File menu
-
-
- - Save: saves the image to the file specified in the last Save as... dialog
- - Save as...: lets you choose a path and filename to save the image to
- - Copy image to clipboard: copies the image to the clipboard, for pasting it to other software
-
-
- Edit menu
-
-
- - Cut selected element to clipboard: removes the selected element and copies it to the clipboard, so that it can be pasted into another image editor window
- - Copy selected element to clipboard: copies it to the clipboard, so that it can be pasted into another image editor window
- - Paste element from clipboard: pastes a previously cut/copied element into the image editor window
- - Duplicate selected element: duplicates the selected element
-
-
- Object menu
-
-
- - Add rectangle: adds a rectangle to the image
- - Add ellipse: adds an ellipse to the image
- - Add textbox: adds a textbox to the image
- - Delete selected element: removes the selected element from the image
-
-
-
- Click an element to select it for resizing, moving, copying, cutting, or removal. The size of an
- element can be defined by dragging the grippers (small black squares) at the top-left and the
- bottom-right corner of the selected element.
-
-
-
-
-
diff --git a/Greenshot/web/htdocs/favicon.ico b/Greenshot/web/htdocs/favicon.ico
deleted file mode 100644
index 0a2ab97c1..000000000
Binary files a/Greenshot/web/htdocs/favicon.ico and /dev/null differ
diff --git a/Greenshot/web/htdocs/index.html b/Greenshot/web/htdocs/index.html
deleted file mode 100644
index 3ff31a08e..000000000
--- a/Greenshot/web/htdocs/index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- Greenshot - Screenshot Tool
-
-
-
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
diff --git a/GreenshotBoxPlugin/BoxConfiguration.cs b/GreenshotBoxPlugin/BoxConfiguration.cs
deleted file mode 100644
index b8e9e0965..000000000
--- a/GreenshotBoxPlugin/BoxConfiguration.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.Windows.Forms;
-using GreenshotPlugin.Core;
-using System;
-using GreenshotBoxPlugin.Forms;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotBoxPlugin {
- ///
- /// Description of ImgurConfiguration.
- ///
- [IniSection("Box", Description = "Greenshot Box Plugin configuration")]
- public class BoxConfiguration : IniSection {
- [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="png")]
- public OutputFormat UploadFormat { get; set; }
-
- [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")]
- public int UploadJpegQuality { get; set; }
-
- [IniProperty("AfterUploadLinkToClipBoard", Description = "After upload send Box link to clipboard.", DefaultValue = "true")]
- public bool AfterUploadLinkToClipBoard { get; set; }
-
- [IniProperty("UseSharedLink", Description = "Use the shared link, instead of the private, on the clipboard", DefaultValue = "True")]
- public bool UseSharedLink { get; set; }
- [IniProperty("FolderId", Description = "Folder ID to upload to, only change if you know what you are doing!", DefaultValue = "0")]
- public string FolderId { get; set; }
-
- [IniProperty("RefreshToken", Description = "Box authorization refresh Token", Encrypted = true)]
- public string RefreshToken { get; set; }
-
- ///
- /// Not stored
- ///
- public string AccessToken {
- get;
- set;
- }
-
- ///
- /// Not stored
- ///
- public DateTimeOffset AccessTokenExpires {
- get;
- set;
- }
-
- ///
- /// A form for token
- ///
- /// bool true if OK was pressed, false if cancel
- public bool ShowConfigDialog() {
- DialogResult result = new SettingsForm().ShowDialog();
- if (result == DialogResult.OK) {
- return true;
- }
- return false;
- }
-
- }
-}
diff --git a/GreenshotBoxPlugin/BoxDestination.cs b/GreenshotBoxPlugin/BoxDestination.cs
deleted file mode 100644
index 06402ca89..000000000
--- a/GreenshotBoxPlugin/BoxDestination.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.ComponentModel;
-using System.Drawing;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.Interfaces;
-
-namespace GreenshotBoxPlugin {
- public class BoxDestination : AbstractDestination {
- private readonly BoxPlugin _plugin;
- public BoxDestination(BoxPlugin plugin) {
- _plugin = plugin;
- }
-
- public override string Designation {
- get {
- return "Box";
- }
- }
-
- public override string Description {
- get {
- return Language.GetString("box", LangKey.upload_menu_item);
- }
- }
-
- public override Image DisplayIcon {
- get {
- ComponentResourceManager resources = new ComponentResourceManager(typeof(BoxPlugin));
- return (Image)resources.GetObject("Box");
- }
- }
-
- public override ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) {
- ExportInformation exportInformation = new ExportInformation(Designation, Description);
- string uploadUrl = _plugin.Upload(captureDetails, surface);
- if (uploadUrl != null) {
- exportInformation.ExportMade = true;
- exportInformation.Uri = uploadUrl;
- }
- ProcessExport(exportInformation, surface);
- return exportInformation;
- }
- }
-}
diff --git a/GreenshotBoxPlugin/BoxEntities.cs b/GreenshotBoxPlugin/BoxEntities.cs
deleted file mode 100644
index a1f1a5c61..000000000
--- a/GreenshotBoxPlugin/BoxEntities.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-
-namespace GreenshotBoxPlugin {
- [DataContract]
- public class Authorization {
- [DataMember(Name = "access_token")]
- public string AccessToken { get; set; }
- [DataMember(Name = "expires_in")]
- public int ExpiresIn { get; set; }
- [DataMember(Name = "refresh_token")]
- public string RefreshToken { get; set; }
- [DataMember(Name = "token_type")]
- public string TokenType { get; set; }
- }
- [DataContract]
- public class SharedLink {
- [DataMember(Name = "url")]
- public string Url { get; set; }
- [DataMember(Name = "download_url")]
- public string DownloadUrl { get; set; }
- }
-
- [DataContract]
- public class FileEntry {
- [DataMember(Name = "id")]
- public string Id { get; set; }
- [DataMember(Name = "name")]
- public string Name { get; set; }
- [DataMember(Name = "shared_link")]
- public SharedLink SharedLink { get; set; }
- }
-
- [DataContract]
- public class Upload {
- [DataMember(Name = "entries")]
- public List Entries { get; set; }
- }
-}
diff --git a/GreenshotBoxPlugin/BoxPlugin.cs b/GreenshotBoxPlugin/BoxPlugin.cs
deleted file mode 100644
index b15835063..000000000
--- a/GreenshotBoxPlugin/BoxPlugin.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.IO;
-using System.Windows.Forms;
-using GreenshotPlugin.Controls;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotBoxPlugin {
- ///
- /// This is the Box base code
- ///
- [Plugin("Box", true)]
- public class BoxPlugin : IGreenshotPlugin {
- private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(BoxPlugin));
- private static BoxConfiguration _config;
- private ComponentResourceManager _resources;
- private ToolStripMenuItem _itemPlugInConfig;
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected void Dispose(bool disposing)
- {
- if (!disposing) return;
-
- if (_itemPlugInConfig == null) return;
-
- _itemPlugInConfig.Dispose();
- _itemPlugInConfig = null;
- }
-
- ///
- /// Implementation of the IGreenshotPlugin.Initialize
- ///
- public bool Initialize() {
-
- // Register configuration (don't need the configuration itself)
- _config = IniConfig.GetIniSection();
- _resources = new ComponentResourceManager(typeof(BoxPlugin));
- SimpleServiceProvider.Current.AddService(new BoxDestination(this));
- _itemPlugInConfig = new ToolStripMenuItem {
- Image = (Image) _resources.GetObject("Box"),
- Text = Language.GetString("box", LangKey.Configure)
- };
- _itemPlugInConfig.Click += ConfigMenuClick;
-
- PluginUtils.AddToContextMenu(_itemPlugInConfig);
- Language.LanguageChanged += OnLanguageChanged;
- return true;
- }
-
- public void OnLanguageChanged(object sender, EventArgs e) {
- if (_itemPlugInConfig != null) {
- _itemPlugInConfig.Text = Language.GetString("box", LangKey.Configure);
- }
- }
-
- public void Shutdown() {
- LOG.Debug("Box Plugin shutdown.");
- }
-
- ///
- /// Implementation of the IPlugin.Configure
- ///
- public void Configure() {
- _config.ShowConfigDialog();
- }
-
- public void ConfigMenuClick(object sender, EventArgs eventArgs) {
- _config.ShowConfigDialog();
- }
-
- ///
- /// This will be called when the menu item in the Editor is clicked
- ///
- public string Upload(ICaptureDetails captureDetails, ISurface surfaceToUpload) {
- SurfaceOutputSettings outputSettings = new SurfaceOutputSettings(_config.UploadFormat, _config.UploadJpegQuality, false);
- try {
- string url = null;
- string filename = Path.GetFileName(FilenameHelper.GetFilename(_config.UploadFormat, captureDetails));
- SurfaceContainer imageToUpload = new SurfaceContainer(surfaceToUpload, outputSettings, filename);
-
- new PleaseWaitForm().ShowAndWait("Box", Language.GetString("box", LangKey.communication_wait),
- delegate {
- url = BoxUtils.UploadToBox(imageToUpload, captureDetails.Title, filename);
- }
- );
-
- if (url != null && _config.AfterUploadLinkToClipBoard) {
- ClipboardHelper.SetClipboardData(url);
- }
-
- return url;
- } catch (Exception ex) {
- LOG.Error("Error uploading.", ex);
- MessageBox.Show(Language.GetString("box", LangKey.upload_failure) + " " + ex.Message);
- return null;
- }
- }
- }
-}
diff --git a/GreenshotBoxPlugin/BoxUtils.cs b/GreenshotBoxPlugin/BoxUtils.cs
deleted file mode 100644
index 28bc90fb6..000000000
--- a/GreenshotBoxPlugin/BoxUtils.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using GreenshotPlugin.Core;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
-using System.Runtime.Serialization.Json;
-using System.Text;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotBoxPlugin {
-
- ///
- /// Description of ImgurUtils.
- ///
- public static class BoxUtils {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(BoxUtils));
- private static readonly BoxConfiguration Config = IniConfig.GetIniSection();
- private const string UploadFileUri = "https://upload.box.com/api/2.0/files/content";
- private const string FilesUri = "https://www.box.com/api/2.0/files/{0}";
-
- ///
- /// Put string
- ///
- ///
- ///
- /// OAuth2Settings
- /// response
- public static string HttpPut(string url, string content, OAuth2Settings settings) {
- var webRequest= OAuth2Helper.CreateOAuth2WebRequest(HTTPMethod.PUT, url, settings);
-
- byte[] data = Encoding.UTF8.GetBytes(content);
- using (var requestStream = webRequest.GetRequestStream()) {
- requestStream.Write(data, 0, data.Length);
- }
- return NetworkHelper.GetResponseAsString(webRequest);
- }
-
- ///
- /// Do the actual upload to Box
- /// For more details on the available parameters, see: http://developers.box.net/w/page/12923951/ApiFunction_Upload%20and%20Download
- ///
- /// Image for box upload
- /// Title of box upload
- /// Filename of box upload
- /// url to uploaded image
- public static string UploadToBox(SurfaceContainer image, string title, string filename) {
-
- // Fill the OAuth2Settings
- var settings = new OAuth2Settings
- {
- AuthUrlPattern = "https://app.box.com/api/oauth2/authorize?client_id={ClientId}&response_type=code&state={State}&redirect_uri={RedirectUrl}",
- TokenUrl = "https://api.box.com/oauth2/token",
- CloudServiceName = "Box",
- ClientId = BoxCredentials.ClientId,
- ClientSecret = BoxCredentials.ClientSecret,
- RedirectUrl = "https://www.box.com/home/",
- BrowserSize = new Size(1060, 600),
- AuthorizeMode = OAuth2AuthorizeMode.EmbeddedBrowser,
- RefreshToken = Config.RefreshToken,
- AccessToken = Config.AccessToken,
- AccessTokenExpires = Config.AccessTokenExpires
- };
-
-
- // Copy the settings from the config, which is kept in memory and on the disk
-
- try {
- var webRequest = OAuth2Helper.CreateOAuth2WebRequest(HTTPMethod.POST, UploadFileUri, settings);
- IDictionary parameters = new Dictionary
- {
- { "file", image },
- { "parent_id", Config.FolderId }
- };
-
- NetworkHelper.WriteMultipartFormData(webRequest, parameters);
-
- var response = NetworkHelper.GetResponseAsString(webRequest);
-
- Log.DebugFormat("Box response: {0}", response);
-
- var upload = JsonSerializer.Deserialize(response);
- if (upload?.Entries == null || upload.Entries.Count == 0) return null;
-
- if (Config.UseSharedLink) {
- string filesResponse = HttpPut(string.Format(FilesUri, upload.Entries[0].Id), "{\"shared_link\": {\"access\": \"open\"}}", settings);
- var file = JsonSerializer.Deserialize(filesResponse);
- return file.SharedLink.Url;
- }
- return $"http://www.box.com/files/0/f/0/1/f_{upload.Entries[0].Id}";
- } finally {
- // Copy the settings back to the config, so they are stored.
- Config.RefreshToken = settings.RefreshToken;
- Config.AccessToken = settings.AccessToken;
- Config.AccessTokenExpires = settings.AccessTokenExpires;
- Config.IsDirty = true;
- IniConfig.Save();
- }
- }
- }
- ///
- /// A simple helper class for the DataContractJsonSerializer
- ///
- internal static class JsonSerializer {
- ///
- /// Helper method to serialize object to JSON
- ///
- /// JSON object
- /// string
- public static string Serialize(object jsonObject) {
- var serializer = new DataContractJsonSerializer(jsonObject.GetType());
- using MemoryStream stream = new MemoryStream();
- serializer.WriteObject(stream, jsonObject);
- return Encoding.UTF8.GetString(stream.ToArray());
- }
-
- ///
- /// Helper method to parse JSON to object
- ///
- ///
- ///
- ///
- public static T Deserialize(string jsonString) {
- var deserializer = new DataContractJsonSerializer(typeof(T));
- using MemoryStream stream = new MemoryStream();
- byte[] content = Encoding.UTF8.GetBytes(jsonString);
- stream.Write(content, 0, content.Length);
- stream.Seek(0, SeekOrigin.Begin);
- return (T)deserializer.ReadObject(stream);
- }
- }
-}
diff --git a/GreenshotBoxPlugin/Forms/SettingsForm.cs b/GreenshotBoxPlugin/Forms/SettingsForm.cs
deleted file mode 100644
index 49e62fd17..000000000
--- a/GreenshotBoxPlugin/Forms/SettingsForm.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace GreenshotBoxPlugin.Forms {
- ///
- /// Description of PasswordRequestForm.
- ///
- public partial class SettingsForm : BoxForm {
- public SettingsForm() {
- //
- // The InitializeComponent() call is required for Windows Forms designer support.
- //
- InitializeComponent();
- AcceptButton = buttonOK;
- CancelButton = buttonCancel;
- }
- }
-}
diff --git a/GreenshotBoxPlugin/LanguageKeys.cs b/GreenshotBoxPlugin/LanguageKeys.cs
deleted file mode 100644
index 6e757a01d..000000000
--- a/GreenshotBoxPlugin/LanguageKeys.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-namespace GreenshotBoxPlugin {
- public enum LangKey {
- upload_menu_item,
- settings_title,
- label_upload_format,
- upload_success,
- upload_failure,
- communication_wait,
- Configure,
- label_AfterUpload,
- label_AfterUploadLinkToClipBoard
- }
-}
diff --git a/GreenshotConfluencePlugin/Confluence.cs b/GreenshotConfluencePlugin/Confluence.cs
deleted file mode 100644
index bb803602c..000000000
--- a/GreenshotConfluencePlugin/Confluence.cs
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-using GreenshotConfluencePlugin.confluence;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotConfluencePlugin {
- public class Page {
- public Page(RemotePage page) {
- Id = page.id;
- Title = page.title;
- SpaceKey = page.space;
- Url = page.url;
- Content = page.content;
- }
- public Page(RemoteSearchResult searchResult, string space) {
- Id = searchResult.id;
- Title = searchResult.title;
- SpaceKey = space;
- Url = searchResult.url;
- Content = searchResult.excerpt;
- }
-
- public Page(RemotePageSummary pageSummary) {
- Id = pageSummary.id;
- Title = pageSummary.title;
- SpaceKey = pageSummary.space;
- Url =pageSummary.url;
- }
- public long Id {
- get;
- set;
- }
- public string Title {
- get;
- set;
- }
- public string Url {
- get;
- set;
- }
- public string Content {
- get;
- set;
- }
- public string SpaceKey {
- get;
- set;
- }
- }
- public class Space {
- public Space(RemoteSpaceSummary space) {
- Key = space.key;
- Name = space.name;
- }
- public string Key {
- get;
- set;
- }
- public string Name {
- get;
- set;
- }
- }
-
- ///
- /// For details see the Confluence API site
- /// See: http://confluence.atlassian.com/display/CONFDEV/Remote+API+Specification
- ///
- public class ConfluenceConnector : IDisposable {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ConfluenceConnector));
- private const string AuthFailedExceptionName = "com.atlassian.confluence.rpc.AuthenticationFailedException";
- private const string V2Failed = "AXIS";
- private static readonly ConfluenceConfiguration Config = IniConfig.GetIniSection();
- private string _credentials;
- private DateTime _loggedInTime = DateTime.Now;
- private bool _loggedIn;
- private ConfluenceSoapServiceService _confluence;
- private readonly int _timeout;
- private string _url;
- private readonly Cache _pageCache = new Cache(60 * Config.Timeout);
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected void Dispose(bool disposing) {
- if (_confluence != null) {
- Logout();
- }
- if (disposing) {
- if (_confluence != null) {
- _confluence.Dispose();
- _confluence = null;
- }
- }
- }
-
- public ConfluenceConnector(string url, int timeout) {
- _timeout = timeout;
- Init(url);
- }
-
- private void Init(string url) {
- _url = url;
- _confluence = new ConfluenceSoapServiceService
- {
- Url = url,
- Proxy = NetworkHelper.CreateProxy(new Uri(url))
- };
- }
-
- ~ConfluenceConnector() {
- Dispose(false);
- }
-
- ///
- /// Internal login which catches the exceptions
- ///
- /// true if login was done sucessfully
- private bool DoLogin(string user, string password) {
- try {
- _credentials = _confluence.login(user, password);
- _loggedInTime = DateTime.Now;
- _loggedIn = true;
- } catch (Exception e) {
- // Check if confluence-v2 caused an error, use v1 instead
- if (e.Message.Contains(V2Failed) && _url.Contains("v2")) {
- Init(_url.Replace("v2", "v1"));
- return DoLogin(user, password);
- }
- // check if auth failed
- if (e.Message.Contains(AuthFailedExceptionName)) {
- return false;
- }
- // Not an authentication issue
- _loggedIn = false;
- _credentials = null;
- e.Data.Add("user", user);
- e.Data.Add("url", _url);
- throw;
- }
- return true;
- }
-
- public void Login() {
- Logout();
- try {
- // Get the system name, so the user knows where to login to
- string systemName = _url.Replace(ConfluenceConfiguration.DEFAULT_POSTFIX1,"");
- systemName = systemName.Replace(ConfluenceConfiguration.DEFAULT_POSTFIX2, "");
- CredentialsDialog dialog = new CredentialsDialog(systemName)
- {
- Name = null
- };
- while (dialog.Show(dialog.Name) == DialogResult.OK) {
- if (DoLogin(dialog.Name, dialog.Password)) {
- if (dialog.SaveChecked) {
- dialog.Confirm(true);
- }
- return;
- } else {
- try {
- dialog.Confirm(false);
- } catch (ApplicationException e) {
- // exception handling ...
- Log.Error("Problem using the credentials dialog", e);
- }
- // For every windows version after XP show an incorrect password baloon
- dialog.IncorrectPassword = true;
- // Make sure the dialog is display, the password was false!
- dialog.AlwaysDisplay = true;
- }
- }
- } catch (ApplicationException e) {
- // exception handling ...
- Log.Error("Problem using the credentials dialog", e);
- }
- }
-
- public void Logout() {
- if (_credentials != null) {
- _confluence.logout(_credentials);
- _credentials = null;
- _loggedIn = false;
- }
- }
-
- private void CheckCredentials() {
- if (_loggedIn) {
- if (_loggedInTime.AddMinutes(_timeout-1).CompareTo(DateTime.Now) < 0) {
- Logout();
- Login();
- }
- } else {
- Login();
- }
- }
-
- public bool IsLoggedIn => _loggedIn;
-
- public void AddAttachment(long pageId, string mime, string comment, string filename, IBinaryContainer image) {
- CheckCredentials();
- // Comment is ignored, see: http://jira.atlassian.com/browse/CONF-9395
- var attachment = new RemoteAttachment
- {
- comment = comment,
- fileName = filename,
- contentType = mime
- };
- _confluence.addAttachment(_credentials, pageId, attachment, image.ToByteArray());
- }
-
- public Page GetPage(string spaceKey, string pageTitle) {
- RemotePage page = null;
- string cacheKey = spaceKey + pageTitle;
- if (_pageCache.Contains(cacheKey)) {
- page = _pageCache[cacheKey];
- }
- if (page == null) {
- CheckCredentials();
- page = _confluence.getPage(_credentials, spaceKey, pageTitle);
- _pageCache.Add(cacheKey, page);
- }
- return new Page(page);
- }
-
- public Page GetPage(long pageId) {
- RemotePage page = null;
- string cacheKey = pageId.ToString();
-
- if (_pageCache.Contains(cacheKey)) {
- page = _pageCache[cacheKey];
- }
- if (page == null) {
- CheckCredentials();
- page = _confluence.getPage(_credentials, pageId);
- _pageCache.Add(cacheKey, page);
- }
- return new Page(page);
- }
-
- public Page GetSpaceHomepage(Space spaceSummary) {
- CheckCredentials();
- RemoteSpace spaceDetail = _confluence.getSpace(_credentials, spaceSummary.Key);
- RemotePage page = _confluence.getPage(_credentials, spaceDetail.homePage);
- return new Page(page);
- }
-
- public IEnumerable GetSpaceSummaries() {
- CheckCredentials();
- RemoteSpaceSummary [] spaces = _confluence.getSpaces(_credentials);
- foreach(RemoteSpaceSummary space in spaces) {
- yield return new Space(space);
- }
- }
-
- public IEnumerable GetPageChildren(Page parentPage) {
- CheckCredentials();
- RemotePageSummary[] pages = _confluence.getChildren(_credentials, parentPage.Id);
- foreach(RemotePageSummary page in pages) {
- yield return new Page(page);
- }
- }
-
- public IEnumerable GetPageSummaries(Space space) {
- CheckCredentials();
- RemotePageSummary[] pages = _confluence.getPages(_credentials, space.Key);
- foreach(RemotePageSummary page in pages) {
- yield return new Page(page);
- }
- }
-
- public IEnumerable SearchPages(string query, string space) {
- CheckCredentials();
- foreach(var searchResult in _confluence.search(_credentials, query, 20)) {
- Log.DebugFormat("Got result of type {0}", searchResult.type);
- if ("page".Equals(searchResult.type))
- {
- yield return new Page(searchResult, space);
- }
- }
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/ConfluenceConfiguration.cs b/GreenshotConfluencePlugin/ConfluenceConfiguration.cs
deleted file mode 100644
index 5a3e7019c..000000000
--- a/GreenshotConfluencePlugin/ConfluenceConfiguration.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotConfluencePlugin {
- ///
- /// Description of ConfluenceConfiguration.
- ///
- [Serializable]
- [IniSection("Confluence", Description="Greenshot Confluence Plugin configuration")]
- public class ConfluenceConfiguration : IniSection {
- public const string DEFAULT_POSTFIX1 = "/rpc/soap-axis/confluenceservice-v1?wsdl";
- public const string DEFAULT_POSTFIX2 = "/rpc/soap-axis/confluenceservice-v2?wsdl";
- public const string DEFAULT_PREFIX = "http://";
- private const string DEFAULT_URL = DEFAULT_PREFIX + "confluence";
-
- [IniProperty("Url", Description="Url to Confluence system, including wsdl.", DefaultValue=DEFAULT_URL)]
- public string Url {
- get;
- set;
- }
- [IniProperty("Timeout", Description="Session timeout in minutes", DefaultValue="30")]
- public int Timeout {
- get;
- set;
- }
-
- [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="png")]
- public OutputFormat UploadFormat {
- get;
- set;
- }
- [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")]
- public int UploadJpegQuality {
- get;
- set;
- }
- [IniProperty("UploadReduceColors", Description="Reduce color amount of the uploaded image to 256", DefaultValue="False")]
- public bool UploadReduceColors {
- get;
- set;
- }
- [IniProperty("OpenPageAfterUpload", Description="Open the page where the picture is uploaded after upload", DefaultValue="True")]
- public bool OpenPageAfterUpload {
- get;
- set;
- }
- [IniProperty("CopyWikiMarkupForImageToClipboard", Description="Copy the Wikimarkup for the recently uploaded image to the Clipboard", DefaultValue="True")]
- public bool CopyWikiMarkupForImageToClipboard {
- get;
- set;
- }
- [IniProperty("SearchSpaceKey", Description="Key of last space that was searched for")]
- public string SearchSpaceKey {
- get;
- set;
- }
- [IniProperty("IncludePersonSpaces", Description = "Include personal spaces in the search & browse spaces list", DefaultValue = "False")]
- public bool IncludePersonSpaces {
- get;
- set;
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/ConfluenceDestination.cs b/GreenshotConfluencePlugin/ConfluenceDestination.cs
deleted file mode 100644
index d7794989a..000000000
--- a/GreenshotConfluencePlugin/ConfluenceDestination.cs
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Threading;
-using System.Windows;
-using GreenshotPlugin.Controls;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotConfluencePlugin {
- ///
- /// Description of ConfluenceDestination.
- ///
- public class ConfluenceDestination : AbstractDestination {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ConfluenceDestination));
- private static readonly ConfluenceConfiguration ConfluenceConfig = IniConfig.GetIniSection();
- private static readonly CoreConfiguration CoreConfig = IniConfig.GetIniSection();
- private static readonly Image ConfluenceIcon;
- private readonly Page _page;
-
- static ConfluenceDestination() {
- IsInitialized = false;
- try {
- Uri confluenceIconUri = new Uri("/GreenshotConfluencePlugin;component/Images/Confluence.ico", UriKind.Relative);
- using (Stream iconStream = Application.GetResourceStream(confluenceIconUri)?.Stream)
- {
- // TODO: Check what to do with the IImage
- ConfluenceIcon = ImageHelper.FromStream(iconStream);
- }
- IsInitialized = true;
- } catch (Exception ex) {
- Log.ErrorFormat("Problem in the confluence static initializer: {0}", ex.Message);
- }
- }
-
- public static bool IsInitialized
- {
- get;
- private set;
- }
-
- public ConfluenceDestination() {
- }
-
- public ConfluenceDestination(Page page) {
- _page = page;
- }
-
- public override string Designation {
- get {
- return "Confluence";
- }
- }
-
- public override string Description {
- get {
- if (_page == null) {
- return Language.GetString("confluence", LangKey.upload_menu_item);
- } else {
- return Language.GetString("confluence", LangKey.upload_menu_item) + ": \"" + _page.Title + "\"";
- }
- }
- }
-
- public override bool IsDynamic {
- get {
- return true;
- }
- }
-
- public override bool IsActive {
- get {
- return base.IsActive && !string.IsNullOrEmpty(ConfluenceConfig.Url);
- }
- }
-
- public override Image DisplayIcon {
- get {
- return ConfluenceIcon;
- }
- }
-
- public override IEnumerable DynamicDestinations() {
- if (ConfluencePlugin.ConfluenceConnectorNoLogin == null || !ConfluencePlugin.ConfluenceConnectorNoLogin.IsLoggedIn) {
- yield break;
- }
- List currentPages = ConfluenceUtils.GetCurrentPages();
- if (currentPages == null || currentPages.Count == 0) {
- yield break;
- }
- foreach(Page currentPage in currentPages) {
- yield return new ConfluenceDestination(currentPage);
- }
- }
-
- public override ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) {
- ExportInformation exportInformation = new ExportInformation(Designation, Description);
- // force password check to take place before the pages load
- if (!ConfluencePlugin.ConfluenceConnector.IsLoggedIn) {
- return exportInformation;
- }
-
- Page selectedPage = _page;
- bool openPage = (_page == null) && ConfluenceConfig.OpenPageAfterUpload;
- string filename = FilenameHelper.GetFilenameWithoutExtensionFromPattern(CoreConfig.OutputFileFilenamePattern, captureDetails);
- if (selectedPage == null) {
- Forms.ConfluenceUpload confluenceUpload = new Forms.ConfluenceUpload(filename);
- bool? dialogResult = confluenceUpload.ShowDialog();
- if (dialogResult.HasValue && dialogResult.Value) {
- selectedPage = confluenceUpload.SelectedPage;
- if (confluenceUpload.IsOpenPageSelected) {
- openPage = false;
- }
- filename = confluenceUpload.Filename;
- }
- }
- string extension = "." + ConfluenceConfig.UploadFormat;
- if (!filename.ToLower().EndsWith(extension)) {
- filename += extension;
- }
- if (selectedPage != null) {
- bool uploaded = Upload(surface, selectedPage, filename, out var errorMessage);
- if (uploaded) {
- if (openPage) {
- try
- {
- Process.Start(selectedPage.Url);
- }
- catch
- {
- // Ignore
- }
- }
- exportInformation.ExportMade = true;
- exportInformation.Uri = selectedPage.Url;
- } else {
- exportInformation.ErrorMessage = errorMessage;
- }
- }
- ProcessExport(exportInformation, surface);
- return exportInformation;
- }
-
- private bool Upload(ISurface surfaceToUpload, Page page, string filename, out string errorMessage) {
- SurfaceOutputSettings outputSettings = new SurfaceOutputSettings(ConfluenceConfig.UploadFormat, ConfluenceConfig.UploadJpegQuality, ConfluenceConfig.UploadReduceColors);
- errorMessage = null;
- try {
- new PleaseWaitForm().ShowAndWait(Description, Language.GetString("confluence", LangKey.communication_wait),
- delegate {
- ConfluencePlugin.ConfluenceConnector.AddAttachment(page.Id, "image/" + ConfluenceConfig.UploadFormat.ToString().ToLower(), null, filename, new SurfaceContainer(surfaceToUpload, outputSettings, filename));
- }
- );
- Log.Debug("Uploaded to Confluence.");
- if (!ConfluenceConfig.CopyWikiMarkupForImageToClipboard)
- {
- return true;
- }
- int retryCount = 2;
- while (retryCount >= 0) {
- try {
- Clipboard.SetText("!" + filename + "!");
- break;
- } catch (Exception ee) {
- if (retryCount == 0) {
- Log.Error(ee);
- } else {
- Thread.Sleep(100);
- }
- } finally {
- --retryCount;
- }
- }
- return true;
- } catch(Exception e) {
- errorMessage = e.Message;
- }
- return false;
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/ConfluencePlugin.cs b/GreenshotConfluencePlugin/ConfluencePlugin.cs
deleted file mode 100644
index f0014f221..000000000
--- a/GreenshotConfluencePlugin/ConfluencePlugin.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using GreenshotPlugin.Core;
-using System;
-using System.Windows;
-using GreenshotConfluencePlugin.Forms;
-using GreenshotConfluencePlugin.Support;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotConfluencePlugin {
- ///
- /// This is the ConfluencePlugin base code
- ///
- [Plugin("Confluence", true)]
- public class ConfluencePlugin : IGreenshotPlugin {
- private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ConfluencePlugin));
- private static ConfluenceConnector _confluenceConnector;
- private static ConfluenceConfiguration _config;
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected void Dispose(bool disposing) {
- //if (disposing) {}
- }
-
- private static void CreateConfluenceConnector() {
- if (_confluenceConnector == null) {
- if (_config.Url.Contains("soap-axis")) {
- _confluenceConnector = new ConfluenceConnector(_config.Url, _config.Timeout);
- } else {
- _confluenceConnector = new ConfluenceConnector(_config.Url + ConfluenceConfiguration.DEFAULT_POSTFIX2, _config.Timeout);
- }
- }
- }
-
- public static ConfluenceConnector ConfluenceConnectorNoLogin {
- get {
- return _confluenceConnector;
- }
- }
-
- public static ConfluenceConnector ConfluenceConnector {
- get {
- if (_confluenceConnector == null) {
- CreateConfluenceConnector();
- }
- try {
- if (_confluenceConnector != null && !_confluenceConnector.IsLoggedIn) {
- _confluenceConnector.Login();
- }
- } catch (Exception e) {
- MessageBox.Show(Language.GetFormattedString("confluence", LangKey.login_error, e.Message));
- }
- return _confluenceConnector;
- }
- }
-
- ///
- /// Implementation of the IGreenshotPlugin.Initialize
- ///
- public bool Initialize() {
- // Register configuration (don't need the configuration itself)
- _config = IniConfig.GetIniSection();
- if(_config.IsDirty) {
- IniConfig.Save();
- }
- try {
- TranslationManager.Instance.TranslationProvider = new LanguageXMLTranslationProvider();
- //resources = new ComponentResourceManager(typeof(ConfluencePlugin));
- } catch (Exception ex) {
- LOG.ErrorFormat("Problem in ConfluencePlugin.Initialize: {0}", ex.Message);
- return false;
- }
- if (ConfluenceDestination.IsInitialized)
- {
- SimpleServiceProvider.Current.AddService(new ConfluenceDestination());
- }
- return true;
- }
-
- public void Shutdown() {
- LOG.Debug("Confluence Plugin shutdown.");
- if (_confluenceConnector != null) {
- _confluenceConnector.Logout();
- _confluenceConnector = null;
- }
- }
-
- ///
- /// Implementation of the IPlugin.Configure
- ///
- public void Configure() {
- ConfluenceConfiguration clonedConfig = _config.Clone();
- ConfluenceConfigurationForm configForm = new ConfluenceConfigurationForm(clonedConfig);
- string url = _config.Url;
- bool? dialogResult = configForm.ShowDialog();
- if (dialogResult.HasValue && dialogResult.Value) {
- // copy the new object to the old...
- clonedConfig.CloneTo(_config);
- IniConfig.Save();
- if (_confluenceConnector != null) {
- if (!url.Equals(_config.Url)) {
- if (_confluenceConnector.IsLoggedIn) {
- _confluenceConnector.Logout();
- }
- _confluenceConnector = null;
- }
- }
- }
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/ConfluenceUtils.cs b/GreenshotConfluencePlugin/ConfluenceUtils.cs
deleted file mode 100644
index ccb808a0f..000000000
--- a/GreenshotConfluencePlugin/ConfluenceUtils.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.RegularExpressions;
-using System.Windows.Automation;
-
-using GreenshotPlugin.Core;
-
-namespace GreenshotConfluencePlugin {
- ///
- /// Description of ConfluenceUtils.
- ///
- public class ConfluenceUtils {
- private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ConfluenceUtils));
-
- public static List GetCurrentPages() {
- List pages = new List();
- Regex pageIdRegex = new Regex(@"pageId=(\d+)");
- Regex spacePageRegex = new Regex(@"\/display\/([^\/]+)\/([^#]+)");
- foreach(string browserurl in GetBrowserUrls()) {
- string url;
- try {
- url = Uri.UnescapeDataString(browserurl).Replace("+", " ");
- } catch {
- LOG.WarnFormat("Error processing URL: {0}", browserurl);
- continue;
- }
- MatchCollection pageIdMatch = pageIdRegex.Matches(url);
- if (pageIdMatch != null && pageIdMatch.Count > 0) {
- long pageId = long.Parse(pageIdMatch[0].Groups[1].Value);
- try {
- bool pageDouble = false;
- foreach(Page page in pages) {
- if (page.Id == pageId) {
- pageDouble = true;
- LOG.DebugFormat("Skipping double page with ID {0}", pageId);
- break;
- }
- }
- if (!pageDouble) {
- Page page = ConfluencePlugin.ConfluenceConnector.GetPage(pageId);
- LOG.DebugFormat("Adding page {0}", page.Title);
- pages.Add(page);
- }
- continue;
- } catch (Exception ex) {
- // Preventing security problems
- LOG.DebugFormat("Couldn't get page details for PageID {0}", pageId);
- LOG.Warn(ex);
- }
- }
- MatchCollection spacePageMatch = spacePageRegex.Matches(url);
- if (spacePageMatch != null && spacePageMatch.Count > 0) {
- if (spacePageMatch[0].Groups.Count >= 2) {
- string space = spacePageMatch[0].Groups[1].Value;
- string title = spacePageMatch[0].Groups[2].Value;
- if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(space)) {
- continue;
- }
- if (title.EndsWith("#")) {
- title = title.Substring(0, title.Length-1);
- }
- try {
- bool pageDouble = false;
- foreach(Page page in pages) {
- if (page.Title.Equals(title)) {
- LOG.DebugFormat("Skipping double page with title {0}", title);
- pageDouble = true;
- break;
- }
- }
- if (!pageDouble) {
- Page page = ConfluencePlugin.ConfluenceConnector.GetPage(space, title);
- LOG.DebugFormat("Adding page {0}", page.Title);
- pages.Add(page);
-
- }
- } catch (Exception ex) {
- // Preventing security problems
- LOG.DebugFormat("Couldn't get page details for space {0} / title {1}", space, title);
- LOG.Warn(ex);
- }
- }
- }
- }
- return pages;
- }
-
- private static IEnumerable GetBrowserUrls() {
- HashSet urls = new HashSet();
-
- // FireFox
- foreach (WindowDetails window in WindowDetails.GetAllWindows("MozillaWindowClass")) {
- if (window.Text.Length == 0) {
- continue;
- }
- AutomationElement currentElement = AutomationElement.FromHandle(window.Handle);
- Condition conditionCustom = new AndCondition(new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Custom), new PropertyCondition(AutomationElement.IsOffscreenProperty, false));
- for (int i = 5; i > 0 && currentElement != null; i--) {
- currentElement = currentElement.FindFirst(TreeScope.Children, conditionCustom);
- }
- if (currentElement == null) {
- continue;
- }
-
- Condition conditionDocument = new AndCondition(new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document), new PropertyCondition(AutomationElement.IsOffscreenProperty, false));
- AutomationElement docElement = currentElement.FindFirst(TreeScope.Children, conditionDocument);
- if (docElement == null) {
- continue;
- }
- foreach (AutomationPattern pattern in docElement.GetSupportedPatterns()) {
- if (pattern.ProgrammaticName != "ValuePatternIdentifiers.Pattern") {
- continue;
- }
- string url = (docElement.GetCurrentPattern(pattern) as ValuePattern).Current.Value;
- if (!string.IsNullOrEmpty(url)) {
- urls.Add(url);
- break;
- }
- }
- }
-
- foreach(string url in IEHelper.GetIEUrls().Distinct()) {
- urls.Add(url);
- }
-
- return urls;
- }
-
- }
-}
diff --git a/GreenshotConfluencePlugin/EnumDisplayer.cs b/GreenshotConfluencePlugin/EnumDisplayer.cs
deleted file mode 100644
index 84ca2925e..000000000
--- a/GreenshotConfluencePlugin/EnumDisplayer.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Globalization;
-using System.Reflection;
-using System.Windows.Data;
-
-using GreenshotPlugin.Core;
-
-namespace GreenshotConfluencePlugin {
- public class EnumDisplayer : IValueConverter {
- private Type _type;
- private IDictionary _displayValues;
- private IDictionary _reverseValues;
-
- public EnumDisplayer() {
- }
-
- public EnumDisplayer(Type type) {
- Type = type;
- }
-
- public Type Type {
- get { return _type; }
- set {
- if (!value.IsEnum) {
- throw new ArgumentException("parameter is not an Enumerated type", nameof(value));
- }
- _type = value;
- }
- }
-
- public ReadOnlyCollection DisplayNames {
- get {
- var genericTypeDefinition = typeof(Dictionary<,>).GetGenericTypeDefinition();
- if (genericTypeDefinition != null)
- {
- _reverseValues = (IDictionary) Activator.CreateInstance(genericTypeDefinition.MakeGenericType(typeof(string),_type));
- }
-
- var typeDefinition = typeof(Dictionary<,>).GetGenericTypeDefinition();
- if (typeDefinition != null)
- {
- _displayValues = (IDictionary)Activator.CreateInstance(typeDefinition.MakeGenericType(_type, typeof(string)));
- }
-
- var fields = _type.GetFields(BindingFlags.Public | BindingFlags.Static);
- foreach (var field in fields) {
- DisplayKeyAttribute[] a = (DisplayKeyAttribute[])field.GetCustomAttributes(typeof(DisplayKeyAttribute), false);
-
- string displayKey = GetDisplayKeyValue(a);
- object enumValue = field.GetValue(null);
-
- string displayString;
- if (displayKey != null && Language.HasKey(displayKey)) {
- displayString = Language.GetString(displayKey);
- }
- displayString = displayKey ?? enumValue.ToString();
-
- _displayValues.Add(enumValue, displayString);
- _reverseValues.Add(displayString, enumValue);
- }
- return new List((IEnumerable)_displayValues.Values).AsReadOnly();
- }
- }
-
- private static string GetDisplayKeyValue(DisplayKeyAttribute[] a) {
- if (a == null || a.Length == 0) {
- return null;
- }
- DisplayKeyAttribute dka = a[0];
- return dka.Value;
- }
-
- object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) {
- return _displayValues[value];
- }
-
- object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
- return _reverseValues[value];
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/Forms/ConfluencePagePicker.xaml.cs b/GreenshotConfluencePlugin/Forms/ConfluencePagePicker.xaml.cs
deleted file mode 100644
index 4f2723c89..000000000
--- a/GreenshotConfluencePlugin/Forms/ConfluencePagePicker.xaml.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.Collections.Generic;
-
-namespace GreenshotConfluencePlugin.Forms {
- ///
- /// Interaction logic for ConfluencePagePicker.xaml
- ///
- public partial class ConfluencePagePicker
- {
- private readonly ConfluenceUpload _confluenceUpload;
-
- public ConfluencePagePicker(ConfluenceUpload confluenceUpload, List pagesToPick) {
- _confluenceUpload = confluenceUpload;
- DataContext = pagesToPick;
- InitializeComponent();
- }
-
- private void PageListView_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) {
- SelectionChanged();
- }
-
- private void SelectionChanged() {
- if (PageListView.HasItems && PageListView.SelectedItems.Count > 0) {
- _confluenceUpload.SelectedPage = (Page)PageListView.SelectedItem;
- // Make sure the uploader knows we selected an already opened page
- _confluenceUpload.IsOpenPageSelected = true;
- } else {
- _confluenceUpload.SelectedPage = null;
- }
- }
-
- private void Page_Loaded(object sender, System.Windows.RoutedEventArgs e) {
- SelectionChanged();
- }
- }
-}
\ No newline at end of file
diff --git a/GreenshotConfluencePlugin/Forms/ConfluenceSearch.xaml.cs b/GreenshotConfluencePlugin/Forms/ConfluenceSearch.xaml.cs
deleted file mode 100644
index 0702ddff7..000000000
--- a/GreenshotConfluencePlugin/Forms/ConfluenceSearch.xaml.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Windows;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotConfluencePlugin.Forms {
- public partial class ConfluenceSearch
- {
- private static readonly ConfluenceConfiguration ConfluenceConfig = IniConfig.GetIniSection();
- private readonly ConfluenceUpload _confluenceUpload;
-
- public IEnumerable Spaces => _confluenceUpload.Spaces;
-
- public ObservableCollection Pages { get; } = new ObservableCollection();
-
- public ConfluenceSearch(ConfluenceUpload confluenceUpload) {
- _confluenceUpload = confluenceUpload;
- DataContext = this;
- InitializeComponent();
- if (ConfluenceConfig.SearchSpaceKey == null) {
- SpaceComboBox.SelectedItem = Spaces.FirstOrDefault();
- } else {
- foreach(var space in Spaces) {
- if (space.Key.Equals(ConfluenceConfig.SearchSpaceKey)) {
- SpaceComboBox.SelectedItem = space;
- }
- }
- }
- }
-
- private void PageListView_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) {
- SelectionChanged();
- }
-
- private void SelectionChanged() {
- if (PageListView.HasItems && PageListView.SelectedItems.Count > 0) {
- _confluenceUpload.SelectedPage = (Page)PageListView.SelectedItem;
- } else {
- _confluenceUpload.SelectedPage = null;
- }
- }
-
- private void Search_Click(object sender, RoutedEventArgs e) {
- DoSearch();
- }
-
- private void DoSearch() {
- string spaceKey = (string)SpaceComboBox.SelectedValue;
- ConfluenceConfig.SearchSpaceKey = spaceKey;
- Pages.Clear();
- foreach(var page in ConfluencePlugin.ConfluenceConnector.SearchPages(searchText.Text, spaceKey).OrderBy(p => p.Title)) {
- Pages.Add(page);
- }
- }
-
- private void SearchText_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) {
- if (e.Key == System.Windows.Input.Key.Return && Search.IsEnabled) {
- DoSearch();
- e.Handled = true;
- }
- }
-
- private void Page_Loaded(object sender, RoutedEventArgs e) {
- SelectionChanged();
- }
-
- private void SearchText_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) {
- Search.IsEnabled = !string.IsNullOrEmpty(searchText.Text);
- }
- }
-}
\ No newline at end of file
diff --git a/GreenshotConfluencePlugin/Forms/ConfluenceTreePicker.xaml.cs b/GreenshotConfluencePlugin/Forms/ConfluenceTreePicker.xaml.cs
deleted file mode 100644
index 1897a8f53..000000000
--- a/GreenshotConfluencePlugin/Forms/ConfluenceTreePicker.xaml.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Linq;
-using System.Threading;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Threading;
-
-namespace GreenshotConfluencePlugin.Forms {
- ///
- /// Interaction logic for ConfluenceTreePicker.xaml
- ///
- public partial class ConfluenceTreePicker
- {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ConfluenceTreePicker));
- private readonly ConfluenceConnector _confluenceConnector;
- private readonly ConfluenceUpload _confluenceUpload;
- private bool _isInitDone;
-
- public ConfluenceTreePicker(ConfluenceUpload confluenceUpload) {
- _confluenceConnector = ConfluencePlugin.ConfluenceConnector;
- _confluenceUpload = confluenceUpload;
- InitializeComponent();
- }
-
- private void PageTreeViewItem_DoubleClick(object sender, MouseButtonEventArgs eventArgs) {
- Log.Debug("spaceTreeViewItem_MouseLeftButtonDown is called!");
- TreeViewItem clickedItem = eventArgs.Source as TreeViewItem;
- if (clickedItem?.Tag is not Page page) {
- return;
- }
- if (clickedItem.HasItems)
- {
- return;
- }
- Log.Debug("Loading pages for page: " + page.Title);
- new Thread(() => {
- Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)(() => {ShowBusy.Visibility = Visibility.Visible;}));
- var pages = _confluenceConnector.GetPageChildren(page).OrderBy(p => p.Title);
- Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)(() => {
- foreach(var childPage in pages) {
- Log.Debug("Adding page: " + childPage.Title);
- var pageTreeViewItem = new TreeViewItem
- {
- Header = childPage.Title,
- Tag = childPage
- };
- clickedItem.Items.Add(pageTreeViewItem);
- pageTreeViewItem.PreviewMouseDoubleClick += PageTreeViewItem_DoubleClick;
- pageTreeViewItem.PreviewMouseLeftButtonDown += PageTreeViewItem_Click;
- }
- ShowBusy.Visibility = Visibility.Collapsed;
- }));
- }) { Name = "Loading childpages for confluence page " + page.Title }.Start();
- }
-
- private void PageTreeViewItem_Click(object sender, MouseButtonEventArgs eventArgs) {
- Log.Debug("pageTreeViewItem_PreviewMouseDoubleClick is called!");
- if (eventArgs.Source is not TreeViewItem clickedItem) {
- return;
- }
- Page page = clickedItem.Tag as Page;
- _confluenceUpload.SelectedPage = page;
- if (page != null) {
- Log.Debug("Page selected: " + page.Title);
- }
- }
-
- private void Page_Loaded(object sender, RoutedEventArgs e) {
- _confluenceUpload.SelectedPage = null;
- if (_isInitDone) {
- return;
- }
- ShowBusy.Visibility = Visibility.Visible;
- new Thread(() => {
- Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)(() => {
- foreach (Space space in _confluenceUpload.Spaces) {
- TreeViewItem spaceTreeViewItem = new TreeViewItem
- {
- Header = space.Name,
- Tag = space
- };
-
- // Get homepage
- try {
- Page page = _confluenceConnector.GetSpaceHomepage(space);
- TreeViewItem pageTreeViewItem = new TreeViewItem
- {
- Header = page.Title,
- Tag = page
- };
- pageTreeViewItem.PreviewMouseDoubleClick += PageTreeViewItem_DoubleClick;
- pageTreeViewItem.PreviewMouseLeftButtonDown += PageTreeViewItem_Click;
- spaceTreeViewItem.Items.Add(pageTreeViewItem);
- ConfluenceTreeView.Items.Add(spaceTreeViewItem);
- } catch (Exception ex) {
- Log.Error("Can't get homepage for space : " + space.Name + " (" + ex.Message + ")");
- }
- }
- ShowBusy.Visibility = Visibility.Collapsed;
- _isInitDone = true;
- }));
- }) { Name = "Loading spaces for confluence"}.Start();
- }
- }
-}
\ No newline at end of file
diff --git a/GreenshotConfluencePlugin/Forms/ConfluenceUpload.xaml.cs b/GreenshotConfluencePlugin/Forms/ConfluenceUpload.xaml.cs
deleted file mode 100644
index 291581a2b..000000000
--- a/GreenshotConfluencePlugin/Forms/ConfluenceUpload.xaml.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Windows;
-
-namespace GreenshotConfluencePlugin.Forms {
- ///
- /// Interaction logic for ConfluenceUpload.xaml
- ///
- public partial class ConfluenceUpload : Window {
- private System.Windows.Controls.Page _pickerPage;
- public System.Windows.Controls.Page PickerPage {
- get {
- if (_pickerPage == null) {
- List pages = ConfluenceUtils.GetCurrentPages();
- if (pages != null && pages.Count > 0) {
- _pickerPage = new ConfluencePagePicker(this, pages);
- }
- }
- return _pickerPage;
- }
- }
-
- private System.Windows.Controls.Page _searchPage;
- public System.Windows.Controls.Page SearchPage {
- get { return _searchPage ??= new ConfluenceSearch(this); }
- }
-
- private System.Windows.Controls.Page _browsePage;
- public System.Windows.Controls.Page BrowsePage {
- get { return _browsePage ??= new ConfluenceTreePicker(this); }
- }
-
- private Page _selectedPage;
- public Page SelectedPage {
- get => _selectedPage;
- set {
- _selectedPage = value;
- Upload.IsEnabled = _selectedPage != null;
- IsOpenPageSelected = false;
- }
- }
-
- public bool IsOpenPageSelected {
- get;
- set;
- }
- public string Filename {
- get;
- set;
- }
-
- private static DateTime _lastLoad = DateTime.Now;
- private static IList _spaces;
- public IList Spaces {
- get {
- UpdateSpaces();
- while (_spaces == null) {
- Thread.Sleep(300);
- }
- return _spaces;
- }
- }
-
- public ConfluenceUpload(string filename) {
- Filename = filename;
- InitializeComponent();
- DataContext = this;
- UpdateSpaces();
- if (PickerPage == null) {
- PickerTab.Visibility = Visibility.Collapsed;
- SearchTab.IsSelected = true;
- }
- }
-
- private void UpdateSpaces() {
- if (_spaces != null && DateTime.Now.AddMinutes(-60).CompareTo(_lastLoad) > 0) {
- // Reset
- _spaces = null;
- }
- // Check if load is needed
- if (_spaces == null) {
- (new Thread(() => {
- _spaces = ConfluencePlugin.ConfluenceConnector.GetSpaceSummaries().OrderBy(s => s.Name).ToList();
- _lastLoad = DateTime.Now;
- }) { Name = "Loading spaces for confluence"}).Start();
- }
- }
-
- private void Upload_Click(object sender, RoutedEventArgs e) {
- DialogResult = true;
- }
- }
-}
\ No newline at end of file
diff --git a/GreenshotConfluencePlugin/LanguageKeys.cs b/GreenshotConfluencePlugin/LanguageKeys.cs
deleted file mode 100644
index 9cd71ea8e..000000000
--- a/GreenshotConfluencePlugin/LanguageKeys.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace GreenshotConfluencePlugin {
- public enum LangKey {
- login_error,
- login_title,
- label_url,
- label_upload_format,
- OK,
- CANCEL,
- upload_menu_item,
- upload_success,
- upload_failure,
- communication_wait
- }
-}
diff --git a/GreenshotConfluencePlugin/Support/LanguageXMLTranslationProvider.cs b/GreenshotConfluencePlugin/Support/LanguageXMLTranslationProvider.cs
deleted file mode 100644
index 23dbc4fc1..000000000
--- a/GreenshotConfluencePlugin/Support/LanguageXMLTranslationProvider.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using GreenshotPlugin.Core;
-
-namespace GreenshotConfluencePlugin.Support {
- ///
- ///
- ///
- public class LanguageXMLTranslationProvider : ITranslationProvider {
- ///
- /// See
- ///
- public object Translate(string key) {
- if (Language.HasKey("confluence", key)) {
- return Language.GetString("confluence", key);
- }
- return key;
- }
- }
-}
diff --git a/GreenshotConfluencePlugin/Support/TranslationData.cs b/GreenshotConfluencePlugin/Support/TranslationData.cs
deleted file mode 100644
index 0b6371505..000000000
--- a/GreenshotConfluencePlugin/Support/TranslationData.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Windows;
-
-namespace GreenshotConfluencePlugin.Support {
- public class TranslationData : IWeakEventListener, INotifyPropertyChanged {
- private readonly string _key;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The key.
- public TranslationData( string key) {
- _key = key;
- LanguageChangedEventManager.AddListener(TranslationManager.Instance, this);
- }
-
- ///
- /// Releases unmanaged resources and performs other cleanup operations before the
- /// is reclaimed by garbage collection.
- ///
- ~TranslationData() {
- LanguageChangedEventManager.RemoveListener(TranslationManager.Instance, this);
- }
-
- public object Value => TranslationManager.Instance.Translate(_key);
-
- public bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e)
- {
- if (managerType == typeof(LanguageChangedEventManager))
- {
- OnLanguageChanged(sender, e);
- return true;
- }
- return false;
- }
-
- private void OnLanguageChanged(object sender, EventArgs e)
- {
- PropertyChanged?.Invoke( this, new PropertyChangedEventArgs("Value"));
- }
-
- public event PropertyChangedEventHandler PropertyChanged;
- }
-}
diff --git a/GreenshotConfluencePlugin/Support/TranslationManager.cs b/GreenshotConfluencePlugin/Support/TranslationManager.cs
deleted file mode 100644
index 241cce868..000000000
--- a/GreenshotConfluencePlugin/Support/TranslationManager.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-
-namespace GreenshotConfluencePlugin.Support {
- public class TranslationManager {
- private static TranslationManager _translationManager;
-
- public event EventHandler LanguageChanged;
-
- /*public CultureInfo CurrentLanguage {
- get { return Thread.CurrentThread.CurrentUICulture; }
- set {
- if( value != Thread.CurrentThread.CurrentUICulture) {
- Thread.CurrentThread.CurrentUICulture = value;
- OnLanguageChanged();
- }
- }
- }
-
- public IEnumerable Languages {
- get {
- if( TranslationProvider != null) {
- return TranslationProvider.Languages;
- }
- return Enumerable.Empty();
- }
- }*/
-
- public static TranslationManager Instance => _translationManager ??= new TranslationManager();
-
- public ITranslationProvider TranslationProvider { get; set; }
-
- private void OnLanguageChanged()
- {
- LanguageChanged?.Invoke(this, EventArgs.Empty);
- }
-
- public object Translate(string key) {
- object translatedValue = TranslationProvider?.Translate(key);
- if( translatedValue != null) {
- return translatedValue;
- }
- return $"!{key}!";
- }
- }
-}
diff --git a/GreenshotDropboxPlugin/DropboxDestination.cs b/GreenshotDropboxPlugin/DropboxDestination.cs
deleted file mode 100644
index 57d0a1326..000000000
--- a/GreenshotDropboxPlugin/DropboxDestination.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.ComponentModel;
-using System.Drawing;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-
-namespace GreenshotDropboxPlugin {
- internal class DropboxDestination : AbstractDestination {
- private static readonly DropboxPluginConfiguration DropboxConfig = IniConfig.GetIniSection();
-
- private readonly DropboxPlugin _plugin;
- public DropboxDestination(DropboxPlugin plugin) {
- _plugin = plugin;
- }
-
- public override string Designation => "Dropbox";
-
- public override string Description => Language.GetString("dropbox", LangKey.upload_menu_item);
-
- public override Image DisplayIcon {
- get {
- ComponentResourceManager resources = new ComponentResourceManager(typeof(DropboxPlugin));
- return (Image)resources.GetObject("Dropbox");
- }
- }
-
- public override ExportInformation ExportCapture(bool manually, ISurface surface, ICaptureDetails captureDetails) {
- ExportInformation exportInformation = new ExportInformation(Designation, Description);
- bool uploaded = _plugin.Upload(captureDetails, surface, out var uploadUrl);
- if (uploaded) {
- exportInformation.Uri = uploadUrl;
- exportInformation.ExportMade = true;
- if (DropboxConfig.AfterUploadLinkToClipBoard) {
- ClipboardHelper.SetClipboardData(uploadUrl);
- }
- }
- ProcessExport(exportInformation, surface);
- return exportInformation;
- }
- }
-}
diff --git a/GreenshotDropboxPlugin/DropboxPlugin.cs b/GreenshotDropboxPlugin/DropboxPlugin.cs
deleted file mode 100644
index 0d3ca827d..000000000
--- a/GreenshotDropboxPlugin/DropboxPlugin.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.IO;
-using System.Windows.Forms;
-using GreenshotPlugin.Controls;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotDropboxPlugin {
- ///
- /// This is the Dropbox base code
- ///
- [Plugin("Dropbox", true)]
- public class DropboxPlugin : IGreenshotPlugin {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(DropboxPlugin));
- private static DropboxPluginConfiguration _config;
- private ComponentResourceManager _resources;
- private ToolStripMenuItem _itemPlugInConfig;
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected void Dispose(bool disposing) {
- if (disposing) {
- if (_itemPlugInConfig != null) {
- _itemPlugInConfig.Dispose();
- _itemPlugInConfig = null;
- }
- }
- }
-
- ///
- /// Implementation of the IGreenshotPlugin.Initialize
- ///
- public bool Initialize() {
-
- // Register configuration (don't need the configuration itself)
- _config = IniConfig.GetIniSection();
- _resources = new ComponentResourceManager(typeof(DropboxPlugin));
- SimpleServiceProvider.Current.AddService(new DropboxDestination(this));
- _itemPlugInConfig = new ToolStripMenuItem
- {
- Text = Language.GetString("dropbox", LangKey.Configure),
- Image = (Image)_resources.GetObject("Dropbox")
- };
- _itemPlugInConfig.Click += ConfigMenuClick;
-
- PluginUtils.AddToContextMenu(_itemPlugInConfig);
- Language.LanguageChanged += OnLanguageChanged;
- return true;
- }
-
- public void OnLanguageChanged(object sender, EventArgs e) {
- if (_itemPlugInConfig != null) {
- _itemPlugInConfig.Text = Language.GetString("dropbox", LangKey.Configure);
- }
- }
-
- public void Shutdown() {
- Log.Debug("Dropbox Plugin shutdown.");
- }
-
- ///
- /// Implementation of the IPlugin.Configure
- ///
- public void Configure() {
- _config.ShowConfigDialog();
- }
-
- public void ConfigMenuClick(object sender, EventArgs eventArgs) {
- _config.ShowConfigDialog();
- }
-
- ///
- /// This will be called when the menu item in the Editor is clicked
- ///
- public bool Upload(ICaptureDetails captureDetails, ISurface surfaceToUpload, out string uploadUrl) {
- uploadUrl = null;
- SurfaceOutputSettings outputSettings = new SurfaceOutputSettings(_config.UploadFormat, _config.UploadJpegQuality, false);
- try {
- string dropboxUrl = null;
- new PleaseWaitForm().ShowAndWait("Dropbox", Language.GetString("dropbox", LangKey.communication_wait),
- delegate
- {
- string filename = Path.GetFileName(FilenameHelper.GetFilename(_config.UploadFormat, captureDetails));
- dropboxUrl = DropboxUtils.UploadToDropbox(surfaceToUpload, outputSettings, filename);
- }
- );
- if (dropboxUrl == null) {
- return false;
- }
- uploadUrl = dropboxUrl;
- return true;
- } catch (Exception e) {
- Log.Error(e);
- MessageBox.Show(Language.GetString("dropbox", LangKey.upload_failure) + " " + e.Message);
- return false;
- }
- }
- }
-}
diff --git a/GreenshotDropboxPlugin/DropboxPluginConfiguration.cs b/GreenshotDropboxPlugin/DropboxPluginConfiguration.cs
deleted file mode 100644
index 52baabdef..000000000
--- a/GreenshotDropboxPlugin/DropboxPluginConfiguration.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.Windows.Forms;
-using GreenshotDropboxPlugin.Forms;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-
-namespace GreenshotDropboxPlugin {
- ///
- /// Description of ImgurConfiguration.
- ///
- [IniSection("Dropbox", Description = "Greenshot Dropbox Plugin configuration")]
- public class DropboxPluginConfiguration : IniSection {
- [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="png")]
- public OutputFormat UploadFormat { get; set; }
-
- [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")]
- public int UploadJpegQuality { get; set; }
-
- [IniProperty("AfterUploadLinkToClipBoard", Description = "After upload send Dropbox link to clipboard.", DefaultValue = "true")]
- public bool AfterUploadLinkToClipBoard { get; set; }
-
- [IniProperty("DropboxToken", Description = "The Dropbox token", Encrypted = true, ExcludeIfNull = true)]
- public string DropboxToken { get; set; }
- [IniProperty("DropboxTokenSecret", Description = "The Dropbox token secret", Encrypted = true, ExcludeIfNull = true)]
- public string DropboxTokenSecret { get; set; }
-
- ///
- /// A form for token
- ///
- /// bool true if OK was pressed, false if cancel
- public bool ShowConfigDialog() {
- DialogResult result = new SettingsForm().ShowDialog();
- if (result == DialogResult.OK) {
- return true;
- }
- return false;
- }
- }
-}
diff --git a/GreenshotDropboxPlugin/DropboxUtils.cs b/GreenshotDropboxPlugin/DropboxUtils.cs
deleted file mode 100644
index 717b41fe3..000000000
--- a/GreenshotDropboxPlugin/DropboxUtils.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotDropboxPlugin {
- ///
- /// Description of DropboxUtils.
- ///
- public class DropboxUtils {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(DropboxUtils));
- private static readonly DropboxPluginConfiguration DropboxConfig = IniConfig.GetIniSection();
-
- private DropboxUtils() {
- }
-
- public static string UploadToDropbox(ISurface surfaceToUpload, SurfaceOutputSettings outputSettings, string filename) {
- var oAuth = new OAuthSession(DropBoxCredentials.CONSUMER_KEY, DropBoxCredentials.CONSUMER_SECRET)
- {
- BrowserSize = new Size(1080, 650),
- CheckVerifier = false,
- AccessTokenUrl = "https://api.dropbox.com/1/oauth/access_token",
- AuthorizeUrl = "https://api.dropbox.com/1/oauth/authorize",
- RequestTokenUrl = "https://api.dropbox.com/1/oauth/request_token",
- LoginTitle = "Dropbox authorization",
- Token = DropboxConfig.DropboxToken,
- TokenSecret = DropboxConfig.DropboxTokenSecret
- };
-
- try {
- SurfaceContainer imageToUpload = new SurfaceContainer(surfaceToUpload, outputSettings, filename);
- string uploadResponse = oAuth.MakeOAuthRequest(HTTPMethod.POST, "https://api-content.dropbox.com/1/files_put/sandbox/" + OAuthSession.UrlEncode3986(filename), null, null, imageToUpload);
- Log.DebugFormat("Upload response: {0}", uploadResponse);
- } catch (Exception ex) {
- Log.Error("Upload error: ", ex);
- throw;
- } finally {
- if (!string.IsNullOrEmpty(oAuth.Token)) {
- DropboxConfig.DropboxToken = oAuth.Token;
- }
- if (!string.IsNullOrEmpty(oAuth.TokenSecret)) {
- DropboxConfig.DropboxTokenSecret = oAuth.TokenSecret;
- }
- }
-
- // Try to get a URL to the uploaded image
- try {
- string responseString = oAuth.MakeOAuthRequest(HTTPMethod.GET, "https://api.dropbox.com/1/shares/sandbox/" + OAuthSession.UrlEncode3986(filename), null, null, null);
- if (responseString != null) {
- Log.DebugFormat("Parsing output: {0}", responseString);
- IDictionary returnValues = JSONHelper.JsonDecode(responseString);
- if (returnValues.ContainsKey("url")) {
- return returnValues["url"] as string;
- }
- }
- } catch (Exception ex) {
- Log.Error("Can't parse response.", ex);
- }
- return null;
- }
- }
-}
diff --git a/GreenshotDropboxPlugin/Forms/SettingsForm.cs b/GreenshotDropboxPlugin/Forms/SettingsForm.cs
deleted file mode 100644
index 98e1147ce..000000000
--- a/GreenshotDropboxPlugin/Forms/SettingsForm.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-namespace GreenshotDropboxPlugin.Forms {
- ///
- /// Description of PasswordRequestForm.
- ///
- public partial class SettingsForm : DropboxForm {
- public SettingsForm() {
- //
- // The InitializeComponent() call is required for Windows Forms designer support.
- //
- InitializeComponent();
- AcceptButton = buttonOK;
- CancelButton = buttonCancel;
- }
-
- }
-}
diff --git a/GreenshotDropboxPlugin/LanguageKeys.cs b/GreenshotDropboxPlugin/LanguageKeys.cs
deleted file mode 100644
index d50660add..000000000
--- a/GreenshotDropboxPlugin/LanguageKeys.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-namespace GreenshotDropboxPlugin {
- public enum LangKey {
- upload_menu_item,
- settings_title,
- label_upload_format,
- upload_success,
- upload_failure,
- communication_wait,
- Configure,
- label_AfterUpload,
- label_AfterUploadLinkToClipBoard
- }
-}
diff --git a/GreenshotExternalCommandPlugin/ExternalCommandConfiguration.cs b/GreenshotExternalCommandPlugin/ExternalCommandConfiguration.cs
deleted file mode 100644
index f8981b820..000000000
--- a/GreenshotExternalCommandPlugin/ExternalCommandConfiguration.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// Description of FlickrConfiguration.
- ///
- [IniSection("ExternalCommand", Description="Greenshot ExternalCommand Plugin configuration")]
- public class ExternalCommandConfiguration : IniSection {
- [IniProperty("Commands", Description="The commands that are available.")]
- public List Commands { get; set; }
-
- [IniProperty("RedirectStandardError", Description = "Redirect the standard error of all external commands, used to output as warning to the greenshot.log.", DefaultValue = "true")]
- public bool RedirectStandardError { get; set; }
-
- [IniProperty("RedirectStandardOutput", Description = "Redirect the standard output of all external commands, used for different other functions (more below).", DefaultValue = "true")]
- public bool RedirectStandardOutput { get; set; }
-
- [IniProperty("ShowStandardOutputInLog", Description = "Depends on 'RedirectStandardOutput': Show standard output of all external commands to the Greenshot log, this can be usefull for debugging.", DefaultValue = "false")]
- public bool ShowStandardOutputInLog { get; set; }
-
- [IniProperty("ParseForUri", Description = "Depends on 'RedirectStandardOutput': Parse the output and take the first found URI, if a URI is found than clicking on the notify bubble goes there.", DefaultValue = "true")]
- public bool ParseOutputForUri { get; set; }
-
- [IniProperty("OutputToClipboard", Description = "Depends on 'RedirectStandardOutput': Place the standard output on the clipboard.", DefaultValue = "false")]
- public bool OutputToClipboard { get; set; }
-
- [IniProperty("UriToClipboard", Description = "Depends on 'RedirectStandardOutput' & 'ParseForUri': If an URI is found in the standard input, place it on the clipboard. (This overwrites the output from OutputToClipboard setting.)", DefaultValue = "true")]
- public bool UriToClipboard { get; set; }
-
- [IniProperty("Commandline", Description="The commandline for the output command.")]
- public Dictionary Commandline { get; set; }
-
- [IniProperty("Argument", Description="The arguments for the output command.")]
- public Dictionary Argument { get; set; }
-
- [IniProperty("RunInbackground", Description = "Should the command be started in the background.")]
- public Dictionary RunInbackground { get; set; }
-
- [IniProperty("DeletedBuildInCommands", Description = "If a build in command was deleted manually, it should not be recreated.")]
- public List DeletedBuildInCommands { get; set; }
-
- private const string MsPaint = "MS Paint";
- private static readonly string PaintPath;
- private static readonly bool HasPaint;
-
- private const string PaintDotNet = "Paint.NET";
- private static readonly string PaintDotNetPath;
- private static readonly bool HasPaintDotNet;
- static ExternalCommandConfiguration() {
- try {
- PaintPath = PluginUtils.GetExePath("pbrush.exe");
- HasPaint = !string.IsNullOrEmpty(PaintPath) && File.Exists(PaintPath);
- } catch {
- // Ignore
- }
- try
- {
- PaintDotNetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), @"Paint.NET\PaintDotNet.exe");
- HasPaintDotNet = !string.IsNullOrEmpty(PaintDotNetPath) && File.Exists(PaintDotNetPath);
- }
- catch
- {
- // Ignore
- }
- }
-
- ///
- /// Delete the configuration for the specified command
- ///
- /// string with command
- public void Delete(string command)
- {
- if (string.IsNullOrEmpty(command))
- {
- return;
- }
- Commands.Remove(command);
- Commandline.Remove(command);
- Argument.Remove(command);
- RunInbackground.Remove(command);
- if (MsPaint.Equals(command) || PaintDotNet.Equals(command))
- {
- if (!DeletedBuildInCommands.Contains(command))
- {
- DeletedBuildInCommands.Add(command);
- }
- }
- }
-
- public override void AfterLoad()
- {
- base.AfterLoad();
-
- // Check if we need to add MsPaint
- if (HasPaint && !Commands.Contains(MsPaint) && !DeletedBuildInCommands.Contains(MsPaint))
- {
- Commands.Add(MsPaint);
- Commandline.Add(MsPaint, PaintPath);
- Argument.Add(MsPaint, "\"{0}\"");
- RunInbackground.Add(MsPaint, true);
- }
-
- // Check if we need to add Paint.NET
- if (HasPaintDotNet && !Commands.Contains(PaintDotNet) && !DeletedBuildInCommands.Contains(PaintDotNet))
- {
- Commands.Add(PaintDotNet);
- Commandline.Add(PaintDotNet, PaintDotNetPath);
- Argument.Add(PaintDotNet, "\"{0}\"");
- RunInbackground.Add(PaintDotNet, true);
- }
- }
-
- ///
- /// Supply values we can't put as defaults
- ///
- /// The property to return a default for
- /// object with the default value for the supplied property
- public override object GetDefault(string property) =>
- property switch
- {
- nameof(DeletedBuildInCommands) => (object) new List(),
- nameof(Commands) => new List(),
- nameof(Commandline) => new Dictionary(),
- nameof(Argument) => new Dictionary(),
- nameof(RunInbackground) => new Dictionary(),
- _ => null
- };
- }
-}
diff --git a/GreenshotExternalCommandPlugin/ExternalCommandDestination.cs b/GreenshotExternalCommandPlugin/ExternalCommandDestination.cs
deleted file mode 100644
index 81575c947..000000000
--- a/GreenshotExternalCommandPlugin/ExternalCommandDestination.cs
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Drawing;
-using System.Text.RegularExpressions;
-using System.Threading;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// Description of OCRDestination.
- ///
- public class ExternalCommandDestination : AbstractDestination {
- private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(ExternalCommandDestination));
- private static readonly Regex URI_REGEXP = new Regex(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)");
- private static readonly ExternalCommandConfiguration config = IniConfig.GetIniSection();
- private readonly string _presetCommand;
-
- public ExternalCommandDestination(string commando) {
- _presetCommand = commando;
- }
-
- public override string Designation => "External " + _presetCommand.Replace(',','_');
-
- public override string Description => _presetCommand;
-
- public override IEnumerable DynamicDestinations() {
- yield break;
- }
-
- public override Image DisplayIcon => IconCache.IconForCommand(_presetCommand);
-
- public override ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) {
- ExportInformation exportInformation = new ExportInformation(Designation, Description);
- SurfaceOutputSettings outputSettings = new SurfaceOutputSettings();
- outputSettings.PreventGreenshotFormat();
-
- if (_presetCommand != null) {
- if (!config.RunInbackground.ContainsKey(_presetCommand)) {
- config.RunInbackground.Add(_presetCommand, true);
- }
- bool runInBackground = config.RunInbackground[_presetCommand];
- string fullPath = captureDetails.Filename ?? ImageOutput.SaveNamedTmpFile(surface, captureDetails, outputSettings);
-
- string output;
- string error;
- if (runInBackground) {
- Thread commandThread = new Thread(delegate()
- {
- CallExternalCommand(exportInformation, fullPath, out output, out error);
- ProcessExport(exportInformation, surface);
- })
- {
- Name = "Running " + _presetCommand,
- IsBackground = true
- };
- commandThread.SetApartmentState(ApartmentState.STA);
- commandThread.Start();
- exportInformation.ExportMade = true;
- } else {
- CallExternalCommand(exportInformation, fullPath, out output, out error);
- ProcessExport(exportInformation, surface);
- }
- }
- return exportInformation;
- }
-
- ///
- /// Wrapper method for the background and normal call, this does all the logic:
- /// Call the external command, parse for URI, place to clipboard and set the export information
- ///
- ///
- ///
- ///
- ///
- private void CallExternalCommand(ExportInformation exportInformation, string fullPath, out string output, out string error) {
- output = null;
- error = null;
- try {
- if (CallExternalCommand(_presetCommand, fullPath, out output, out error) == 0) {
- exportInformation.ExportMade = true;
- if (!string.IsNullOrEmpty(output)) {
- MatchCollection uriMatches = URI_REGEXP.Matches(output);
- // Place output on the clipboard before the URI, so if one is found this overwrites
- if (config.OutputToClipboard) {
- ClipboardHelper.SetClipboardData(output);
- }
- if (uriMatches.Count > 0) {
- exportInformation.Uri = uriMatches[0].Groups[1].Value;
- LOG.InfoFormat("Got URI : {0} ", exportInformation.Uri);
- if (config.UriToClipboard) {
- ClipboardHelper.SetClipboardData(exportInformation.Uri);
- }
- }
- }
- } else {
- LOG.WarnFormat("Error calling external command: {0} ", output);
- exportInformation.ExportMade = false;
- exportInformation.ErrorMessage = error;
- }
- } catch (Exception ex) {
- exportInformation.ExportMade = false;
- exportInformation.ErrorMessage = ex.Message;
- LOG.WarnFormat("Error calling external command: {0} ", exportInformation.ErrorMessage);
- }
- }
-
- ///
- /// Wrapper to retry with a runas
- ///
- ///
- ///
- ///
- ///
- ///
- private int CallExternalCommand(string commando, string fullPath, out string output, out string error) {
- try {
- return CallExternalCommand(commando, fullPath, null, out output, out error);
- } catch (Win32Exception w32Ex) {
- try {
- return CallExternalCommand(commando, fullPath, "runas", out output, out error);
- } catch {
- w32Ex.Data.Add("commandline", config.Commandline[_presetCommand]);
- w32Ex.Data.Add("arguments", config.Argument[_presetCommand]);
- throw;
- }
- } catch (Exception ex) {
- ex.Data.Add("commandline", config.Commandline[_presetCommand]);
- ex.Data.Add("arguments", config.Argument[_presetCommand]);
- throw;
- }
- }
-
- ///
- /// The actual executing code for the external command
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- private int CallExternalCommand(string commando, string fullPath, string verb, out string output, out string error) {
- string commandline = config.Commandline[commando];
- string arguments = config.Argument[commando];
- output = null;
- error = null;
- if (!string.IsNullOrEmpty(commandline))
- {
- using Process process = new Process();
- // Fix variables
- commandline = FilenameHelper.FillVariables(commandline, true);
- commandline = FilenameHelper.FillCmdVariables(commandline, true);
-
- arguments = FilenameHelper.FillVariables(arguments, false);
- arguments = FilenameHelper.FillCmdVariables(arguments, false);
-
- process.StartInfo.FileName = FilenameHelper.FillCmdVariables(commandline, true);
- process.StartInfo.Arguments = FormatArguments(arguments, fullPath);
- process.StartInfo.UseShellExecute = false;
- if (config.RedirectStandardOutput) {
- process.StartInfo.RedirectStandardOutput = true;
- }
- if (config.RedirectStandardError) {
- process.StartInfo.RedirectStandardError = true;
- }
- if (verb != null) {
- process.StartInfo.Verb = verb;
- }
- LOG.InfoFormat("Starting : {0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments);
- process.Start();
- process.WaitForExit();
- if (config.RedirectStandardOutput) {
- output = process.StandardOutput.ReadToEnd();
- if (config.ShowStandardOutputInLog && output.Trim().Length > 0) {
- LOG.InfoFormat("Output:\n{0}", output);
- }
- }
- if (config.RedirectStandardError) {
- error = process.StandardError.ReadToEnd();
- if (error.Trim().Length > 0) {
- LOG.WarnFormat("Error:\n{0}", error);
- }
- }
- LOG.InfoFormat("Finished : {0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments);
- return process.ExitCode;
- }
- return -1;
- }
-
- public static string FormatArguments(string arguments, string fullpath)
- {
- return string.Format(arguments, fullpath);
- }
- }
-}
diff --git a/GreenshotExternalCommandPlugin/ExternalCommandForm.cs b/GreenshotExternalCommandPlugin/ExternalCommandForm.cs
deleted file mode 100644
index 6436fc988..000000000
--- a/GreenshotExternalCommandPlugin/ExternalCommandForm.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using GreenshotPlugin.Controls;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// This class is needed for design-time resolving of the language files
- ///
- public class ExternalCommandForm : GreenshotForm {
- }
-}
\ No newline at end of file
diff --git a/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs b/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs
deleted file mode 100644
index 13d1868d1..000000000
--- a/GreenshotExternalCommandPlugin/ExternalCommandPlugin.cs
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Windows.Forms;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// An Plugin to run commands after an image was written
- ///
- [Plugin("ExternalCommand", true)]
- public class ExternalCommandPlugin : IGreenshotPlugin {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(ExternalCommandPlugin));
- private static readonly CoreConfiguration CoreConfig = IniConfig.GetIniSection();
- private static readonly ExternalCommandConfiguration ExternalCommandConfig = IniConfig.GetIniSection();
- private ToolStripMenuItem _itemPlugInRoot;
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposing) return;
- if (_itemPlugInRoot == null) return;
- _itemPlugInRoot.Dispose();
- _itemPlugInRoot = null;
- }
- private IEnumerable Destinations() {
- foreach(string command in ExternalCommandConfig.Commands) {
- yield return new ExternalCommandDestination(command);
- }
- }
-
-
- ///
- /// Check and eventually fix the command settings
- ///
- ///
- /// false if the command is not correctly configured
- private bool IsCommandValid(string command) {
- if (!ExternalCommandConfig.RunInbackground.ContainsKey(command)) {
- Log.WarnFormat("Found missing runInbackground for {0}", command);
- // Fix it
- ExternalCommandConfig.RunInbackground.Add(command, true);
- }
- if (!ExternalCommandConfig.Argument.ContainsKey(command)) {
- Log.WarnFormat("Found missing argument for {0}", command);
- // Fix it
- ExternalCommandConfig.Argument.Add(command, "{0}");
- }
- if (!ExternalCommandConfig.Commandline.ContainsKey(command)) {
- Log.WarnFormat("Found missing commandline for {0}", command);
- return false;
- }
- string commandline = FilenameHelper.FillVariables(ExternalCommandConfig.Commandline[command], true);
- commandline = FilenameHelper.FillCmdVariables(commandline, true);
-
- if (!File.Exists(commandline)) {
- Log.WarnFormat("Found 'invalid' commandline {0} for command {1}", ExternalCommandConfig.Commandline[command], command);
- return false;
- }
- SimpleServiceProvider.Current.AddService(Destinations());
- return true;
- }
- ///
- /// Implementation of the IGreenshotPlugin.Initialize
- ///
- public virtual bool Initialize() {
- Log.DebugFormat("Initialize called");
-
- List commandsToDelete = new List();
- // Check configuration
- foreach(string command in ExternalCommandConfig.Commands) {
- if (!IsCommandValid(command)) {
- commandsToDelete.Add(command);
- }
- }
-
- // cleanup
- foreach (string command in commandsToDelete) {
- ExternalCommandConfig.Delete(command);
- }
-
- _itemPlugInRoot = new ToolStripMenuItem();
- _itemPlugInRoot.Click += ConfigMenuClick;
- OnIconSizeChanged(this, new PropertyChangedEventArgs("IconSize"));
- OnLanguageChanged(this, null);
-
- PluginUtils.AddToContextMenu(_itemPlugInRoot);
- Language.LanguageChanged += OnLanguageChanged;
- CoreConfig.PropertyChanged += OnIconSizeChanged;
- return true;
- }
-
- ///
- /// Fix icon reference
- ///
- ///
- ///
- private void OnIconSizeChanged(object sender, PropertyChangedEventArgs e) {
- if (e.PropertyName == "IconSize") {
- try {
- string exePath = PluginUtils.GetExePath("cmd.exe");
- if (exePath != null && File.Exists(exePath)) {
- _itemPlugInRoot.Image = PluginUtils.GetCachedExeIcon(exePath, 0);
- }
- } catch (Exception ex) {
- Log.Warn("Couldn't get the cmd.exe image", ex);
- }
- }
- }
-
- private void OnLanguageChanged(object sender, EventArgs e) {
- if (_itemPlugInRoot != null) {
- _itemPlugInRoot.Text = Language.GetString("externalcommand", "contextmenu_configure");
- }
- }
-
- public virtual void Shutdown() {
- Log.Debug("Shutdown");
- }
-
- private void ConfigMenuClick(object sender, EventArgs eventArgs) {
- Configure();
- }
-
- ///
- /// Implementation of the IPlugin.Configure
- ///
- public virtual void Configure() {
- Log.Debug("Configure called");
- new SettingsForm().ShowDialog();
- }
- }
-}
\ No newline at end of file
diff --git a/GreenshotExternalCommandPlugin/GreenshotExternalCommandPlugin.csproj b/GreenshotExternalCommandPlugin/GreenshotExternalCommandPlugin.csproj
deleted file mode 100644
index 761d1278f..000000000
--- a/GreenshotExternalCommandPlugin/GreenshotExternalCommandPlugin.csproj
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- GreenshotExternalCommandPlugin
- GreenshotExternalCommandPlugin
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
diff --git a/GreenshotExternalCommandPlugin/IconCache.cs b/GreenshotExternalCommandPlugin/IconCache.cs
deleted file mode 100644
index bf9094c7e..000000000
--- a/GreenshotExternalCommandPlugin/IconCache.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Drawing;
-using System.IO;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotExternalCommandPlugin {
- public static class IconCache {
- private static readonly ExternalCommandConfiguration config = IniConfig.GetIniSection();
- private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(IconCache));
-
- public static Image IconForCommand(string commandName) {
- Image icon = null;
- if (commandName != null) {
- if (config.Commandline.ContainsKey(commandName) && File.Exists(config.Commandline[commandName])) {
- try {
- icon = PluginUtils.GetCachedExeIcon(config.Commandline[commandName], 0);
- } catch (Exception ex) {
- LOG.Warn("Problem loading icon for " + config.Commandline[commandName], ex);
- }
- }
- }
- return icon;
- }
- }
-}
diff --git a/GreenshotExternalCommandPlugin/SettingsForm.cs b/GreenshotExternalCommandPlugin/SettingsForm.cs
deleted file mode 100644
index 01eea89bf..000000000
--- a/GreenshotExternalCommandPlugin/SettingsForm.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// Description of SettingsForm.
- ///
- public partial class SettingsForm : ExternalCommandForm {
- private static readonly ExternalCommandConfiguration ExternalCommandConfig = IniConfig.GetIniSection();
-
- public SettingsForm() {
- //
- // The InitializeComponent() call is required for Windows Forms designer support.
- //
- InitializeComponent();
- AcceptButton = buttonOk;
- CancelButton = buttonCancel;
- UpdateView();
- }
-
- private void ButtonOkClick(object sender, EventArgs e) {
- IniConfig.Save();
- }
-
- private void ButtonAddClick(object sender, EventArgs e) {
- var form = new SettingsFormDetail(null);
- form.ShowDialog();
-
- UpdateView();
- }
-
- private void ButtonDeleteClick(object sender, EventArgs e) {
- foreach(ListViewItem item in listView1.SelectedItems) {
- string commando = item.Tag as string;
-
- ExternalCommandConfig.Delete(commando);
- }
- UpdateView();
- }
-
- private void UpdateView() {
- listView1.Items.Clear();
- if(ExternalCommandConfig.Commands != null) {
- listView1.ListViewItemSorter = new ListviewComparer();
- ImageList imageList = new ImageList();
- listView1.SmallImageList = imageList;
- int imageNr = 0;
- foreach(string commando in ExternalCommandConfig.Commands) {
- ListViewItem item;
- Image iconForExe = IconCache.IconForCommand(commando);
- if(iconForExe != null) {
- imageList.Images.Add(iconForExe);
- item = new ListViewItem(commando, imageNr++);
- } else {
- item = new ListViewItem(commando);
- }
- item.Tag = commando;
- listView1.Items.Add(item);
- }
- }
- // Fix for bug #1484, getting an ArgumentOutOfRangeException as there is nothing selected but the edit button was still active.
- button_edit.Enabled = listView1.SelectedItems.Count > 0;
- }
-
- private void ListView1ItemSelectionChanged(object sender, EventArgs e) {
- button_edit.Enabled = listView1.SelectedItems.Count > 0;
- }
-
- private void ButtonEditClick(object sender, EventArgs e) {
- ListView1DoubleClick(sender, e);
- }
-
- private void ListView1DoubleClick(object sender, EventArgs e) {
- // Safety check for bug #1484
- bool selectionActive = listView1.SelectedItems.Count > 0;
- if(!selectionActive) {
- button_edit.Enabled = false;
- return;
- }
- string commando = listView1.SelectedItems[0].Tag as string;
-
- var form = new SettingsFormDetail(commando);
- form.ShowDialog();
-
- UpdateView();
- }
- }
-
- public class ListviewComparer : System.Collections.IComparer {
- public int Compare(object x, object y) {
- if(!(x is ListViewItem)) {
- return (0);
- }
- if(!(y is ListViewItem)) {
- return (0);
- }
-
- var l1 = (ListViewItem)x;
- var l2 = (ListViewItem)y;
- return string.Compare(l1.Text, l2.Text, StringComparison.Ordinal);
- }
- }
-}
diff --git a/GreenshotExternalCommandPlugin/SettingsFormDetail.cs b/GreenshotExternalCommandPlugin/SettingsFormDetail.cs
deleted file mode 100644
index 8affd6976..000000000
--- a/GreenshotExternalCommandPlugin/SettingsFormDetail.cs
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Drawing;
-using System.IO;
-using System.Windows.Forms;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotExternalCommandPlugin {
- ///
- /// Description of SettingsFormDetail.
- ///
- public partial class SettingsFormDetail : ExternalCommandForm {
- private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(SettingsFormDetail));
- private static readonly ExternalCommandConfiguration ExternalCommandConfig = IniConfig.GetIniSection();
-
- private readonly string _commando;
- private readonly int _commandIndex;
-
- public SettingsFormDetail(string commando) {
- InitializeComponent();
- AcceptButton = buttonOk;
- CancelButton = buttonCancel;
- _commando = commando;
-
- if(commando != null) {
- textBox_name.Text = commando;
- textBox_commandline.Text = ExternalCommandConfig.Commandline[commando];
- textBox_arguments.Text = ExternalCommandConfig.Argument[commando];
- _commandIndex = ExternalCommandConfig.Commands.FindIndex(s => s == commando);
- } else {
- textBox_arguments.Text = "\"{0}\"";
- }
- OkButtonState();
- }
-
- private void ButtonOkClick(object sender, EventArgs e) {
- string commandName = textBox_name.Text;
- string commandLine = textBox_commandline.Text;
- string arguments = textBox_arguments.Text;
- if(_commando != null) {
- ExternalCommandConfig.Commands[_commandIndex] = commandName;
- ExternalCommandConfig.Commandline.Remove(_commando);
- ExternalCommandConfig.Commandline.Add(commandName, commandLine);
- ExternalCommandConfig.Argument.Remove(_commando);
- ExternalCommandConfig.Argument.Add(commandName, arguments);
- } else {
- ExternalCommandConfig.Commands.Add(commandName);
- ExternalCommandConfig.Commandline.Add(commandName, commandLine);
- ExternalCommandConfig.Argument.Add(commandName, arguments);
- }
- }
-
- private void Button3Click(object sender, EventArgs e) {
- var openFileDialog = new OpenFileDialog
- {
- Filter = "Executables (*.exe, *.bat, *.com)|*.exe; *.bat; *.com|All files (*)|*",
- FilterIndex = 1,
- CheckFileExists = true,
- Multiselect = false
- };
- string initialPath = null;
- try
- {
- initialPath = Path.GetDirectoryName(textBox_commandline.Text);
- }
- catch (Exception ex)
- {
- Log.WarnFormat("Can't get the initial path via {0}", textBox_commandline.Text);
- Log.Warn("Exception: ", ex);
- }
- if(initialPath != null && Directory.Exists(initialPath)) {
- openFileDialog.InitialDirectory = initialPath;
- } else {
- initialPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
- openFileDialog.InitialDirectory = initialPath;
- }
- Log.DebugFormat("Starting OpenFileDialog at {0}", initialPath);
- if(openFileDialog.ShowDialog() == DialogResult.OK) {
- textBox_commandline.Text = openFileDialog.FileName;
- }
- }
-
- private void OkButtonState() {
- // Assume OK
- buttonOk.Enabled = true;
- textBox_name.BackColor = Color.White;
- textBox_commandline.BackColor = Color.White;
- textBox_arguments.BackColor = Color.White;
- // Is there a text in the name field
- if(string.IsNullOrEmpty(textBox_name.Text)) {
- buttonOk.Enabled = false;
- }
- // Check if commandname is unique
- if(_commando == null && !string.IsNullOrEmpty(textBox_name.Text) && ExternalCommandConfig.Commands.Contains(textBox_name.Text)) {
- buttonOk.Enabled = false;
- textBox_name.BackColor = Color.Red;
- }
- // Is there a text in the commandline field
- if(string.IsNullOrEmpty(textBox_commandline.Text)) {
- buttonOk.Enabled = false;
- }
-
- if (!string.IsNullOrEmpty(textBox_commandline.Text))
- {
- // Added this to be more flexible, using the Greenshot var format
- string cmdPath = FilenameHelper.FillVariables(textBox_commandline.Text, true);
- // And also replace the "DOS" Variables
- cmdPath = FilenameHelper.FillCmdVariables(cmdPath, true);
- // Is the command available?
- if (!File.Exists(cmdPath))
- {
- buttonOk.Enabled = false;
- textBox_commandline.BackColor = Color.Red;
- }
- }
- // Are the arguments in a valid format?
- try
- {
- string arguments = FilenameHelper.FillVariables(textBox_arguments.Text, false);
- arguments = FilenameHelper.FillCmdVariables(arguments, false);
-
- ExternalCommandDestination.FormatArguments(arguments, string.Empty);
- }
- catch
- {
- buttonOk.Enabled = false;
- textBox_arguments.BackColor = Color.Red;
- }
- }
-
- private void textBox_name_TextChanged(object sender, EventArgs e) {
- OkButtonState();
- }
-
- private void textBox_commandline_TextChanged(object sender, EventArgs e) {
- OkButtonState();
- }
-
- private void textBox_arguments_TextChanged(object sender, EventArgs e)
- {
- OkButtonState();
- }
-
- }
-}
diff --git a/GreenshotFlickrPlugin/FlickrConfiguration.cs b/GreenshotFlickrPlugin/FlickrConfiguration.cs
deleted file mode 100644
index 06f65c9fd..000000000
--- a/GreenshotFlickrPlugin/FlickrConfiguration.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.Windows.Forms;
-using GreenshotFlickrPlugin.Forms;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-
-namespace GreenshotFlickrPlugin {
- public enum SafetyLevel {
- Safe = 1,
- Moderate = 2,
- Restricted = 3
- }
- ///
- /// Description of FlickrConfiguration.
- ///
- [IniSection("Flickr", Description = "Greenshot Flickr Plugin configuration")]
- public class FlickrConfiguration : IniSection {
- [IniProperty("flickrIsPublic", Description = "IsPublic.", DefaultValue = "true")]
- public bool IsPublic { get; set; }
-
- [IniProperty("flickrIsFamily", Description = "IsFamily.", DefaultValue = "true")]
- public bool IsFamily { get; set; }
-
- [IniProperty("flickrIsFriend", Description = "IsFriend.", DefaultValue = "true")]
- public bool IsFriend { get; set; }
-
- [IniProperty("SafetyLevel", Description = "Safety level", DefaultValue = "Safe")]
- public SafetyLevel SafetyLevel { get; set; }
-
- [IniProperty("HiddenFromSearch", Description = "Hidden from search", DefaultValue = "false")]
- public bool HiddenFromSearch { get; set; }
-
- [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="png")]
- public OutputFormat UploadFormat { get; set; }
-
- [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")]
- public int UploadJpegQuality { get; set; }
-
- [IniProperty("AfterUploadLinkToClipBoard", Description = "After upload send flickr link to clipboard.", DefaultValue = "true")]
- public bool AfterUploadLinkToClipBoard { get; set; }
-
- [IniProperty("UsePageLink", Description = "Use pagelink instead of direct link on the clipboard", DefaultValue = "False")]
- public bool UsePageLink { get; set; }
-
- [IniProperty("FlickrToken", Description = "The Flickr token", Encrypted = true, ExcludeIfNull = true)]
- public string FlickrToken { get; set; }
- [IniProperty("FlickrTokenSecret", Description = "The Flickr token secret", Encrypted = true, ExcludeIfNull = true)]
- public string FlickrTokenSecret { get; set; }
-
- ///
- /// A form for token
- ///
- /// bool true if OK was pressed, false if cancel
- public bool ShowConfigDialog() {
- DialogResult result = new SettingsForm().ShowDialog();
- if (result == DialogResult.OK) {
- return true;
- }
- return false;
- }
- }
-}
diff --git a/GreenshotFlickrPlugin/FlickrDestination.cs b/GreenshotFlickrPlugin/FlickrDestination.cs
deleted file mode 100644
index ccd9392d2..000000000
--- a/GreenshotFlickrPlugin/FlickrDestination.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-using System.ComponentModel;
-using System.Drawing;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.Interfaces;
-
-namespace GreenshotFlickrPlugin {
- public class FlickrDestination : AbstractDestination {
- private readonly FlickrPlugin _plugin;
- public FlickrDestination(FlickrPlugin plugin) {
- _plugin = plugin;
- }
-
- public override string Designation => "Flickr";
-
- public override string Description => Language.GetString("flickr", LangKey.upload_menu_item);
-
- public override Image DisplayIcon {
- get {
- ComponentResourceManager resources = new ComponentResourceManager(typeof(FlickrPlugin));
- return (Image)resources.GetObject("flickr");
- }
- }
-
- public override ExportInformation ExportCapture(bool manuallyInitiated, ISurface surface, ICaptureDetails captureDetails) {
- ExportInformation exportInformation = new ExportInformation(Designation, Description);
- bool uploaded = _plugin.Upload(captureDetails, surface, out var uploadUrl);
- if (uploaded) {
- exportInformation.ExportMade = true;
- exportInformation.Uri = uploadUrl;
- }
- ProcessExport(exportInformation, surface);
- return exportInformation;
- }
- }
-}
diff --git a/GreenshotFlickrPlugin/FlickrPlugin.cs b/GreenshotFlickrPlugin/FlickrPlugin.cs
deleted file mode 100644
index abf663625..000000000
--- a/GreenshotFlickrPlugin/FlickrPlugin.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.IO;
-using System.Windows.Forms;
-using GreenshotPlugin.Controls;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-using log4net;
-
-namespace GreenshotFlickrPlugin
-{
- ///
- /// This is the Flickr base code
- ///
- [Plugin("Flickr", true)]
- public class FlickrPlugin : IGreenshotPlugin {
- private static readonly ILog Log = LogManager.GetLogger(typeof(FlickrPlugin));
- private static FlickrConfiguration _config;
- private ComponentResourceManager _resources;
- private ToolStripMenuItem _itemPlugInConfig;
-
- public void Dispose() {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- protected void Dispose(bool disposing) {
- if (!disposing) {
- return;
- }
- if (_itemPlugInConfig == null) {
- return;
- }
- _itemPlugInConfig.Dispose();
- _itemPlugInConfig = null;
- }
-
- ///
- /// Implementation of the IGreenshotPlugin.Initialize
- ///
- public bool Initialize() {
- // Register configuration (don't need the configuration itself)
- _config = IniConfig.GetIniSection();
- _resources = new ComponentResourceManager(typeof(FlickrPlugin));
-
- _itemPlugInConfig = new ToolStripMenuItem
- {
- Text = Language.GetString("flickr", LangKey.Configure),
- Image = (Image) _resources.GetObject("flickr")
- };
- _itemPlugInConfig.Click += ConfigMenuClick;
- SimpleServiceProvider.Current.AddService(new FlickrDestination(this));
- PluginUtils.AddToContextMenu(_itemPlugInConfig);
- Language.LanguageChanged += OnLanguageChanged;
- return true;
- }
-
- public void OnLanguageChanged(object sender, EventArgs e) {
- if (_itemPlugInConfig != null) {
- _itemPlugInConfig.Text = Language.GetString("flickr", LangKey.Configure);
- }
- }
-
- public void Shutdown() {
- Log.Debug("Flickr Plugin shutdown.");
- }
-
- ///
- /// Implementation of the IPlugin.Configure
- ///
- public void Configure() {
- _config.ShowConfigDialog();
- }
-
- public void ConfigMenuClick(object sender, EventArgs eventArgs) {
- _config.ShowConfigDialog();
- }
-
- public bool Upload(ICaptureDetails captureDetails, ISurface surface, out string uploadUrl) {
- SurfaceOutputSettings outputSettings = new SurfaceOutputSettings(_config.UploadFormat, _config.UploadJpegQuality, false);
- uploadUrl = null;
- try {
- string flickrUrl = null;
- new PleaseWaitForm().ShowAndWait("Flickr", Language.GetString("flickr", LangKey.communication_wait),
- delegate {
- string filename = Path.GetFileName(FilenameHelper.GetFilename(_config.UploadFormat, captureDetails));
- flickrUrl = FlickrUtils.UploadToFlickr(surface, outputSettings, captureDetails.Title, filename);
- }
- );
-
- if (flickrUrl == null) {
- return false;
- }
- uploadUrl = flickrUrl;
-
- if (_config.AfterUploadLinkToClipBoard) {
- ClipboardHelper.SetClipboardData(flickrUrl);
- }
- return true;
- } catch (Exception e) {
- Log.Error("Error uploading.", e);
- MessageBox.Show(Language.GetString("flickr", LangKey.upload_failure) + " " + e.Message);
- }
- return false;
- }
- }
-}
diff --git a/GreenshotFlickrPlugin/FlickrUtils.cs b/GreenshotFlickrPlugin/FlickrUtils.cs
deleted file mode 100644
index 6713e3702..000000000
--- a/GreenshotFlickrPlugin/FlickrUtils.cs
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Xml;
-using GreenshotPlugin.Core;
-using GreenshotPlugin.IniFile;
-using GreenshotPlugin.Interfaces;
-using GreenshotPlugin.Interfaces.Plugin;
-using log4net;
-
-namespace GreenshotFlickrPlugin {
- ///
- /// Description of FlickrUtils.
- ///
- public static class FlickrUtils {
- private static readonly ILog LOG = LogManager.GetLogger(typeof(FlickrUtils));
- private static readonly FlickrConfiguration config = IniConfig.GetIniSection();
- private const string FLICKR_API_BASE_URL = "https://api.flickr.com/services/";
- private const string FLICKR_UPLOAD_URL = FLICKR_API_BASE_URL + "upload/";
- // OAUTH
- private const string FLICKR_OAUTH_BASE_URL = FLICKR_API_BASE_URL + "oauth/";
- private const string FLICKR_ACCESS_TOKEN_URL = FLICKR_OAUTH_BASE_URL + "access_token";
- private const string FLICKR_AUTHORIZE_URL = FLICKR_OAUTH_BASE_URL + "authorize";
- private const string FLICKR_REQUEST_TOKEN_URL = FLICKR_OAUTH_BASE_URL + "request_token";
- private const string FLICKR_FARM_URL = "https://farm{0}.staticflickr.com/{1}/{2}_{3}_o.{4}";
- // REST
- private const string FLICKR_REST_URL = FLICKR_API_BASE_URL + "rest/";
- private const string FLICKR_GET_INFO_URL = FLICKR_REST_URL + "?method=flickr.photos.getInfo";
-
- ///
- /// Do the actual upload to Flickr
- /// For more details on the available parameters, see: http://flickrnet.codeplex.com
- ///
- ///
- ///
- ///
- ///
- /// url to image
- public static string UploadToFlickr(ISurface surfaceToUpload, SurfaceOutputSettings outputSettings, string title, string filename) {
- var oAuth = new OAuthSession(FlickrCredentials.ConsumerKey, FlickrCredentials.ConsumerSecret)
- {
- BrowserSize = new Size(520, 800),
- CheckVerifier = false,
- AccessTokenUrl = FLICKR_ACCESS_TOKEN_URL,
- AuthorizeUrl = FLICKR_AUTHORIZE_URL,
- RequestTokenUrl = FLICKR_REQUEST_TOKEN_URL,
- LoginTitle = "Flickr authorization",
- Token = config.FlickrToken,
- TokenSecret = config.FlickrTokenSecret
- };
- if (string.IsNullOrEmpty(oAuth.Token)) {
- if (!oAuth.Authorize()) {
- return null;
- }
- if (!string.IsNullOrEmpty(oAuth.Token)) {
- config.FlickrToken = oAuth.Token;
- }
- if (!string.IsNullOrEmpty(oAuth.TokenSecret)) {
- config.FlickrTokenSecret = oAuth.TokenSecret;
- }
- IniConfig.Save();
- }
- try {
- IDictionary signedParameters = new Dictionary
- {
- { "content_type", "2" }, // Screenshot
- { "tags", "Greenshot" },
- { "is_public", config.IsPublic ? "1" : "0" },
- { "is_friend", config.IsFriend ? "1" : "0" },
- { "is_family", config.IsFamily ? "1" : "0" },
- { "safety_level", $"{(int)config.SafetyLevel}" },
- { "hidden", config.HiddenFromSearch ? "1" : "2" }
- };
- IDictionary otherParameters = new Dictionary
- {
- { "photo", new SurfaceContainer(surfaceToUpload, outputSettings, filename) }
- };
- string response = oAuth.MakeOAuthRequest(HTTPMethod.POST, FLICKR_UPLOAD_URL, signedParameters, otherParameters, null);
- string photoId = GetPhotoId(response);
-
- // Get Photo Info
- signedParameters = new Dictionary { { "photo_id", photoId } };
- string photoInfo = oAuth.MakeOAuthRequest(HTTPMethod.POST, FLICKR_GET_INFO_URL, signedParameters, null, null);
- return GetUrl(photoInfo);
- } catch (Exception ex) {
- LOG.Error("Upload error: ", ex);
- throw;
- } finally {
- if (!string.IsNullOrEmpty(oAuth.Token)) {
- config.FlickrToken = oAuth.Token;
- }
- if (!string.IsNullOrEmpty(oAuth.TokenSecret)) {
- config.FlickrTokenSecret = oAuth.TokenSecret;
- }
- }
- }
-
- private static string GetUrl(string response) {
- try {
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(response);
- if (config.UsePageLink) {
- XmlNodeList nodes = doc.GetElementsByTagName("url");
- if (nodes.Count > 0) {
- var xmlNode = nodes.Item(0);
- if (xmlNode != null) {
- return xmlNode.InnerText;
- }
- }
- } else {
- XmlNodeList nodes = doc.GetElementsByTagName("photo");
- if (nodes.Count > 0) {
- var item = nodes.Item(0);
- if (item?.Attributes != null) {
- string farmId = item.Attributes["farm"].Value;
- string serverId = item.Attributes["server"].Value;
- string photoId = item.Attributes["id"].Value;
- string originalsecret = item.Attributes["originalsecret"].Value;
- string originalFormat = item.Attributes["originalformat"].Value;
- return string.Format(FLICKR_FARM_URL, farmId, serverId, photoId, originalsecret, originalFormat);
- }
- }
- }
- } catch (Exception ex) {
- LOG.Error("Error parsing Flickr Response.", ex);
- }
- return null;
- }
-
- private static string GetPhotoId(string response) {
- try {
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(response);
- XmlNodeList nodes = doc.GetElementsByTagName("photoid");
- if (nodes.Count > 0) {
- var xmlNode = nodes.Item(0);
- if (xmlNode != null) {
- return xmlNode.InnerText;
- }
- }
- } catch (Exception ex) {
- LOG.Error("Error parsing Flickr Response.", ex);
- }
- return null;
- }
- }
-}
diff --git a/GreenshotFlickrPlugin/Forms/SettingsForm.cs b/GreenshotFlickrPlugin/Forms/SettingsForm.cs
deleted file mode 100644
index 59d0e3cbf..000000000
--- a/GreenshotFlickrPlugin/Forms/SettingsForm.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Greenshot - a free and open source screenshot tool
- * Copyright (C) 2007-2021 Thomas Braun, Jens Klingen, Robin Krom, Francis Noel
- *
- * For more information see: http://getgreenshot.org/
- * The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see