diff --git a/intl/el_GR.po b/intl/el_GR.po
new file mode 100644
index 0000000..6d93975
--- /dev/null
+++ b/intl/el_GR.po
@@ -0,0 +1,1223 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Language: el.GR\n"
+"X-Source-Language: en.US\n"
+"X-Qt-Contexts: true\n"
+
+#: ../ui/CloneDialog.ui:17
+msgctxt "CloneDialog|"
+msgid "Clone Repository"
+msgstr "Αντιγραφή Αποθετηρίου"
+
+#: ../ui/CloneDialog.ui:28
+msgctxt "CloneDialog|"
+msgid "URL"
+msgstr "Διεύθυνση"
+
+#: ../ui/CloneDialog.ui:35
+msgctxt "CloneDialog|"
+msgid "The URL of the source repository"
+msgstr "Η διεύθυνση του αποθετηρίου πηγής"
+
+#: ../ui/CloneDialog.ui:42
+msgctxt "CloneDialog|"
+msgid "User Name"
+msgstr "Όνομα Χρήστη"
+
+#: ../ui/CloneDialog.ui:49
+msgctxt "CloneDialog|"
+msgid ""
+"The user name used to access the remote repository. Leave blank if not "
+"required"
+msgstr ""
+"Το όνομα χρήστη για την πρόσβαση του απομακρυσμένου αποθετηρίου. Αφήστε το "
+"κενό αν δεν χρειάζεται"
+
+#: ../ui/CloneDialog.ui:56
+msgctxt "CloneDialog|"
+msgid "Password"
+msgstr "Συνθυματικό"
+
+#: ../ui/CloneDialog.ui:63
+msgctxt "CloneDialog|"
+msgid ""
+"The password used to access the remote repository. Leave blank if not "
+"required"
+msgstr ""
+"Το συνθυματικό για την πρόσβαση του απομακρυσμένου αποθετηρίου. Αφήστε το "
+"κενό αν δεν χρειάζεται"
+
+#: ../ui/CloneDialog.ui:73
+msgctxt "CloneDialog|"
+msgid "Repository"
+msgstr "Αποθετήριο"
+
+#: ../ui/CloneDialog.ui:82
+msgctxt "CloneDialog|"
+msgid "Path to the local repository file"
+msgstr "Διαδρομή για το αρχείο τοπικού αποθετηρίου"
+
+#: ../ui/CloneDialog.ui:101
+msgctxt "CloneDialog|"
+msgid "..."
+msgstr "..."
+
+#: ../src/CloneDialog.cpp:52 ../src/CloneDialog.cpp:61
+#: ../src/CloneDialog.cpp:87
+msgctxt "CloneDialog|"
+msgid "Error"
+msgstr "Σφάλμα"
+
+#: ../src/CloneDialog.cpp:52
+msgctxt "CloneDialog|"
+msgid "Invalid URL."
+msgstr "Μη αποδεκτή διεύθυνση."
+
+#: ../src/CloneDialog.cpp:61
+msgctxt "CloneDialog|"
+msgid "Invalid Repository File."
+msgstr "Μη αποδεκτό αρχείο αποθετηρίου"
+
+#: ../src/CloneDialog.cpp:72
+msgctxt "CloneDialog|"
+msgid "Fossil Repository (*.fossil)"
+msgstr "Αποθετήριο Fossil (*.fossil)"
+
+#: ../src/CloneDialog.cpp:76
+msgctxt "CloneDialog|"
+msgid "Select Fossil Repository"
+msgstr "Επιλέξετε Αποθετήριο Fossil"
+
+#: ../src/CloneDialog.cpp:87
+msgctxt "CloneDialog|"
+msgid "This repository file already exists."
+msgstr "Αυτό τό αρχείο αποθετηρίου υπάρχει ήδη."
+
+#: ../ui/CommitDialog.ui:17
+msgctxt "CommitDialog|"
+msgid "Commit"
+msgstr "Καταχώρηση"
+
+#: ../ui/FileActionDialog.ui:17
+msgctxt "FileActionDialog|"
+msgid "File Action"
+msgstr "Ενέργειες αρχείου"
+
+#: ../ui/MainWindow.ui:14
+msgctxt "MainWindow|"
+msgid "Fuel"
+msgstr "Fuel"
+
+#: ../ui/MainWindow.ui:184
+msgctxt "MainWindow|"
+msgid "&File"
+msgstr "&Αρχείο"
+
+#: ../ui/MainWindow.ui:199
+msgctxt "MainWindow|"
+msgid "&Help"
+msgstr "&Βοήθεια"
+
+#: ../ui/MainWindow.ui:205
+msgctxt "MainWindow|"
+msgid "&View"
+msgstr "Εμφάνιση"
+
+#: ../ui/MainWindow.ui:222
+msgctxt "MainWindow|"
+msgid "Main Toolbar"
+msgstr "Κύρια μπάρα εργαλείων"
+
+#: ../ui/MainWindow.ui:276
+msgctxt "MainWindow|"
+msgid "Refresh"
+msgstr "Ανανέωση"
+
+#: ../ui/MainWindow.ui:279 ../ui/MainWindow.ui:282
+msgctxt "MainWindow|"
+msgid "Refresh the views"
+msgstr "Ανανεώνει τις προβολές"
+
+#: ../ui/MainWindow.ui:285
+msgctxt "MainWindow|"
+msgid "F5"
+msgstr "F5"
+
+#: ../ui/MainWindow.ui:294
+msgctxt "MainWindow|"
+msgid "Commit"
+msgstr "Εισαγωγή"
+
+#: ../ui/MainWindow.ui:297 ../ui/MainWindow.ui:300
+msgctxt "MainWindow|"
+msgid "Commit modifications"
+msgstr "Καταχώρηση τροποποιήσεων"
+
+#: ../ui/MainWindow.ui:303
+msgctxt "MainWindow|"
+msgid "Ctrl+M"
+msgstr "Ctrl+M"
+
+#: ../ui/MainWindow.ui:312
+msgctxt "MainWindow|"
+msgid "Diff"
+msgstr "Σύνγκριση"
+
+#: ../ui/MainWindow.ui:315 ../ui/MainWindow.ui:318
+msgctxt "MainWindow|"
+msgid "Display the differences between the current and last committed version"
+msgstr ""
+"Εμφάνιση των διαφορών μεταξύ της τρέχουσας και της προηγούμενης έκδοσης"
+
+#: ../ui/MainWindow.ui:321
+msgctxt "MainWindow|"
+msgid "Ctrl+D"
+msgstr "Ctrl+D"
+
+#: ../ui/MainWindow.ui:330
+msgctxt "MainWindow|"
+msgid "Add"
+msgstr "Προσθήκη"
+
+#: ../ui/MainWindow.ui:333 ../ui/MainWindow.ui:336
+msgctxt "MainWindow|"
+msgid "Add files to the repository"
+msgstr "Πρόσθεση αρχείων στο αποθετήριο"
+
+#: ../ui/MainWindow.ui:339
+msgctxt "MainWindow|"
+msgid "Ctrl++"
+msgstr "Ctrl++"
+
+#: ../ui/MainWindow.ui:348
+msgctxt "MainWindow|"
+msgid "Delete"
+msgstr "Διαγραφή"
+
+#: ../ui/MainWindow.ui:351 ../ui/MainWindow.ui:354
+msgctxt "MainWindow|"
+msgid "Delete files from the repository"
+msgstr "Διαγραφή αρχείων από το αποθετήριο"
+
+#: ../ui/MainWindow.ui:357
+msgctxt "MainWindow|"
+msgid "Ctrl+-"
+msgstr "Ctrl+-"
+
+#: ../ui/MainWindow.ui:366
+msgctxt "MainWindow|"
+msgid "&New..."
+msgstr "&Δημιουργία..."
+
+#: ../ui/MainWindow.ui:369 ../ui/MainWindow.ui:372
+msgctxt "MainWindow|"
+msgid "Make a new Fossil repository"
+msgstr "Δημιουργία καινούργιου αποθετηρίου Fossil"
+
+#: ../ui/MainWindow.ui:375
+msgctxt "MainWindow|"
+msgid "Ctrl+N"
+msgstr "Ctrl+N"
+
+#: ../ui/MainWindow.ui:384
+msgctxt "MainWindow|"
+msgid "&Open..."
+msgstr "Ά&νοιγμα..."
+
+#: ../ui/MainWindow.ui:387 ../ui/MainWindow.ui:390
+msgctxt "MainWindow|"
+msgid "Open a Fossil repository or workspace folder"
+msgstr "Άνοιγμα αποθετηρίου Fossil ή χώρου εργασίας"
+
+#: ../ui/MainWindow.ui:393
+msgctxt "MainWindow|"
+msgid "Ctrl+O"
+msgstr "Ctrl+O"
+
+#: ../ui/MainWindow.ui:401
+msgctxt "MainWindow|"
+msgid "&Close"
+msgstr "&Κλείσιμο"
+
+#: ../ui/MainWindow.ui:404 ../ui/MainWindow.ui:407
+msgctxt "MainWindow|"
+msgid "Close the current workspace"
+msgstr "Κλείσιμο του τρέχοντος χώρου εργασίας"
+
+#: ../ui/MainWindow.ui:416
+msgctxt "MainWindow|"
+msgid "Clone..."
+msgstr "Αντιγραφή..."
+
+#: ../ui/MainWindow.ui:425
+msgctxt "MainWindow|"
+msgid "Push"
+msgstr "Προώθηση"
+
+#: ../ui/MainWindow.ui:428 ../ui/MainWindow.ui:431
+msgctxt "MainWindow|"
+msgid "Push changes to the remote repository"
+msgstr "Προώθηση αλλαγών στο απομακρυσμένο αποθετήριο"
+
+#: ../ui/MainWindow.ui:434
+msgctxt "MainWindow|"
+msgid "Ctrl+P"
+msgstr "Ctrl+P"
+
+#: ../ui/MainWindow.ui:443
+msgctxt "MainWindow|"
+msgid "Pull"
+msgstr "Λήψη"
+
+#: ../ui/MainWindow.ui:446 ../ui/MainWindow.ui:449
+msgctxt "MainWindow|"
+msgid "Pull changes from the remote repository"
+msgstr "Λήψη αλλαγών από το απομακρυσμένο αποθετήριο"
+
+#: ../ui/MainWindow.ui:452
+msgctxt "MainWindow|"
+msgid "Ctrl+L"
+msgstr "Ctrl+L"
+
+#: ../ui/MainWindow.ui:461 ../src/MainWindow.cpp:1858
+msgctxt "MainWindow|"
+msgid "Rename"
+msgstr "Μετονομασία"
+
+#: ../ui/MainWindow.ui:464 ../ui/MainWindow.ui:467
+msgctxt "MainWindow|"
+msgid "Rename the selected file"
+msgstr "Μετονομασία του επιλεγμένου αρχείου"
+
+#: ../ui/MainWindow.ui:470
+msgctxt "MainWindow|"
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+#: ../ui/MainWindow.ui:479
+msgctxt "MainWindow|"
+msgid "&Quit"
+msgstr "Έ&ξοδος"
+
+#: ../ui/MainWindow.ui:482
+msgctxt "MainWindow|"
+msgid "Quit"
+msgstr "Έ&ξοδος"
+
+#: ../ui/MainWindow.ui:485
+msgctxt "MainWindow|"
+msgid "Ctrl+Q"
+msgstr "Ctrl+Q"
+
+#: ../ui/MainWindow.ui:497
+msgctxt "MainWindow|"
+msgid "History"
+msgstr "Ίστορικό"
+
+#: ../ui/MainWindow.ui:500 ../ui/MainWindow.ui:503
+msgctxt "MainWindow|"
+msgid "Display the version history of a file via the fossil UI"
+msgstr "Έμφάνιση του ιστόρικου ενός αρχείο μέσω του fossil"
+
+#: ../ui/MainWindow.ui:506
+msgctxt "MainWindow|"
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+#: ../ui/MainWindow.ui:518
+msgctxt "MainWindow|"
+msgid "Fossil UI"
+msgstr "Fossil UI"
+
+#: ../ui/MainWindow.ui:521 ../ui/MainWindow.ui:524
+msgctxt "MainWindow|"
+msgid "Starts the Fosill UI in the Web Browser"
+msgstr "Εκκίνηση του Fosill UI μέσω του Web Browser"
+
+#: ../ui/MainWindow.ui:533
+msgctxt "MainWindow|"
+msgid "Revert"
+msgstr "Επαναφορά"
+
+#: ../ui/MainWindow.ui:536 ../ui/MainWindow.ui:539
+msgctxt "MainWindow|"
+msgid "Revert files to the last commited version"
+msgstr "Επαναφορά αρχείων στην τελευταία καταχωρημένη έκδοση"
+
+#: ../ui/MainWindow.ui:548
+msgctxt "MainWindow|"
+msgid "Clear Log"
+msgstr "Διαγραφή Ιστορικού"
+
+#: ../ui/MainWindow.ui:551
+msgctxt "MainWindow|"
+msgid "Clears the log"
+msgstr "Διαγραφή του ιστορικού εκτέλεσης του Fossil"
+
+#: ../ui/MainWindow.ui:554
+msgctxt "MainWindow|"
+msgid "Ctrl+K"
+msgstr "Ctrl+K"
+
+#: ../ui/MainWindow.ui:563
+msgctxt "MainWindow|"
+msgid "Timeline"
+msgstr "Χρονικό"
+
+#: ../ui/MainWindow.ui:566 ../ui/MainWindow.ui:569
+msgctxt "MainWindow|"
+msgid "Display the change history of the fossil repository"
+msgstr "Εμφάνιση του χρονικού του αποθετηρίου fossil"
+
+#: ../ui/MainWindow.ui:578
+msgctxt "MainWindow|"
+msgid "Open file"
+msgstr "Άνοιγμα αρχείου"
+
+#: ../ui/MainWindow.ui:581 ../ui/MainWindow.ui:584
+msgctxt "MainWindow|"
+msgid "Open the selected file"
+msgstr "Άνοιγμα του επιλεγμένου αρχείου"
+
+#: ../ui/MainWindow.ui:587
+msgctxt "MainWindow|"
+msgid "Ctrl+Return"
+msgstr "Ctrl+Return"
+
+#: ../ui/MainWindow.ui:596
+msgctxt "MainWindow|"
+msgid "Open Containing"
+msgstr "Άνοιγμα φακέλου"
+
+#: ../ui/MainWindow.ui:599 ../ui/MainWindow.ui:602
+msgctxt "MainWindow|"
+msgid "Open the folder containing the selected file"
+msgstr "Άνοιγμα του φακέλου που περιέχει το επιλεγμένο αρχείο"
+
+#: ../ui/MainWindow.ui:605
+msgctxt "MainWindow|"
+msgid "Alt+Return"
+msgstr "Alt+Return"
+
+#: ../ui/MainWindow.ui:614 ../src/MainWindow.cpp:1913
+msgctxt "MainWindow|"
+msgid "Undo"
+msgstr "Αναίρεση"
+
+#: ../ui/MainWindow.ui:617 ../ui/MainWindow.ui:620
+msgctxt "MainWindow|"
+msgid "Undo the last fossil action"
+msgstr "Αναίρεση της τελευταίας ενέργειας του fossil"
+
+#: ../ui/MainWindow.ui:623
+msgctxt "MainWindow|"
+msgid "Ctrl+Z"
+msgstr "Ctrl+Z"
+
+#: ../ui/MainWindow.ui:632
+msgctxt "MainWindow|"
+msgid "&About..."
+msgstr "Σχετικά..."
+
+#: ../ui/MainWindow.ui:635
+msgctxt "MainWindow|"
+msgid "About Fuel"
+msgstr "Σχετικά με το Fuel"
+
+#: ../ui/MainWindow.ui:644 ../src/MainWindow.cpp:1956
+msgctxt "MainWindow|"
+msgid "Update"
+msgstr "Ενημέρωση"
+
+#: ../ui/MainWindow.ui:647 ../ui/MainWindow.ui:650
+msgctxt "MainWindow|"
+msgid "Update the workspace to the latest version"
+msgstr "Ενημέρωση του χώρου εργασίας στην τελευταία έκδοση"
+
+#: ../ui/MainWindow.ui:653
+msgctxt "MainWindow|"
+msgid "Ctrl+U"
+msgstr "Ctrl+U"
+
+#: ../ui/MainWindow.ui:662
+msgctxt "MainWindow|"
+msgid "&Preferences..."
+msgstr "&Ρυθμίσεις"
+
+#: ../ui/MainWindow.ui:665 ../ui/MainWindow.ui:668
+msgctxt "MainWindow|"
+msgid "Fuel Preferences"
+msgstr "Ρυθμίσεις του Fuel"
+
+#: ../ui/MainWindow.ui:679
+msgctxt "MainWindow|"
+msgid "&Modified"
+msgstr "&Τροποποιημένα"
+
+#: ../ui/MainWindow.ui:682
+msgctxt "MainWindow|"
+msgid "Show modifed files"
+msgstr "Εμφάνιση τροποποιημένων αρχείων"
+
+#: ../ui/MainWindow.ui:693
+msgctxt "MainWindow|"
+msgid "&Unchanged"
+msgstr "&Αμετάβλητα"
+
+#: ../ui/MainWindow.ui:696
+msgctxt "MainWindow|"
+msgid "Show unchanged files"
+msgstr "Εμφάνιση αμετάβλητων αρχείων"
+
+#: ../ui/MainWindow.ui:707
+msgctxt "MainWindow|"
+msgid "Un&known"
+msgstr "Ά&γνωστα"
+
+#: ../ui/MainWindow.ui:710
+msgctxt "MainWindow|"
+msgid "Show unknown files"
+msgstr "Έμφάνιση άγνωστων αρχείων"
+
+#: ../ui/MainWindow.ui:718
+msgctxt "MainWindow|"
+msgid "&Ignored"
+msgstr "Αγνοημένα"
+
+#: ../ui/MainWindow.ui:721
+msgctxt "MainWindow|"
+msgid "Show ignored files"
+msgstr "Έμφάνιση αγνοημένων αρχείων"
+
+#: ../ui/MainWindow.ui:729
+msgctxt "MainWindow|"
+msgid "File &List"
+msgstr "Λίστα Αρχείων"
+
+#: ../ui/MainWindow.ui:732 ../ui/MainWindow.ui:735
+msgctxt "MainWindow|"
+msgid "View as files as a list"
+msgstr "Εμφάνιση αρχείων ως λίστα"
+
+#: ../ui/MainWindow.ui:738
+msgctxt "MainWindow|"
+msgid "View the workspace as a list of files"
+msgstr "Εμφάνιση του χώρου εργασίας ως λίστα αρχείων"
+
+#: ../ui/MainWindow.ui:747
+msgctxt "MainWindow|"
+msgid "Open Folder"
+msgstr "Άνοιγμα Φακέλου"
+
+#: ../ui/MainWindow.ui:750 ../ui/MainWindow.ui:753
+msgctxt "MainWindow|"
+msgid "Open the selected folder"
+msgstr "Άνοιγμα του επιλεγμένου φακέλου"
+
+#: ../ui/MainWindow.ui:762 ../src/MainWindow.cpp:2161
+#: ../src/MainWindow.cpp:2206
+msgctxt "MainWindow|"
+msgid "Rename Folder"
+msgstr "Μετονομασία Φακέλου"
+
+#: ../ui/MainWindow.ui:765 ../ui/MainWindow.ui:768
+msgctxt "MainWindow|"
+msgid "Rename the selected folder"
+msgstr "Μετονομασία του επιλεγμένου φακέλου"
+
+#: ../ui/MainWindow.ui:777
+msgctxt "MainWindow|"
+msgid "Stash changes"
+msgstr "Στοίβαγμα Αλλαγών"
+
+#: ../ui/MainWindow.ui:780
+msgctxt "MainWindow|"
+msgid "Show the stash"
+msgstr "Εμφάνιση της στοίβας"
+
+#: ../ui/MainWindow.ui:789 ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "Apply Stash"
+msgstr "Εφαρμογή Στοίβας"
+
+#: ../ui/MainWindow.ui:792 ../ui/MainWindow.ui:795
+msgctxt "MainWindow|"
+msgid "Apply stashed changes"
+msgstr "Εφαρμογή των αλλαγών στοίβας"
+
+#: ../ui/MainWindow.ui:803
+msgctxt "MainWindow|"
+msgid "&Stashed Changes"
+msgstr "Στοίβες Αλλαγών"
+
+#: ../ui/MainWindow.ui:806
+msgctxt "MainWindow|"
+msgid "View the Stash"
+msgstr "Εμφάνιση της Στόιβας"
+
+#: ../ui/MainWindow.ui:809
+msgctxt "MainWindow|"
+msgid "Show the list of stashed changes"
+msgstr "Εμφάνιση της λίστας με τις στοιβαγμένες αλλαγές"
+
+#: ../ui/MainWindow.ui:818
+msgctxt "MainWindow|"
+msgid "Delete Stash"
+msgstr "Διαγραφή Στοίβας"
+
+#: ../ui/MainWindow.ui:827
+msgctxt "MainWindow|"
+msgid "Diff Stash"
+msgstr "Σύγκριση Στοίβας"
+
+#: ../src/MainWindow.cpp:249 ../src/MainWindow.cpp:306
+#: ../src/MainWindow.cpp:314 ../src/MainWindow.cpp:384
+#: ../src/MainWindow.cpp:412 ../src/MainWindow.cpp:420
+#: ../src/MainWindow.cpp:431 ../src/MainWindow.cpp:449
+#: ../src/MainWindow.cpp:482 ../src/MainWindow.cpp:1678
+#: ../src/MainWindow.cpp:1692 ../src/MainWindow.cpp:1734
+#: ../src/MainWindow.cpp:1743 ../src/MainWindow.cpp:1866
+#: ../src/MainWindow.cpp:2173 ../src/MainWindow.cpp:2182
+#: ../src/MainWindow.cpp:2245 ../src/MainWindow.cpp:2258
+#: ../src/MainWindow.cpp:2266 ../src/MainWindow.cpp:2280
+#: ../src/MainWindow.cpp:2286 ../src/MainWindow.cpp:2328
+#: ../src/MainWindow.cpp:2337
+msgctxt "MainWindow|"
+msgid "Error"
+msgstr "Σφάλμα"
+
+#: ../src/MainWindow.cpp:249
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Could not change current directory to '%0'"
+msgstr "Η αλλαγή του τρέχοντος φακέλου στο '%0' δεν ήταν δυνατή."
+
+#: ../src/MainWindow.cpp:291
+msgctxt "MainWindow|"
+msgid ""
+"A workspace does not exist in this folder.\n"
+"Would you like to create one here?"
+msgstr ""
+"Δεν υπαρχεί χώρος εργασίας σε αυτό το φάκελο.\n"
+"Θα θέλατε να δημιουργήσετε έναν εδώ;"
+
+#: ../src/MainWindow.cpp:291
+msgctxt "MainWindow|"
+msgid "Open Workspace"
+msgstr "Άνοιγμα Χώρου Εργασίας"
+
+#: ../src/MainWindow.cpp:295 ../src/MainWindow.cpp:397
+msgctxt "MainWindow|"
+msgid "Select Workspace Folder"
+msgstr "Επιλέξτε Φάκελο Χώρου Εργασίας"
+
+#: ../src/MainWindow.cpp:306 ../src/MainWindow.cpp:420
+msgctxt "MainWindow|"
+msgid "Could not change current directory"
+msgstr "Η αλλαγή του τρέχοντος φακέλου δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:314 ../src/MainWindow.cpp:431
+msgctxt "MainWindow|"
+msgid "Could not open repository."
+msgstr "Το άνοιγμα του αποθετηρίου δεν ήταν δυνατό."
+
+#: ../src/MainWindow.cpp:352
+msgctxt "MainWindow|"
+msgid "Fossil Files (*.fossil _FOSSIL_ .fslckout)"
+msgstr "Αρχεία Fossil (*.fossil _FOSSIL_ .fslckout)"
+
+#: ../src/MainWindow.cpp:356
+msgctxt "MainWindow|"
+msgid "Open Fossil Repository"
+msgstr "Άνοιγμα Αποθετηρίου Fossil"
+
+#: ../src/MainWindow.cpp:369
+msgctxt "MainWindow|"
+msgid "Fossil Repositories (*.fossil)"
+msgstr "Αποθετήρια Fossil (*.fossil)"
+
+#: ../src/MainWindow.cpp:374
+msgctxt "MainWindow|"
+msgid "New Fossil Repository"
+msgstr "Νέο Αποθετήριο Fossil"
+
+#: ../src/MainWindow.cpp:384
+msgctxt "MainWindow|"
+msgid ""
+"A repository file already exists.\n"
+"Repository creation aborted."
+msgstr ""
+"Ένα αρχείο αποθετηρίου υπάρχει ήδη.\n"
+"Η δημιουργία αποθετηρίου ακυρώθηκε."
+
+#: ../src/MainWindow.cpp:393
+msgctxt "MainWindow|"
+msgid "Create Workspace"
+msgstr "Δημιουργία Χώρου Εργασίας"
+
+#: ../src/MainWindow.cpp:393
+msgctxt "MainWindow|"
+msgid "Would you like to create a workspace in the same folder?"
+msgstr "Θα θέλατε να δημιουργήσετε ένα χώρο εργασίας στον ίδιο φάκελο;"
+
+#: ../src/MainWindow.cpp:412
+msgctxt "MainWindow|"
+msgid "Could not create repository."
+msgstr "Η δημιουργία αποθετηρίου δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:443
+msgctxt "MainWindow|"
+msgid "Close Workspace"
+msgstr "Κλείσιμο Χώρου Εργασίας"
+
+#: ../src/MainWindow.cpp:443
+msgctxt "MainWindow|"
+msgid "Are you sure want to close this workspace?"
+msgstr "Είσατε σίγουροι ότι θέλετε να κλέισετε αυτό τον χώρο εργασίας;"
+
+#: ../src/MainWindow.cpp:449
+msgctxt "MainWindow|"
+msgid ""
+"Cannot close the workspace.\n"
+"Are there still uncommitted changes available?"
+msgstr ""
+"Το κλείσιμο του χώρου εργασίας δεν ήταν δυνατό.\n"
+"Μήπως υπάρχουν ακόμα αλλαγές που δεν καταχωρηθεί;"
+
+#: ../src/MainWindow.cpp:482
+msgctxt "MainWindow|"
+msgid "Could not clone the repository"
+msgstr "Η αντιγραφή του αποθετηρίου δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:586
+msgctxt "MainWindow|"
+msgid "No workspace detected."
+msgstr "Δεν επιλέχτηκε χώρος εργασίας"
+
+#: ../src/MainWindow.cpp:594
+msgctxt "MainWindow|"
+msgid "Old repository schema detected. Consider running 'fossil rebuild'"
+msgstr "Εντοπίστηκε παλιό σχήμα αποθετηρίου. Εκτελέστε 'fossil rebuild'"
+
+#: ../src/MainWindow.cpp:631
+msgctxt "MainWindow|"
+msgid "Scanning Workspace..."
+msgstr "Έλεγχος Χώρου Εργασίας..."
+
+#: ../src/MainWindow.cpp:671
+msgctxt "MainWindow|"
+msgid "Updating..."
+msgstr "Ενημέρωση..."
+
+#: ../src/MainWindow.cpp:831
+msgctxt "MainWindow|"
+msgid "Folders"
+msgstr "Φάκελοι"
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "S"
+msgstr "Κ"
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "File"
+msgstr "Αρχείο"
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "Ext"
+msgstr "Προέκταση"
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "Modified"
+msgstr "Τροποποίηση"
+
+#: ../src/MainWindow.cpp:865
+msgctxt "MainWindow|"
+msgid "Path"
+msgstr "Διαδρομή"
+
+#: ../src/MainWindow.cpp:991
+msgctxt "MainWindow|"
+msgid "Stashes"
+msgstr "Στοίβες"
+
+#: ../src/MainWindow.cpp:1084
+msgctxt "MainWindow|"
+msgid "Running Fossil"
+msgstr "Εκτέλεση Fossil"
+
+#: ../src/MainWindow.cpp:1117
+msgctxt "MainWindow|"
+msgid "Terminated"
+msgstr "Διακόπηκε"
+
+#: ../src/MainWindow.cpp:1542
+msgctxt "MainWindow|"
+msgid "Fossil UI is already running"
+msgstr "Το UI του Fossil εκτελείται ήδη"
+
+#: ../src/MainWindow.cpp:1551
+msgctxt "MainWindow|"
+msgid "Starting Fossil browser UI. Please wait."
+msgstr "Εκκίνηση του Fossil UI. Παρακαλώ περιμένετε."
+
+#: ../src/MainWindow.cpp:1858 ../src/MainWindow.cpp:2161
+msgctxt "MainWindow|"
+msgid "New name"
+msgstr "Νέο όνομα"
+
+#: ../src/MainWindow.cpp:1937
+msgctxt "MainWindow|"
+msgid ""
+"a GUI frontend to the Fossil SCM\n"
+"by Kostas Karanikolas\n"
+"Released under the GNU GPL"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2173 ../src/MainWindow.cpp:2182
+msgctxt "MainWindow|"
+msgid "Cannot rename folder."
+msgstr "Η μετονομασία του φακέλου δεν ήταν δυνατή."
+
+#: ../src/MainWindow.cpp:2173
+msgctxt "MainWindow|"
+msgid "Folder name contains invalid characters."
+msgstr ""
+"Το όνομα του φακέλου περιέχει μη αποδεκτούς χαρακτήρες."
+
+#: ../src/MainWindow.cpp:2182
+msgctxt "MainWindow|"
+msgid "This folder exists already."
+msgstr ""
+
+#: ../src/MainWindow.cpp:2222
+msgctxt "MainWindow|"
+msgid "Move aborted due to errors"
+msgstr "Η μετακίνηση ακυρώθηκε λόγω σφαλμάτων"
+
+#: ../src/MainWindow.cpp:2242
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Creating folder '%0'"
+msgstr "Δημιουργία φακέλου '%0'"
+
+#: ../src/MainWindow.cpp:2245
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot make target folder '%0'"
+msgstr "Η δημιουργία του φακέλου '%0' δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:2262
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Copying file '%0' to '%1'"
+msgstr "Αντιγραφή του αρχείου '%0' στο '%1'"
+
+#: ../src/MainWindow.cpp:2276
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Removing old file '%0'"
+msgstr "Διαγραφή παλαιού αρχείου '%0'"
+
+#: ../src/MainWindow.cpp:2291
+msgctxt "MainWindow|"
+msgid "Folder renamed completed. Don't forget to commit!"
+msgstr ""
+"Η μετονομασία του φακέλου ολοκληρώθηκε. Μην ξεχάσετε να κάνετε καταχώρηση!"
+
+#: ../src/MainWindow.cpp:2369
+msgctxt "MainWindow|"
+msgid "Stash application aborted due to errors"
+msgstr "Η εφαρμογή της στοίβας ακυρώθηκε λόγω σφαλμάτων"
+
+#: ../src/MainWindow.cpp:2382 ../src/MainWindow.cpp:2410
+msgctxt "MainWindow|"
+msgid "Stash deletion aborted due to errors"
+msgstr "Η διαγραφή της στοίβας ακυρώθηκε λόγω σφαλμάτων"
+
+#: ../src/MainWindow.cpp:1096 ../src/MainWindow.cpp:1557
+msgctxt "MainWindow|"
+msgid "Could not start Fossil executable '%s'"
+msgstr "Η εκκίνηση του εκτελέσιμου Fossil '%s' δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:1678 ../src/MainWindow.cpp:1692
+msgctxt "MainWindow|"
+msgid ""
+"A remote repository has not been specified.\n"
+"Use the preferences window to set the remote repostory location"
+msgstr ""
+"Το απομακρυσμένο αποθετήριο δεν έχει οριστεί.\n"
+"Χρησημοποιήστε το παράθυρο ρυθμίσεων για να ορίσετε την τοποθεσία του"
+
+#: ../src/MainWindow.cpp:1711
+msgctxt "MainWindow|"
+msgid "Commit Changes"
+msgstr "Καταχώρηση Αλλαγών"
+
+#: ../src/MainWindow.cpp:1734 ../src/MainWindow.cpp:1743
+msgctxt "MainWindow|"
+msgid "Could not generate comment file"
+msgstr "Η δημιουργία του αρχείου σχολίων δεν ήταν δυνατή"
+
+#: ../src/MainWindow.cpp:1780
+msgctxt "MainWindow|"
+msgid "Add files"
+msgstr "Προσθήκη αρχείων"
+
+#: ../src/MainWindow.cpp:1780
+msgctxt "MainWindow|"
+msgid "The following files will be added. Are you sure?"
+msgstr "Τα παρακάτω αρχεία θα προστεθούν. Είσαστε σίγουροι;"
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid "Remove files"
+msgstr "Αφαίρεση αρχείων"
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid ""
+"The following files will be removed from the repository.\n"
+"Are you sure?"
+msgstr ""
+"Τα παρακάτω αρχεία θα αφαιρεθούν από το αποθετήριο.\n"
+"Είσαστε σίγουροι;"
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid "Also delete the local files"
+msgstr "Διαγραφή των τοπικών αρχείων επίσης"
+
+#: ../src/MainWindow.cpp:1837
+msgctxt "MainWindow|"
+msgid "Revert files"
+msgstr "Επαναφορά αρχέιων"
+
+#: ../src/MainWindow.cpp:1837
+msgctxt "MainWindow|"
+msgid "The following files will be reverted. Are you sure?"
+msgstr ""
+"Τα παρακάτω αρχεία θα επαναφερθούν.\n"
+"Είσαστε σίγουροι;"
+
+#: ../src/MainWindow.cpp:1866
+#, qt-format
+msgctxt "MainWindow|"
+msgid ""
+"File '%0' already exists.\n"
+"Rename aborted."
+msgstr ""
+"Το αρχείο '%0' υπάρχει ήδη.\n"
+"Η μετονομασία ακυρώθηκε."
+
+#: ../src/MainWindow.cpp:1913
+msgctxt "MainWindow|"
+msgid "The following actions will be undone. Are you sure?"
+msgstr "Οι παρακάτω ενέργειες θα αναιρεθούν. Είσαστε σίγουροι;"
+
+#: ../src/MainWindow.cpp:1932
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Fossil version %0"
+msgstr "Έκδοση Fossil %0"
+
+#: ../src/MainWindow.cpp:1935
+msgctxt "MainWindow|"
+msgid "About Fuel..."
+msgstr "Σχετικά με το Fuel..."
+
+#: ../src/MainWindow.cpp:1941
+msgctxt "MainWindow|"
+msgid ""
+"Icon-set by Deleket - Jojo Mendoza\n"
+"Available under the CC Attribution Noncommercial No Derivate 3.0 License"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1956
+msgctxt "MainWindow|"
+msgid "The following files will be updated. Are you sure?"
+msgstr "Τα παρακάτω αρχεία θα ενημερωθούν. Είσατε σίγουροι;"
+
+#: ../src/MainWindow.cpp:2206
+#, qt-format
+msgctxt "MainWindow|"
+msgid ""
+"Renaming folder '%0' to '%1'\n"
+"The following files will be moved in the repository. Are you sure?"
+msgstr "Μετονομασία τοθ φακέλου '%0' σε '%1'\n"
+"Τα παρακάτω αρχεία θα μετακινηθούν στο αποθετήριο. Είσαστε σίγουροι;"
+
+#: ../src/MainWindow.cpp:2209
+msgctxt "MainWindow|"
+msgid "Also move the workspace files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2258
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Target file '%0' exists already"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2266
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot copy file '%0' to '%1'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2280
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Source file '%0' does not exist"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2286
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot remove file '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2320
+msgctxt "MainWindow|"
+msgid "Revert stashed files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2321
+msgctxt "MainWindow|"
+msgid "Stash Changes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2328
+msgctxt "MainWindow|"
+msgid "Invalid stash name"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2337
+msgctxt "MainWindow|"
+msgid "This stash already exists"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "The following stashes will be applied. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "Delete after applying"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2399
+msgctxt "MainWindow|"
+msgid "Delete Stashes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2399
+msgctxt "MainWindow|"
+msgid "The following stashes will be deleted. Are you sure?"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:17
+msgctxt "SettingsDialog|"
+msgid "Settings"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:34
+msgctxt "SettingsDialog|"
+msgid "Application"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:52
+msgctxt "SettingsDialog|"
+msgid "Fossil Path"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:61
+msgctxt "SettingsDialog|"
+msgid "Path to the fossil executable. Leave blank to use the default fossil"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:80 ../ui/SettingsDialog.ui:123
+#: ../ui/SettingsDialog.ui:166
+msgctxt "SettingsDialog|"
+msgid "..."
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:95
+msgctxt "SettingsDialog|"
+msgid "Graphical Diff "
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:104
+msgctxt "SettingsDialog|"
+msgid "Path to graphical diff tool"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:138
+msgctxt "SettingsDialog|"
+msgid "Graphical Merge"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:147
+msgctxt "SettingsDialog|"
+msgid "Path to the graphical merge tool"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:181
+msgctxt "SettingsDialog|"
+msgid "Commit Messages"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:194
+msgctxt "SettingsDialog|"
+msgid "Clear the commit message history"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:197
+msgctxt "SettingsDialog|"
+msgid "Clear"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:210
+msgctxt "SettingsDialog|"
+msgid "Double-click Action"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:223
+msgctxt "SettingsDialog|"
+msgid "Action to perfom when double-clicking a file"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:233
+msgctxt "SettingsDialog|"
+msgid "Language"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:246
+msgctxt "SettingsDialog|"
+msgid "Language to use for the user interface"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:258
+msgctxt "SettingsDialog|"
+msgid "Repository"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:276
+msgctxt "SettingsDialog|"
+msgid "Remote Url"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:289
+msgctxt "SettingsDialog|"
+msgid ""
+"The remote url used to push/pull changes.\n"
+"URL style user names and passwords are also supported.\n"
+"For example http://username:password@server.com/fossil"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:304
+msgctxt "SettingsDialog|"
+msgid "Ignore List"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:317
+msgctxt "SettingsDialog|"
+msgid ""
+"A comma separated list of glob-style file/path patterns ignored in fossil "
+"file operations"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:330
+msgctxt "SettingsDialog|"
+msgid "Ignore CR/NL"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:343
+msgctxt "SettingsDialog|"
+msgid ""
+"A comma separated list of glob-style file patterns to exclude from fossil's "
+"CR/NL consistency checking"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:16
+msgctxt "SettingsDialog|"
+msgid "Applications"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:24
+#, qt-format
+msgctxt "SettingsDialog|"
+msgid "Select %1"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:45
+msgctxt "SettingsDialog|"
+msgid "Diff File"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:46
+msgctxt "SettingsDialog|"
+msgid "Open File"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:47
+msgctxt "SettingsDialog|"
+msgid "Open Containing Folder"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:97
+msgctxt "SettingsDialog|"
+msgid "Restart required"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:97
+msgctxt "SettingsDialog|"
+msgid "The language change will take effect after restarting the application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:111
+msgctxt "SettingsDialog|"
+msgid "Fossil executable"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:119
+msgctxt "SettingsDialog|"
+msgid "Graphical Diff application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:127
+msgctxt "SettingsDialog|"
+msgid "Graphical Merge application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:135
+msgctxt "SettingsDialog|"
+msgid "Clear Commit Message History"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:135
+msgctxt "SettingsDialog|"
+msgid "Are you sure want to clear the commit message history?"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:142
+msgctxt "SettingsDialog|"
+msgid "English (US)"
+msgstr "Αγγλικά (Ηνωμένων Πολιτειών)"
+
+#: ../src/SettingsDialog.cpp:143
+msgctxt "SettingsDialog|"
+msgid "Japanese"
+msgstr "Ιαπωνικά"
+
+#: ../src/SettingsDialog.cpp:144
+msgctxt "SettingsDialog|"
+msgid "Greek"
+msgstr "Ελληνικά"
diff --git a/intl/en_US.pot b/intl/en_US.pot
new file mode 100644
index 0000000..25b4a8a
--- /dev/null
+++ b/intl/en_US.pot
@@ -0,0 +1,1199 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Language: en.US\n"
+"X-Source-Language: en.US\n"
+"X-Qt-Contexts: true\n"
+
+#: ../ui/CloneDialog.ui:17
+msgctxt "CloneDialog|"
+msgid "Clone Repository"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:28
+msgctxt "CloneDialog|"
+msgid "URL"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:35
+msgctxt "CloneDialog|"
+msgid "The URL of the source repository"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:42
+msgctxt "CloneDialog|"
+msgid "User Name"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:49
+msgctxt "CloneDialog|"
+msgid ""
+"The user name used to access the remote repository. Leave blank if not "
+"required"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:56
+msgctxt "CloneDialog|"
+msgid "Password"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:63
+msgctxt "CloneDialog|"
+msgid ""
+"The password used to access the remote repository. Leave blank if not "
+"required"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:73
+msgctxt "CloneDialog|"
+msgid "Repository"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:82
+msgctxt "CloneDialog|"
+msgid "Path to the local repository file"
+msgstr ""
+
+#: ../ui/CloneDialog.ui:101
+msgctxt "CloneDialog|"
+msgid "..."
+msgstr ""
+
+#: ../src/CloneDialog.cpp:52 ../src/CloneDialog.cpp:61 ../src/CloneDialog.cpp:87
+msgctxt "CloneDialog|"
+msgid "Error"
+msgstr ""
+
+#: ../src/CloneDialog.cpp:52
+msgctxt "CloneDialog|"
+msgid "Invalid URL."
+msgstr ""
+
+#: ../src/CloneDialog.cpp:61
+msgctxt "CloneDialog|"
+msgid "Invalid Repository File."
+msgstr ""
+
+#: ../src/CloneDialog.cpp:72
+msgctxt "CloneDialog|"
+msgid "Fossil Repository (*.fossil)"
+msgstr ""
+
+#: ../src/CloneDialog.cpp:76
+msgctxt "CloneDialog|"
+msgid "Select Fossil Repository"
+msgstr ""
+
+#: ../src/CloneDialog.cpp:87
+msgctxt "CloneDialog|"
+msgid "This repository file already exists."
+msgstr ""
+
+#: ../ui/CommitDialog.ui:17
+msgctxt "CommitDialog|"
+msgid "Commit"
+msgstr ""
+
+#: ../ui/FileActionDialog.ui:17
+msgctxt "FileActionDialog|"
+msgid "File Action"
+msgstr ""
+
+#: ../ui/MainWindow.ui:14
+msgctxt "MainWindow|"
+msgid "Fuel"
+msgstr ""
+
+#: ../ui/MainWindow.ui:184
+msgctxt "MainWindow|"
+msgid "&File"
+msgstr ""
+
+#: ../ui/MainWindow.ui:199
+msgctxt "MainWindow|"
+msgid "&Help"
+msgstr ""
+
+#: ../ui/MainWindow.ui:205
+msgctxt "MainWindow|"
+msgid "&View"
+msgstr ""
+
+#: ../ui/MainWindow.ui:222
+msgctxt "MainWindow|"
+msgid "Main Toolbar"
+msgstr ""
+
+#: ../ui/MainWindow.ui:276
+msgctxt "MainWindow|"
+msgid "Refresh"
+msgstr ""
+
+#: ../ui/MainWindow.ui:279 ../ui/MainWindow.ui:282
+msgctxt "MainWindow|"
+msgid "Refresh the views"
+msgstr ""
+
+#: ../ui/MainWindow.ui:285
+msgctxt "MainWindow|"
+msgid "F5"
+msgstr ""
+
+#: ../ui/MainWindow.ui:294
+msgctxt "MainWindow|"
+msgid "Commit"
+msgstr ""
+
+#: ../ui/MainWindow.ui:297 ../ui/MainWindow.ui:300
+msgctxt "MainWindow|"
+msgid "Commit modifications"
+msgstr ""
+
+#: ../ui/MainWindow.ui:303
+msgctxt "MainWindow|"
+msgid "Ctrl+M"
+msgstr ""
+
+#: ../ui/MainWindow.ui:312
+msgctxt "MainWindow|"
+msgid "Diff"
+msgstr ""
+
+#: ../ui/MainWindow.ui:315 ../ui/MainWindow.ui:318
+msgctxt "MainWindow|"
+msgid "Display the differences between the current and last committed version"
+msgstr ""
+
+#: ../ui/MainWindow.ui:321
+msgctxt "MainWindow|"
+msgid "Ctrl+D"
+msgstr ""
+
+#: ../ui/MainWindow.ui:330
+msgctxt "MainWindow|"
+msgid "Add"
+msgstr ""
+
+#: ../ui/MainWindow.ui:333 ../ui/MainWindow.ui:336
+msgctxt "MainWindow|"
+msgid "Add files to the repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:339
+msgctxt "MainWindow|"
+msgid "Ctrl++"
+msgstr ""
+
+#: ../ui/MainWindow.ui:348
+msgctxt "MainWindow|"
+msgid "Delete"
+msgstr ""
+
+#: ../ui/MainWindow.ui:351 ../ui/MainWindow.ui:354
+msgctxt "MainWindow|"
+msgid "Delete files from the repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:357
+msgctxt "MainWindow|"
+msgid "Ctrl+-"
+msgstr ""
+
+#: ../ui/MainWindow.ui:366
+msgctxt "MainWindow|"
+msgid "&New..."
+msgstr ""
+
+#: ../ui/MainWindow.ui:369 ../ui/MainWindow.ui:372
+msgctxt "MainWindow|"
+msgid "Make a new Fossil repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:375
+msgctxt "MainWindow|"
+msgid "Ctrl+N"
+msgstr ""
+
+#: ../ui/MainWindow.ui:384
+msgctxt "MainWindow|"
+msgid "&Open..."
+msgstr ""
+
+#: ../ui/MainWindow.ui:387 ../ui/MainWindow.ui:390
+msgctxt "MainWindow|"
+msgid "Open a Fossil repository or workspace folder"
+msgstr ""
+
+#: ../ui/MainWindow.ui:393
+msgctxt "MainWindow|"
+msgid "Ctrl+O"
+msgstr ""
+
+#: ../ui/MainWindow.ui:401
+msgctxt "MainWindow|"
+msgid "&Close"
+msgstr ""
+
+#: ../ui/MainWindow.ui:404 ../ui/MainWindow.ui:407
+msgctxt "MainWindow|"
+msgid "Close the current workspace"
+msgstr ""
+
+#: ../ui/MainWindow.ui:416
+msgctxt "MainWindow|"
+msgid "Clone..."
+msgstr ""
+
+#: ../ui/MainWindow.ui:425
+msgctxt "MainWindow|"
+msgid "Push"
+msgstr ""
+
+#: ../ui/MainWindow.ui:428 ../ui/MainWindow.ui:431
+msgctxt "MainWindow|"
+msgid "Push changes to the remote repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:434
+msgctxt "MainWindow|"
+msgid "Ctrl+P"
+msgstr ""
+
+#: ../ui/MainWindow.ui:443
+msgctxt "MainWindow|"
+msgid "Pull"
+msgstr ""
+
+#: ../ui/MainWindow.ui:446 ../ui/MainWindow.ui:449
+msgctxt "MainWindow|"
+msgid "Pull changes from the remote repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:452
+msgctxt "MainWindow|"
+msgid "Ctrl+L"
+msgstr ""
+
+#: ../ui/MainWindow.ui:461 ../src/MainWindow.cpp:1858
+msgctxt "MainWindow|"
+msgid "Rename"
+msgstr ""
+
+#: ../ui/MainWindow.ui:464 ../ui/MainWindow.ui:467
+msgctxt "MainWindow|"
+msgid "Rename the selected file"
+msgstr ""
+
+#: ../ui/MainWindow.ui:470
+msgctxt "MainWindow|"
+msgid "Ctrl+R"
+msgstr ""
+
+#: ../ui/MainWindow.ui:479
+msgctxt "MainWindow|"
+msgid "&Quit"
+msgstr ""
+
+#: ../ui/MainWindow.ui:482
+msgctxt "MainWindow|"
+msgid "Quit"
+msgstr ""
+
+#: ../ui/MainWindow.ui:485
+msgctxt "MainWindow|"
+msgid "Ctrl+Q"
+msgstr ""
+
+#: ../ui/MainWindow.ui:497
+msgctxt "MainWindow|"
+msgid "History"
+msgstr ""
+
+#: ../ui/MainWindow.ui:500 ../ui/MainWindow.ui:503
+msgctxt "MainWindow|"
+msgid "Display the version history of a file via the fossil UI"
+msgstr ""
+
+#: ../ui/MainWindow.ui:506
+msgctxt "MainWindow|"
+msgid "Ctrl+H"
+msgstr ""
+
+#: ../ui/MainWindow.ui:518
+msgctxt "MainWindow|"
+msgid "Fossil UI"
+msgstr ""
+
+#: ../ui/MainWindow.ui:521 ../ui/MainWindow.ui:524
+msgctxt "MainWindow|"
+msgid "Starts the Fosill UI in the Web Browser"
+msgstr ""
+
+#: ../ui/MainWindow.ui:533
+msgctxt "MainWindow|"
+msgid "Revert"
+msgstr ""
+
+#: ../ui/MainWindow.ui:536 ../ui/MainWindow.ui:539
+msgctxt "MainWindow|"
+msgid "Revert files to the last commited version"
+msgstr ""
+
+#: ../ui/MainWindow.ui:548
+msgctxt "MainWindow|"
+msgid "Clear Log"
+msgstr ""
+
+#: ../ui/MainWindow.ui:551
+msgctxt "MainWindow|"
+msgid "Clears the log"
+msgstr ""
+
+#: ../ui/MainWindow.ui:554
+msgctxt "MainWindow|"
+msgid "Ctrl+K"
+msgstr ""
+
+#: ../ui/MainWindow.ui:563
+msgctxt "MainWindow|"
+msgid "Timeline"
+msgstr ""
+
+#: ../ui/MainWindow.ui:566 ../ui/MainWindow.ui:569
+msgctxt "MainWindow|"
+msgid "Display the change history of the fossil repository"
+msgstr ""
+
+#: ../ui/MainWindow.ui:578
+msgctxt "MainWindow|"
+msgid "Open file"
+msgstr ""
+
+#: ../ui/MainWindow.ui:581 ../ui/MainWindow.ui:584
+msgctxt "MainWindow|"
+msgid "Open the selected file"
+msgstr ""
+
+#: ../ui/MainWindow.ui:587
+msgctxt "MainWindow|"
+msgid "Ctrl+Return"
+msgstr ""
+
+#: ../ui/MainWindow.ui:596
+msgctxt "MainWindow|"
+msgid "Open Containing"
+msgstr ""
+
+#: ../ui/MainWindow.ui:599 ../ui/MainWindow.ui:602
+msgctxt "MainWindow|"
+msgid "Open the folder containing the selected file"
+msgstr ""
+
+#: ../ui/MainWindow.ui:605
+msgctxt "MainWindow|"
+msgid "Alt+Return"
+msgstr ""
+
+#: ../ui/MainWindow.ui:614 ../src/MainWindow.cpp:1913
+msgctxt "MainWindow|"
+msgid "Undo"
+msgstr ""
+
+#: ../ui/MainWindow.ui:617 ../ui/MainWindow.ui:620
+msgctxt "MainWindow|"
+msgid "Undo the last fossil action"
+msgstr ""
+
+#: ../ui/MainWindow.ui:623
+msgctxt "MainWindow|"
+msgid "Ctrl+Z"
+msgstr ""
+
+#: ../ui/MainWindow.ui:632
+msgctxt "MainWindow|"
+msgid "&About..."
+msgstr ""
+
+#: ../ui/MainWindow.ui:635
+msgctxt "MainWindow|"
+msgid "About Fuel"
+msgstr ""
+
+#: ../ui/MainWindow.ui:644 ../src/MainWindow.cpp:1956
+msgctxt "MainWindow|"
+msgid "Update"
+msgstr ""
+
+#: ../ui/MainWindow.ui:647 ../ui/MainWindow.ui:650
+msgctxt "MainWindow|"
+msgid "Update the workspace to the latest version"
+msgstr ""
+
+#: ../ui/MainWindow.ui:653
+msgctxt "MainWindow|"
+msgid "Ctrl+U"
+msgstr ""
+
+#: ../ui/MainWindow.ui:662
+msgctxt "MainWindow|"
+msgid "&Preferences..."
+msgstr ""
+
+#: ../ui/MainWindow.ui:665 ../ui/MainWindow.ui:668
+msgctxt "MainWindow|"
+msgid "Fuel Preferences"
+msgstr ""
+
+#: ../ui/MainWindow.ui:679
+msgctxt "MainWindow|"
+msgid "&Modified"
+msgstr ""
+
+#: ../ui/MainWindow.ui:682
+msgctxt "MainWindow|"
+msgid "Show modifed files"
+msgstr ""
+
+#: ../ui/MainWindow.ui:693
+msgctxt "MainWindow|"
+msgid "&Unchanged"
+msgstr ""
+
+#: ../ui/MainWindow.ui:696
+msgctxt "MainWindow|"
+msgid "Show unchanged files"
+msgstr ""
+
+#: ../ui/MainWindow.ui:707
+msgctxt "MainWindow|"
+msgid "Un&known"
+msgstr ""
+
+#: ../ui/MainWindow.ui:710
+msgctxt "MainWindow|"
+msgid "Show unknown files"
+msgstr ""
+
+#: ../ui/MainWindow.ui:718
+msgctxt "MainWindow|"
+msgid "&Ignored"
+msgstr ""
+
+#: ../ui/MainWindow.ui:721
+msgctxt "MainWindow|"
+msgid "Show ignored files"
+msgstr ""
+
+#: ../ui/MainWindow.ui:729
+msgctxt "MainWindow|"
+msgid "File &List"
+msgstr ""
+
+#: ../ui/MainWindow.ui:732 ../ui/MainWindow.ui:735
+msgctxt "MainWindow|"
+msgid "View as files as a list"
+msgstr ""
+
+#: ../ui/MainWindow.ui:738
+msgctxt "MainWindow|"
+msgid "View the workspace as a list of files"
+msgstr ""
+
+#: ../ui/MainWindow.ui:747
+msgctxt "MainWindow|"
+msgid "Open Folder"
+msgstr ""
+
+#: ../ui/MainWindow.ui:750 ../ui/MainWindow.ui:753
+msgctxt "MainWindow|"
+msgid "Open the selected folder"
+msgstr ""
+
+#: ../ui/MainWindow.ui:762 ../src/MainWindow.cpp:2161 ../src/MainWindow.cpp:2206
+msgctxt "MainWindow|"
+msgid "Rename Folder"
+msgstr ""
+
+#: ../ui/MainWindow.ui:765 ../ui/MainWindow.ui:768
+msgctxt "MainWindow|"
+msgid "Rename the selected folder"
+msgstr ""
+
+#: ../ui/MainWindow.ui:777
+msgctxt "MainWindow|"
+msgid "Stash changes"
+msgstr ""
+
+#: ../ui/MainWindow.ui:780
+msgctxt "MainWindow|"
+msgid "Show the stash"
+msgstr ""
+
+#: ../ui/MainWindow.ui:789 ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "Apply Stash"
+msgstr ""
+
+#: ../ui/MainWindow.ui:792 ../ui/MainWindow.ui:795
+msgctxt "MainWindow|"
+msgid "Apply stashed changes"
+msgstr ""
+
+#: ../ui/MainWindow.ui:803
+msgctxt "MainWindow|"
+msgid "&Stashed Changes"
+msgstr ""
+
+#: ../ui/MainWindow.ui:806
+msgctxt "MainWindow|"
+msgid "View the Stash"
+msgstr ""
+
+#: ../ui/MainWindow.ui:809
+msgctxt "MainWindow|"
+msgid "Show the list of stashed changes"
+msgstr ""
+
+#: ../ui/MainWindow.ui:818
+msgctxt "MainWindow|"
+msgid "Delete Stash"
+msgstr ""
+
+#: ../ui/MainWindow.ui:827
+msgctxt "MainWindow|"
+msgid "Diff Stash"
+msgstr ""
+
+#: ../src/MainWindow.cpp:249 ../src/MainWindow.cpp:306
+#: ../src/MainWindow.cpp:314 ../src/MainWindow.cpp:384
+#: ../src/MainWindow.cpp:412 ../src/MainWindow.cpp:420
+#: ../src/MainWindow.cpp:431 ../src/MainWindow.cpp:449
+#: ../src/MainWindow.cpp:482 ../src/MainWindow.cpp:1678
+#: ../src/MainWindow.cpp:1692 ../src/MainWindow.cpp:1734
+#: ../src/MainWindow.cpp:1743 ../src/MainWindow.cpp:1866
+#: ../src/MainWindow.cpp:2173 ../src/MainWindow.cpp:2182
+#: ../src/MainWindow.cpp:2245 ../src/MainWindow.cpp:2258
+#: ../src/MainWindow.cpp:2266 ../src/MainWindow.cpp:2280
+#: ../src/MainWindow.cpp:2286 ../src/MainWindow.cpp:2328
+#: ../src/MainWindow.cpp:2337
+msgctxt "MainWindow|"
+msgid "Error"
+msgstr ""
+
+#: ../src/MainWindow.cpp:249
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Could not change current directory to '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:291
+msgctxt "MainWindow|"
+msgid ""
+"A workspace does not exist in this folder.\n"
+"Would you like to create one here?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:291
+msgctxt "MainWindow|"
+msgid "Open Workspace"
+msgstr ""
+
+#: ../src/MainWindow.cpp:295 ../src/MainWindow.cpp:397
+msgctxt "MainWindow|"
+msgid "Select Workspace Folder"
+msgstr ""
+
+#: ../src/MainWindow.cpp:306 ../src/MainWindow.cpp:420
+msgctxt "MainWindow|"
+msgid "Could not change current directory"
+msgstr ""
+
+#: ../src/MainWindow.cpp:314 ../src/MainWindow.cpp:431
+msgctxt "MainWindow|"
+msgid "Could not open repository."
+msgstr ""
+
+#: ../src/MainWindow.cpp:352
+msgctxt "MainWindow|"
+msgid "Fossil Files (*.fossil _FOSSIL_ .fslckout)"
+msgstr ""
+
+#: ../src/MainWindow.cpp:356
+msgctxt "MainWindow|"
+msgid "Open Fossil Repository"
+msgstr ""
+
+#: ../src/MainWindow.cpp:369
+msgctxt "MainWindow|"
+msgid "Fossil Repositories (*.fossil)"
+msgstr ""
+
+#: ../src/MainWindow.cpp:374
+msgctxt "MainWindow|"
+msgid "New Fossil Repository"
+msgstr ""
+
+#: ../src/MainWindow.cpp:384
+msgctxt "MainWindow|"
+msgid ""
+"A repository file already exists.\n"
+"Repository creation aborted."
+msgstr ""
+
+#: ../src/MainWindow.cpp:393
+msgctxt "MainWindow|"
+msgid "Create Workspace"
+msgstr ""
+
+#: ../src/MainWindow.cpp:393
+msgctxt "MainWindow|"
+msgid "Would you like to create a workspace in the same folder?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:412
+msgctxt "MainWindow|"
+msgid "Could not create repository."
+msgstr ""
+
+#: ../src/MainWindow.cpp:443
+msgctxt "MainWindow|"
+msgid "Close Workspace"
+msgstr ""
+
+#: ../src/MainWindow.cpp:443
+msgctxt "MainWindow|"
+msgid "Are you sure want to close this workspace?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:449
+msgctxt "MainWindow|"
+msgid ""
+"Cannot close the workspace.\n"
+"Are there still uncommitted changes available?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:482
+msgctxt "MainWindow|"
+msgid "Could not clone the repository"
+msgstr ""
+
+#: ../src/MainWindow.cpp:586
+msgctxt "MainWindow|"
+msgid "No workspace detected."
+msgstr ""
+
+#: ../src/MainWindow.cpp:594
+msgctxt "MainWindow|"
+msgid "Old repository schema detected. Consider running 'fossil rebuild'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:631
+msgctxt "MainWindow|"
+msgid "Scanning Workspace..."
+msgstr ""
+
+#: ../src/MainWindow.cpp:671
+msgctxt "MainWindow|"
+msgid "Updating..."
+msgstr ""
+
+#: ../src/MainWindow.cpp:831
+msgctxt "MainWindow|"
+msgid "Folders"
+msgstr ""
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "S"
+msgstr ""
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "File"
+msgstr ""
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "Ext"
+msgstr ""
+
+#: ../src/MainWindow.cpp:858
+msgctxt "MainWindow|"
+msgid "Modified"
+msgstr ""
+
+#: ../src/MainWindow.cpp:865
+msgctxt "MainWindow|"
+msgid "Path"
+msgstr ""
+
+#: ../src/MainWindow.cpp:991
+msgctxt "MainWindow|"
+msgid "Stashes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1084
+msgctxt "MainWindow|"
+msgid "Running Fossil"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1117
+msgctxt "MainWindow|"
+msgid "Terminated"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1542
+msgctxt "MainWindow|"
+msgid "Fossil UI is already running"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1551
+msgctxt "MainWindow|"
+msgid "Starting Fossil browser UI. Please wait."
+msgstr ""
+
+#: ../src/MainWindow.cpp:1858 ../src/MainWindow.cpp:2161
+msgctxt "MainWindow|"
+msgid "New name"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1937
+msgctxt "MainWindow|"
+msgid ""
+"a GUI frontend to the Fossil SCM\n"
+"by Kostas Karanikolas\n"
+"Released under the GNU GPL"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2173 ../src/MainWindow.cpp:2182
+msgctxt "MainWindow|"
+msgid "Cannot rename folder."
+msgstr ""
+
+#: ../src/MainWindow.cpp:2173
+msgctxt "MainWindow|"
+msgid "Folder name contains invalid characters."
+msgstr ""
+
+#: ../src/MainWindow.cpp:2182
+msgctxt "MainWindow|"
+msgid "This folder exists already."
+msgstr ""
+
+#: ../src/MainWindow.cpp:2222
+msgctxt "MainWindow|"
+msgid "Move aborted due to errors"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2242
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Creating folder '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2245
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot make target folder '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2262
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Copying file '%0' to '%1'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2276
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Removing old file '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2291
+msgctxt "MainWindow|"
+msgid "Folder renamed completed. Don't forget to commit!"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2369
+msgctxt "MainWindow|"
+msgid "Stash application aborted due to errors"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2382 ../src/MainWindow.cpp:2410
+msgctxt "MainWindow|"
+msgid "Stash deletion aborted due to errors"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1096 ../src/MainWindow.cpp:1557
+msgctxt "MainWindow|"
+msgid "Could not start Fossil executable '%s'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1678 ../src/MainWindow.cpp:1692
+msgctxt "MainWindow|"
+msgid ""
+"A remote repository has not been specified.\n"
+"Use the preferences window to set the remote repostory location"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1711
+msgctxt "MainWindow|"
+msgid "Commit Changes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1734 ../src/MainWindow.cpp:1743
+msgctxt "MainWindow|"
+msgid "Could not generate comment file"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1780
+msgctxt "MainWindow|"
+msgid "Add files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1780
+msgctxt "MainWindow|"
+msgid "The following files will be added. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid "Remove files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid ""
+"The following files will be removed from the repository.\n"
+"Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1805
+msgctxt "MainWindow|"
+msgid "Also delete the local files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1837
+msgctxt "MainWindow|"
+msgid "Revert files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1837
+msgctxt "MainWindow|"
+msgid "The following files will be reverted. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1866
+#, qt-format
+msgctxt "MainWindow|"
+msgid ""
+"File '%0' already exists.\n"
+"Rename aborted."
+msgstr ""
+
+#: ../src/MainWindow.cpp:1913
+msgctxt "MainWindow|"
+msgid "The following actions will be undone. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1932
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Fossil version %0"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1935
+msgctxt "MainWindow|"
+msgid "About Fuel..."
+msgstr ""
+
+#: ../src/MainWindow.cpp:1941
+msgctxt "MainWindow|"
+msgid ""
+"Icon-set by Deleket - Jojo Mendoza\n"
+"Available under the CC Attribution Noncommercial No Derivate 3.0 License"
+msgstr ""
+
+#: ../src/MainWindow.cpp:1956
+msgctxt "MainWindow|"
+msgid "The following files will be updated. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2206
+#, qt-format
+msgctxt "MainWindow|"
+msgid ""
+"Renaming folder '%0' to '%1'\n"
+"The following files will be moved in the repository. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2209
+msgctxt "MainWindow|"
+msgid "Also move the workspace files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2258
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Target file '%0' exists already"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2266
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot copy file '%0' to '%1'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2280
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Source file '%0' does not exist"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2286
+#, qt-format
+msgctxt "MainWindow|"
+msgid "Cannot remove file '%0'"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2320
+msgctxt "MainWindow|"
+msgid "Revert stashed files"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2321
+msgctxt "MainWindow|"
+msgid "Stash Changes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2328
+msgctxt "MainWindow|"
+msgid "Invalid stash name"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2337
+msgctxt "MainWindow|"
+msgid "This stash already exists"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "The following stashes will be applied. Are you sure?"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2358
+msgctxt "MainWindow|"
+msgid "Delete after applying"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2399
+msgctxt "MainWindow|"
+msgid "Delete Stashes"
+msgstr ""
+
+#: ../src/MainWindow.cpp:2399
+msgctxt "MainWindow|"
+msgid "The following stashes will be deleted. Are you sure?"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:17
+msgctxt "SettingsDialog|"
+msgid "Settings"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:34
+msgctxt "SettingsDialog|"
+msgid "Application"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:52
+msgctxt "SettingsDialog|"
+msgid "Fossil Path"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:61
+msgctxt "SettingsDialog|"
+msgid "Path to the fossil executable. Leave blank to use the default fossil"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:80 ../ui/SettingsDialog.ui:123
+#: ../ui/SettingsDialog.ui:166
+msgctxt "SettingsDialog|"
+msgid "..."
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:95
+msgctxt "SettingsDialog|"
+msgid "Graphical Diff "
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:104
+msgctxt "SettingsDialog|"
+msgid "Path to graphical diff tool"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:138
+msgctxt "SettingsDialog|"
+msgid "Graphical Merge"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:147
+msgctxt "SettingsDialog|"
+msgid "Path to the graphical merge tool"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:181
+msgctxt "SettingsDialog|"
+msgid "Commit Messages"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:194
+msgctxt "SettingsDialog|"
+msgid "Clear the commit message history"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:197
+msgctxt "SettingsDialog|"
+msgid "Clear"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:210
+msgctxt "SettingsDialog|"
+msgid "Double-click Action"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:223
+msgctxt "SettingsDialog|"
+msgid "Action to perfom when double-clicking a file"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:233
+msgctxt "SettingsDialog|"
+msgid "Language"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:246
+msgctxt "SettingsDialog|"
+msgid "Language to use for the user interface"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:258
+msgctxt "SettingsDialog|"
+msgid "Repository"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:276
+msgctxt "SettingsDialog|"
+msgid "Remote Url"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:289
+msgctxt "SettingsDialog|"
+msgid ""
+"The remote url used to push/pull changes.\n"
+"URL style user names and passwords are also supported.\n"
+"For example http://username:password@server.com/fossil"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:304
+msgctxt "SettingsDialog|"
+msgid "Ignore List"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:317
+msgctxt "SettingsDialog|"
+msgid ""
+"A comma separated list of glob-style file/path patterns ignored in fossil "
+"file operations"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:330
+msgctxt "SettingsDialog|"
+msgid "Ignore CR/NL"
+msgstr ""
+
+#: ../ui/SettingsDialog.ui:343
+msgctxt "SettingsDialog|"
+msgid ""
+"A comma separated list of glob-style file patterns to exclude from fossil's "
+"CR/NL consistency checking"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:16
+msgctxt "SettingsDialog|"
+msgid "Applications"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:24
+#, qt-format
+msgctxt "SettingsDialog|"
+msgid "Select %1"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:45
+msgctxt "SettingsDialog|"
+msgid "Diff File"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:46
+msgctxt "SettingsDialog|"
+msgid "Open File"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:47
+msgctxt "SettingsDialog|"
+msgid "Open Containing Folder"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:97
+msgctxt "SettingsDialog|"
+msgid "Restart required"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:97
+msgctxt "SettingsDialog|"
+msgid "The language change will take effect after restarting the application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:111
+msgctxt "SettingsDialog|"
+msgid "Fossil executable"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:119
+msgctxt "SettingsDialog|"
+msgid "Graphical Diff application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:127
+msgctxt "SettingsDialog|"
+msgid "Graphical Merge application"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:135
+msgctxt "SettingsDialog|"
+msgid "Clear Commit Message History"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:135
+msgctxt "SettingsDialog|"
+msgid "Are you sure want to clear the commit message history?"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:142
+msgctxt "SettingsDialog|"
+msgid "English (US)"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:143
+msgctxt "SettingsDialog|"
+msgid "Japanese"
+msgstr ""
+
+#: ../src/SettingsDialog.cpp:144
+msgctxt "SettingsDialog|"
+msgid "Greek"
+msgstr ""
diff --git a/intl/update.sh b/intl/update.sh
new file mode 100755
index 0000000..715d3f3
--- /dev/null
+++ b/intl/update.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# Regenerate the the reference pot
+lupdate ../fuel.pro -ts en_US.ts -source-language en.US -target-language en.US
+lconvert en_US.ts -o en_US.pot
+
+# Merge reference pot file with all languages
+# Requires the gettext tool msgmerge
+for i in *.po
+do
+ echo "Merging $i"
+ msgmerge --update $i en_US.pot
+done
+
+
diff --git a/manifest b/manifest
index 9eac04d..1051f22 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Initial\ssupport\sfor\slocalization
-D 2012-09-23T10:20:57.755
+C -\sReorganized\ssettings\smanagement\n-\sAdded\slocalisation\sUI\n-\sAdded\sGreek\slocalisation\n-\sMessage\stext\srefactoring\n
+D 2012-10-08T11:28:08.233
F dist/arch/PKGBUILD dd21073c035af4e6a4ecb3842c1fd7ae45c5e93d
F dist/win/fuel.iss ef3558dbba409eb194938b930377fc9ee27d319e
F doc/Building.txt 7c0f1060d4a08ed330058d4a3a68905c05228381
@@ -7,6 +7,9 @@ F doc/Changes.txt e21c9355aaeb7643c8d6784effd2f9ebadf3a8e0
F doc/License.txt 4cc77b90af91e615a64ae04893fdffa7939db84c
F fuel.pro f9053752c0ea40a7f9c90ac738a6c1689b92dfe5
F intl/convert.sh 6dfabd9c78df20b2c5c767b301cc4cd8813f442d x
+F intl/el_GR.po 3e5e6ce253260b706d2867eb5a173910a4592945
+F intl/en_US.pot bcc376ed49e645b8722f3dd18e45a229de4709bc
+F intl/update.sh 321b3012ea5129e9ea32e52df4f1de509e974882 x
F rsrc/fuel.desktop 43145556bc61f5a91b497c38a16aec44af271d29
F rsrc/fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79
F rsrc/icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8
@@ -164,7 +167,7 @@ F rsrc/icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6
F rsrc/icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342
-F rsrc/resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53
+F rsrc/resources.qrc 02f23809e7e24747d391f97de3a92518c3393410
F src/CloneDialog.cpp 85bc6473d1e3a47d0f981e96357a376be63ab0bc
F src/CloneDialog.h 1c63da4346ca20b67d52016b7b64875b9c5b477f
F src/CommitDialog.cpp c62ce7fb234e43ca8641c16522c750e6419bf947
@@ -175,10 +178,10 @@ F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2
F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
-F src/MainWindow.cpp 026cb929ead96dd5885be7ff14190c7ff8d033d5
-F src/MainWindow.h 7839457d09848b40beb03e36ddc4f755d8631881
-F src/SettingsDialog.cpp 824ab2445df35aec131e0c1d891c96f660c1bb28
-F src/SettingsDialog.h 09d3f375b2fab59248fae9bd12419f2985720d28
+F src/MainWindow.cpp f25ef475c51053c08aa786766fac68b50d652958
+F src/MainWindow.h 3f3825cab25058666b6706b36f51269ad5f65f3e
+F src/SettingsDialog.cpp 38ad760300955de5cce15d83702e1237ea3148a1
+F src/SettingsDialog.h 528e77b6e262a020e02df78017387e498abb453e
F src/Utils.cpp caca5268e3194abe77211040bf9511a82909d2e6
F src/Utils.h 5af911147390879176e587fc60fb662490bb9e97
F src/main.cpp fcd78f44b893fb9c93bbb71a2e861bd36af95f88
@@ -187,8 +190,8 @@ F ui/CloneDialog.ui 0fc820804df91f16506ee466a44519fdd44e468f
F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
F ui/MainWindow.ui 6ad583b6d864ccbeac8e3fd1d05cd964bc17c5f9
-F ui/SettingsDialog.ui cd6faff19c1a6c2640193eb5a258f0daa926a2cf
-P 1760813f6ce3ed23ab45bee2fbde8cbf487d2481
-R 12e9a8ebc31d18b45a1d208db05caf62
+F ui/SettingsDialog.ui 7cc01b1a63c59258ee4865022108852b5126db52
+P 8d881de4e52069221dd6ae38a436449fbccdac25
+R 7f1d11773b50d22aa625c653cc91f018
U kostas
-Z 63bee23b106d51238aa4d200b0a7da88
+Z 67ce7969d95085d2e0a274986395168f
diff --git a/manifest.uuid b/manifest.uuid
index d58c032..e9042b6 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-8d881de4e52069221dd6ae38a436449fbccdac25
\ No newline at end of file
+05f2cac387c4a3863197f794c68421f7e04fb28e
\ No newline at end of file
diff --git a/rsrc/resources.qrc b/rsrc/resources.qrc
index 348c7ad..eda58be 100644
--- a/rsrc/resources.qrc
+++ b/rsrc/resources.qrc
@@ -152,4 +152,7 @@
icons/Zoom In-01.png
icons/Zoom Out-01.png
+
+ intl/el_GR.qm
+
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index ae7d849..61e44eb 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -198,7 +198,7 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
viewMode = VIEWMODE_TREE;
- loadSettings();
+ applySettings();
// Apply any explicit workspace path if available
if(workspacePath && !workspacePath->isEmpty())
@@ -217,7 +217,7 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
MainWindow::~MainWindow()
{
stopUI();
- saveSettings();
+ updateSettings();
// Dispose RepoFiles
for(filemap_t::iterator it = workspaceFiles.begin(); it!=workspaceFiles.end(); ++it)
@@ -246,7 +246,7 @@ void MainWindow::setCurrentWorkspace(const QString &workspace)
addWorkspace(new_workspace);
if(!QDir::setCurrent(new_workspace))
- QMessageBox::critical(this, tr("Error"), tr("Could not change current diectory to '%0'").arg(new_workspace), QMessageBox::Ok );
+ QMessageBox::critical(this, tr("Error"), tr("Could not change current directory to '%0'").arg(new_workspace), QMessageBox::Ok );
}
//------------------------------------------------------------------------------
@@ -288,7 +288,7 @@ bool MainWindow::openWorkspace(const QString &path)
if(!(QFileInfo(checkout_file1).exists() || QFileInfo(checkout_file2).exists()) )
{
- if(QMessageBox::Yes !=DialogQuery(this, tr("Open Fossil"), tr("A workspace does not exist in this folder.\nWould you like to create one here?")))
+ if(QMessageBox::Yes !=DialogQuery(this, tr("Open Workspace"), tr("A workspace does not exist in this folder.\nWould you like to create one here?")))
{
wkspace = QFileDialog::getExistingDirectory(
this,
@@ -366,7 +366,7 @@ void MainWindow::on_actionOpenRepository_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_actionNewRepository_triggered()
{
- QString filter(tr("Repositories (*.fossil)"));
+ QString filter(tr("Fossil Repositories (*.fossil)"));
// Get Repository file
QString repo_path = QFileDialog::getSaveFileName(
@@ -591,7 +591,7 @@ bool MainWindow::refresh()
}
else if(st==REPO_OLD_SCHEMA)
{
- setStatus(tr("Old fossil schema detected. Consider running 'fossil rebuild'"));
+ setStatus(tr("Old repository schema detected. Consider running 'fossil rebuild'"));
enableActions(false);
repoFileModel.removeRows(0, repoFileModel.rowCount());
repoDirModel.clear();
@@ -648,7 +648,7 @@ void MainWindow::scanWorkspace()
if(!ui->actionViewIgnored->isChecked())
{
// QDir expects multiple specs being separated by a semicolon
- ignore = settings.Mappings[FUEL_SETTING_IGNORE_GLOB].Value.toString().replace(',',';');
+ ignore = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().replace(',',';');
}
scanDirectory(all_files, wkdir, wkdir, ignore);
@@ -1093,7 +1093,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
process.start(fossil, args);
if(!process.waitForStarted())
{
- log(tr("Could not start Fossil executable '%s'\n").arg(fossil));
+ log(tr("Could not start Fossil executable '%s'").arg(fossil)+"\n");
return false;
}
const QChar EOL_MARK('\n');
@@ -1264,7 +1264,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
QString MainWindow::getFossilPath()
{
// Use the user-specified fossil if available
- QString fossil_path = settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString();
+ QString fossil_path = settings.GetValue(FUEL_SETTING_FOSSIL_PATH).toString();
if(!fossil_path.isEmpty())
return QDir::toNativeSeparators(fossil_path);
@@ -1282,22 +1282,15 @@ QString MainWindow::getFossilPath()
return fossil_exe;
}
//------------------------------------------------------------------------------
-void MainWindow::loadSettings()
+void MainWindow::applySettings()
{
- if(settings.store->contains(FUEL_SETTING_FOSSIL_PATH))
- settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value = settings.store->value(FUEL_SETTING_FOSSIL_PATH);
+ QSettings *store = settings.GetStore();
- if(settings.store->contains(FUEL_SETTING_COMMIT_MSG))
- settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value = settings.store->value(FUEL_SETTING_COMMIT_MSG);
-
- if(settings.store->contains(FUEL_SETTING_FILE_DBLCLICK))
- settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = settings.store->value(FUEL_SETTING_FILE_DBLCLICK);
-
- int num_wks = settings.store->beginReadArray("Workspaces");
+ int num_wks = store->beginReadArray("Workspaces");
for(int i=0; isetArrayIndex(i);
- QString wk = settings.store->value("Path").toString();
+ store->setArrayIndex(i);
+ QString wk = store->value("Path").toString();
// Skip invalid workspaces
if(wk.isEmpty() || !QDir(wk).exists())
@@ -1305,80 +1298,75 @@ void MainWindow::loadSettings()
addWorkspace(wk);
- if(settings.store->contains("Active") && settings.store->value("Active").toBool())
+ if(store->contains("Active") && store->value("Active").toBool())
setCurrentWorkspace(wk);
}
- settings.store->endArray();
+ store->endArray();
-
- if(settings.store->contains("WindowX") && settings.store->contains("WindowY"))
+ if(store->contains("WindowX") && store->contains("WindowY"))
{
QPoint _pos;
- _pos.setX(settings.store->value("WindowX").toInt());
- _pos.setY(settings.store->value("WindowY").toInt());
+ _pos.setX(store->value("WindowX").toInt());
+ _pos.setY(store->value("WindowY").toInt());
move(_pos);
}
- if(settings.store->contains("WindowWidth") && settings.store->contains("WindowHeight"))
+ if(store->contains("WindowWidth") && store->contains("WindowHeight"))
{
QSize _size;
- _size.setWidth(settings.store->value("WindowWidth").toInt());
- _size.setHeight(settings.store->value("WindowHeight").toInt());
+ _size.setWidth(store->value("WindowWidth").toInt());
+ _size.setHeight(store->value("WindowHeight").toInt());
resize(_size);
}
- if(settings.store->contains("ViewUnknown"))
- ui->actionViewUnknown->setChecked(settings.store->value("ViewUnknown").toBool());
- if(settings.store->contains("ViewModified"))
- ui->actionViewModified->setChecked(settings.store->value("ViewModified").toBool());
- if(settings.store->contains("ViewUnchanged"))
- ui->actionViewUnchanged->setChecked(settings.store->value("ViewUnchanged").toBool());
- if(settings.store->contains("ViewIgnored"))
- ui->actionViewIgnored->setChecked(settings.store->value("ViewIgnored").toBool());
- if(settings.store->contains("ViewAsList"))
+ if(store->contains("ViewUnknown"))
+ ui->actionViewUnknown->setChecked(store->value("ViewUnknown").toBool());
+ if(store->contains("ViewModified"))
+ ui->actionViewModified->setChecked(store->value("ViewModified").toBool());
+ if(store->contains("ViewUnchanged"))
+ ui->actionViewUnchanged->setChecked(store->value("ViewUnchanged").toBool());
+ if(store->contains("ViewIgnored"))
+ ui->actionViewIgnored->setChecked(store->value("ViewIgnored").toBool());
+ if(store->contains("ViewAsList"))
{
- ui->actionViewAsList->setChecked(settings.store->value("ViewAsList").toBool());
- viewMode = settings.store->value("ViewAsList").toBool()? VIEWMODE_LIST : VIEWMODE_TREE;
+ ui->actionViewAsList->setChecked(store->value("ViewAsList").toBool());
+ viewMode = store->value("ViewAsList").toBool()? VIEWMODE_LIST : VIEWMODE_TREE;
}
ui->treeView->setVisible(viewMode == VIEWMODE_TREE);
- if(settings.store->contains("ViewStash"))
- ui->actionViewStash->setChecked(settings.store->value("ViewStash").toBool());
+ if(store->contains("ViewStash"))
+ ui->actionViewStash->setChecked(store->value("ViewStash").toBool());
ui->tableViewStash->setVisible(ui->actionViewStash->isChecked());
}
//------------------------------------------------------------------------------
-void MainWindow::saveSettings()
+void MainWindow::updateSettings()
{
- // If we have a customize fossil path, save it
- QString fossil_path = settings.Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString();
- settings.store->setValue(FUEL_SETTING_FOSSIL_PATH, fossil_path);
- settings.store->setValue(FUEL_SETTING_COMMIT_MSG, settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value);
- settings.store->setValue(FUEL_SETTING_FILE_DBLCLICK, settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value);
+ QSettings *store = settings.GetStore();
- settings.store->beginWriteArray("Workspaces", workspaceHistory.size());
+ store->beginWriteArray("Workspaces", workspaceHistory.size());
for(int i=0; isetArrayIndex(i);
- settings.store->setValue("Path", workspaceHistory[i]);
+ store->setArrayIndex(i);
+ store->setValue("Path", workspaceHistory[i]);
if(getCurrentWorkspace() == workspaceHistory[i])
- settings.store->setValue("Active", true);
+ store->setValue("Active", true);
else
- settings.store->remove("Active");
+ store->remove("Active");
}
- settings.store->endArray();
+ store->endArray();
- settings.store->setValue("WindowX", x());
- settings.store->setValue("WindowY", y());
- settings.store->setValue("WindowWidth", width());
- settings.store->setValue("WindowHeight", height());
- settings.store->setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
- settings.store->setValue("ViewModified", ui->actionViewModified->isChecked());
- settings.store->setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
- settings.store->setValue("ViewIgnored", ui->actionViewIgnored->isChecked());
- settings.store->setValue("ViewAsList", ui->actionViewAsList->isChecked());
- settings.store->setValue("ViewStash", ui->actionViewStash->isChecked());
+ store->setValue("WindowX", x());
+ store->setValue("WindowY", y());
+ store->setValue("WindowWidth", width());
+ store->setValue("WindowHeight", height());
+ store->setValue("ViewUnknown", ui->actionViewUnknown->isChecked());
+ store->setValue("ViewModified", ui->actionViewModified->isChecked());
+ store->setValue("ViewUnchanged", ui->actionViewUnchanged->isChecked());
+ store->setValue("ViewIgnored", ui->actionViewIgnored->isChecked());
+ store->setValue("ViewAsList", ui->actionViewAsList->isChecked());
+ store->setValue("ViewStash", ui->actionViewStash->isChecked());
}
//------------------------------------------------------------------------------
@@ -1551,7 +1539,7 @@ bool MainWindow::startUI()
{
if(uiRunning())
{
- log(tr("Fossil UI is already running\n"));
+ log(tr("Fossil UI is already running")+"\n");
return true;
}
@@ -1560,13 +1548,13 @@ bool MainWindow::startUI()
fossilUI.setWorkingDirectory(getCurrentWorkspace());
log("> fossil ui
", true);
- log(tr("Starting Fossil browser UI. Please wait.\n"));
+ log(tr("Starting Fossil browser UI. Please wait.")+"\n");
QString fossil = getFossilPath();
fossilUI.start(fossil, QStringList() << "ui");
if(!fossilUI.waitForStarted() || fossilUI.state()!=QProcess::Running)
{
- log(tr("Could not start Fossil executable '%s'\n").arg(fossil));
+ log(tr("Could not start Fossil executable '%s'").arg(fossil)+"\n");
ui->actionFossilUI->setChecked(false);
return false;
}
@@ -1659,7 +1647,7 @@ void MainWindow::on_actionHistory_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_tableView_doubleClicked(const QModelIndex &/*index*/)
{
- int action = settings.Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt();
+ int action = settings.GetValue(FUEL_SETTING_FILE_DBLCLICK).toInt();
if(action==FILE_DLBCLICK_ACTION_DIFF)
on_actionDiff_triggered();
else if(action==FILE_DLBCLICK_ACTION_OPEN)
@@ -1683,7 +1671,7 @@ void MainWindow::on_actionOpenFile_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_actionPush_triggered()
{
- QString remote_url = settings.Mappings[FUEL_SETTING_REMOTE_URL].Value.toString();
+ QString remote_url = settings.GetFossilValue(FOSSIL_SETTING_REMOTE_URL).toString();
if(remote_url.isEmpty() || remote_url == "off")
{
@@ -1697,7 +1685,7 @@ void MainWindow::on_actionPush_triggered()
//------------------------------------------------------------------------------
void MainWindow::on_actionPull_triggered()
{
- QString remote_url = settings.Mappings[FUEL_SETTING_REMOTE_URL].Value.toString();
+ QString remote_url = settings.GetFossilValue(FOSSIL_SETTING_REMOTE_URL).toString();
if(remote_url.isEmpty() || remote_url == "off")
{
@@ -1717,7 +1705,7 @@ void MainWindow::on_actionCommit_triggered()
if(commit_files.empty())
return;
- QStringList commit_msgs = settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value.toStringList();
+ QStringList commit_msgs = settings.GetValue(FUEL_SETTING_COMMIT_MSG).toStringList();
QString msg;
bool aborted = !CommitDialog::run(this, tr("Commit Changes"), commit_files, msg, &commit_msgs);
@@ -1727,7 +1715,7 @@ void MainWindow::on_actionCommit_triggered()
if(commit_msgs.indexOf(msg)==-1)
{
commit_msgs.push_front(msg);
- settings.Mappings[FUEL_SETTING_COMMIT_MSG].Value = commit_msgs;
+ settings.SetValue(FUEL_SETTING_COMMIT_MSG, commit_msgs);
}
if(aborted)
@@ -1867,7 +1855,7 @@ void MainWindow::on_actionRename_triggered()
QFileInfo fi_before(repo_files[0]);
bool ok = false;
- QString new_name = QInputDialog::getText(this, tr("Rename"), tr("Enter new name"), QLineEdit::Normal, fi_before.filePath(), &ok, Qt::Sheet );
+ QString new_name = QInputDialog::getText(this, tr("Rename"), tr("New name"), QLineEdit::Normal, fi_before.filePath(), &ok, Qt::Sheet );
if(!ok)
return;
@@ -1948,7 +1936,7 @@ void MainWindow::on_actionAbout_triggered()
QCoreApplication::applicationName() + " "+ QCoreApplication::applicationVersion() + " " +
tr("a GUI frontend to the Fossil SCM\n"
"by Kostas Karanikolas\n"
- "Released under the GNU GPL\n\n")
+ "Released under the GNU GPL")+"\n\n"
+ fossil_ver +
tr("Icon-set by Deleket - Jojo Mendoza\n"
"Available under the CC Attribution Noncommercial No Derivate 3.0 License"));
@@ -1984,15 +1972,11 @@ void MainWindow::loadFossilSettings()
QStringMap kv = MakeKeyValues(out);
- for(Settings::mappings_t::iterator it=settings.Mappings.begin(); it!=settings.Mappings.end(); ++it)
+ for(Settings::mappings_t::iterator it=settings.GetMappings().begin(); it!=settings.GetMappings().end(); ++it)
{
const QString &name = it.key();
Settings::Setting::SettingType type = it->Type;
- // Internal types are handled explicitly
- if(type == Settings::Setting::TYPE_INTERNAL)
- continue;
-
// Command types we issue directly on fossil
if(type == Settings::Setting::TYPE_FOSSIL_COMMAND)
{
@@ -2034,15 +2018,11 @@ void MainWindow::on_actionSettings_triggered()
return;
// Apply settings
- for(Settings::mappings_t::iterator it=settings.Mappings.begin(); it!=settings.Mappings.end(); ++it)
+ for(Settings::mappings_t::iterator it=settings.GetMappings().begin(); it!=settings.GetMappings().end(); ++it)
{
const QString &name = it.key();
Settings::Setting::SettingType type = it.value().Type;
- // Internal types are handled explicitly
- if(type == Settings::Setting::TYPE_INTERNAL)
- continue;
-
// Command types we issue directly on fossil
if(type == Settings::Setting::TYPE_FOSSIL_COMMAND)
{
@@ -2178,7 +2158,7 @@ void MainWindow::on_actionRenameFolder_triggered()
QString old_name = old_path.mid(dir_start);
bool ok = false;
- QString new_name = QInputDialog::getText(this, tr("Rename Folder"), tr("Enter new name"), QLineEdit::Normal, old_name, &ok, Qt::Sheet);
+ QString new_name = QInputDialog::getText(this, tr("Rename Folder"), tr("New name"), QLineEdit::Normal, old_name, &ok, Qt::Sheet);
if(!ok || old_name==new_name)
return;
@@ -2190,7 +2170,7 @@ void MainWindow::on_actionRenameFolder_triggered()
{
if(new_name.indexOf(invalid_tokens[i])!=-1)
{
- QMessageBox::critical(this, tr("Error"), tr("Cannot rename folder.\nFolder name contains invalid characters."));
+ QMessageBox::critical(this, tr("Error"), tr("Cannot rename folder.")+"\n" +tr("Folder name contains invalid characters."));
return;
}
}
@@ -2199,7 +2179,7 @@ void MainWindow::on_actionRenameFolder_triggered()
if(pathSet.contains(new_path))
{
- QMessageBox::critical(this, tr("Error"), tr("Cannot rename folder.\nThis folder exists already."));
+ QMessageBox::critical(this, tr("Error"), tr("Cannot rename folder.")+"\n" +tr("This folder exists already."));
return;
}
@@ -2239,7 +2219,7 @@ void MainWindow::on_actionRenameFolder_triggered()
if(!runFossil(QStringList() << "mv" << QuotePath(r->getFilePath()) << QuotePath(new_file_path)))
{
- log(tr("Move aborted due to errors\n"));
+ log(tr("Move aborted due to errors")+"\n");
goto _exit;
}
}
@@ -2259,10 +2239,10 @@ void MainWindow::on_actionRenameFolder_triggered()
QDir wkdir(getCurrentWorkspace());
Q_ASSERT(wkdir.exists());
- log(tr("Creating folder '%0'\n").arg(target_path));
+ log(tr("Creating folder '%0'").arg(target_path)+"\n");
if(!wkdir.mkpath(new_paths[i] + PATH_SEP + "."))
{
- QMessageBox::critical(this, tr("Error"), tr("Cannot make target folder '%0'\n").arg(target_path));
+ QMessageBox::critical(this, tr("Error"), tr("Cannot make target folder '%0'").arg(target_path));
goto _exit;
}
}
@@ -2279,7 +2259,7 @@ void MainWindow::on_actionRenameFolder_triggered()
goto _exit;
}
- log(tr("Copying file '%0' to '%1'\n").arg(r->getFilePath(), new_file_path));
+ log(tr("Copying file '%0' to '%1'").arg(r->getFilePath(), new_file_path)+"\n");
if(!QFile::copy(r->getFilePath(), new_file_path))
{
@@ -2293,7 +2273,7 @@ void MainWindow::on_actionRenameFolder_triggered()
{
RepoFile *r = files_to_move[i];
- log(tr("Removing old file '%0'\n").arg(r->getFilePath()));
+ log(tr("Removing old file '%0'").arg(r->getFilePath())+"\n");
if(!QFile::exists(r->getFilePath()))
{
@@ -2308,7 +2288,7 @@ void MainWindow::on_actionRenameFolder_triggered()
}
}
- log(tr("Folder renamed completed. Don't forget to commit!\n"));
+ log(tr("Folder renamed completed. Don't forget to commit!")+"\n");
_exit:
refresh();
@@ -2386,7 +2366,7 @@ void MainWindow::on_actionApplyStash_triggered()
if(!runFossil(QStringList() << "stash" << "apply" << *id_it))
{
- log(tr("Stash application aborted due to errors\n"));
+ log(tr("Stash application aborted due to errors")+"\n");
return;
}
}
@@ -2399,7 +2379,7 @@ void MainWindow::on_actionApplyStash_triggered()
if(!runFossil(QStringList() << "stash" << "drop" << *id_it))
{
- log(tr("Stash deletion aborted due to errors\n"));
+ log(tr("Stash deletion aborted due to errors")+"\n");
return;
}
}
@@ -2427,7 +2407,7 @@ void MainWindow::on_actionDeleteStash_triggered()
if(!runFossil(QStringList() << "stash" << "drop" << *id_it))
{
- log(tr("Stash deletion aborted due to errors\n"));
+ log(tr("Stash deletion aborted due to errors")+"\n");
return;
}
}
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 5051b9b..b250c33 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -136,8 +136,8 @@ private:
void scanWorkspace();
bool runFossil(const QStringList &args, QStringList *output=0, int runFlags=RUNFLAGS_NONE);
bool runFossilRaw(const QStringList &args, QStringList *output=0, int *exitCode=0, int runFlags=RUNFLAGS_NONE);
- void loadSettings();
- void saveSettings();
+ void applySettings();
+ void updateSettings();
const QString &getCurrentWorkspace();
void setCurrentWorkspace(const QString &workspace);
void log(const QString &text, bool isHTML=false);
diff --git a/src/SettingsDialog.cpp b/src/SettingsDialog.cpp
index aee3269..26998c3 100644
--- a/src/SettingsDialog.cpp
+++ b/src/SettingsDialog.cpp
@@ -10,6 +10,7 @@
#include
+///////////////////////////////////////////////////////////////////////////////
QString SettingsDialog::SelectExe(QWidget *parent, const QString &description)
{
QString filter(tr("Applications"));
@@ -39,20 +40,31 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) :
{
ui->setupUi(this);
+ CreateLangMap();
+
ui->cmbDoubleClickAction->addItem(tr("Diff File"));
ui->cmbDoubleClickAction->addItem(tr("Open File"));
ui->cmbDoubleClickAction->addItem(tr("Open Containing Folder"));
// App Settings
- ui->lineFossilPath->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value.toString()));
- ui->lineGDiffCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value.toString()));
- ui->lineGMergeCommand->setText(QDir::toNativeSeparators(settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value.toString()));
- ui->cmbDoubleClickAction->setCurrentIndex(settings->Mappings[FUEL_SETTING_FILE_DBLCLICK].Value.toInt());
+ ui->lineFossilPath->setText(QDir::toNativeSeparators(settings->GetValue(FUEL_SETTING_FOSSIL_PATH).toString()));
+ ui->cmbDoubleClickAction->setCurrentIndex(settings->GetValue(FUEL_SETTING_FILE_DBLCLICK).toInt());
+
+ // Initialize language combo
+ foreach(const LangMap &m, langMap)
+ ui->cmbActiveLanguage->addItem(m.name);
+
+ // Select current language
+ ui->cmbActiveLanguage->setCurrentIndex(
+ ui->cmbActiveLanguage->findText(
+ LangIdToName(settings->GetValue(FUEL_SETTING_LANGUAGE).toString())));
// Repo Settings
- ui->lineRemoteURL->setText(settings->Mappings[FUEL_SETTING_REMOTE_URL].Value.toString());
- ui->lineIgnore->setText(settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value.toString());
- ui->lineIgnoreCRNL->setText(settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value.toString());
+ ui->lineGDiffCommand->setText(QDir::toNativeSeparators(settings->GetFossilValue(FOSSIL_SETTING_GDIFF_CMD).toString()));
+ ui->lineGMergeCommand->setText(QDir::toNativeSeparators(settings->GetFossilValue(FOSSIL_SETTING_GMERGE_CMD).toString()));
+ ui->lineRemoteURL->setText(settings->GetFossilValue(FOSSIL_SETTING_REMOTE_URL).toString());
+ ui->lineIgnore->setText(settings->GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString());
+ ui->lineIgnoreCRNL->setText(settings->GetFossilValue(FOSSIL_SETTING_CRNL_GLOB).toString());
}
//-----------------------------------------------------------------------------
@@ -71,16 +83,28 @@ bool SettingsDialog::run(QWidget *parent, Settings &settings)
//-----------------------------------------------------------------------------
void SettingsDialog::on_buttonBox_accepted()
{
- settings->Mappings[FUEL_SETTING_FOSSIL_PATH].Value = QDir::fromNativeSeparators(ui->lineFossilPath->text());
- settings->Mappings[FUEL_SETTING_GDIFF_CMD].Value = QDir::fromNativeSeparators(ui->lineGDiffCommand->text());
- settings->Mappings[FUEL_SETTING_GMERGE_CMD].Value = QDir::fromNativeSeparators(ui->lineGMergeCommand->text());
+ settings->SetValue(FUEL_SETTING_FOSSIL_PATH, QDir::fromNativeSeparators(ui->lineFossilPath->text()));
Q_ASSERT(ui->cmbDoubleClickAction->currentIndex()>=FILE_DLBCLICK_ACTION_DIFF && ui->cmbDoubleClickAction->currentIndex()Mappings[FUEL_SETTING_FILE_DBLCLICK].Value = ui->cmbDoubleClickAction->currentIndex();
+ settings->SetValue(FUEL_SETTING_FILE_DBLCLICK, ui->cmbDoubleClickAction->currentIndex());
- settings->Mappings[FUEL_SETTING_REMOTE_URL].Value = ui->lineRemoteURL->text();
- settings->Mappings[FUEL_SETTING_IGNORE_GLOB].Value = ui->lineIgnore->text();
- settings->Mappings[FUEL_SETTING_CRNL_GLOB].Value = ui->lineIgnoreCRNL->text();
+ Q_ASSERT(settings->HasValue(FUEL_SETTING_LANGUAGE));
+ QString curr_langid = settings->GetValue(FUEL_SETTING_LANGUAGE).toString();
+ QString new_langid = LangNameToId(ui->cmbActiveLanguage->currentText());
+ Q_ASSERT(!new_langid.isEmpty());
+ settings->SetValue(FUEL_SETTING_LANGUAGE, new_langid);
+
+ if(curr_langid != new_langid)
+ QMessageBox::information(this, tr("Restart required"), tr("The language change will take effect after restarting the application"), QMessageBox::Ok);
+
+ settings->SetFossilValue(FOSSIL_SETTING_GDIFF_CMD, QDir::fromNativeSeparators(ui->lineGDiffCommand->text()));
+ settings->SetFossilValue(FOSSIL_SETTING_GMERGE_CMD, QDir::fromNativeSeparators(ui->lineGMergeCommand->text()));
+ settings->SetFossilValue(FOSSIL_SETTING_REMOTE_URL, ui->lineRemoteURL->text());
+ settings->SetFossilValue(FOSSIL_SETTING_IGNORE_GLOB, ui->lineIgnore->text());
+ settings->SetFossilValue(FOSSIL_SETTING_CRNL_GLOB, ui->lineIgnoreCRNL->text());
+
+ settings->ApplyEnvironment();
}
+
//-----------------------------------------------------------------------------
void SettingsDialog::on_btnSelectFossil_clicked()
{
@@ -109,21 +133,49 @@ void SettingsDialog::on_btnSelectGMerge_clicked()
void SettingsDialog::on_btnClearMessageHistory_clicked()
{
if(DialogQuery(this, tr("Clear Commit Message History"), tr("Are you sure want to clear the commit message history?"))==QMessageBox::Yes)
- settings->Mappings[FUEL_SETTING_COMMIT_MSG].Value = QStringList();
+ settings->SetValue(FUEL_SETTING_COMMIT_MSG, QStringList());
+}
+
+//-----------------------------------------------------------------------------
+void SettingsDialog::CreateLangMap()
+{
+ langMap.append(LangMap("en_US", tr("English (US)")));
+ langMap.append(LangMap("ja_JP", tr("Japanese")));
+ langMap.append(LangMap("el_GR", tr("Greek")));
+}
+
+//-----------------------------------------------------------------------------
+QString SettingsDialog::LangIdToName(const QString &id)
+{
+ foreach(const LangMap &m, langMap)
+ {
+ if(m.id == id)
+ return m.name;
+ }
+
+ return "";
+}
+
+//-----------------------------------------------------------------------------
+QString SettingsDialog::LangNameToId(const QString &name)
+{
+ foreach(const LangMap &m, langMap)
+ {
+ if(m.name == name)
+ return m.id;
+ }
+
+ return "";
}
///////////////////////////////////////////////////////////////////////////////
Settings::Settings(bool portableMode) : store(0)
{
- Mappings[FUEL_SETTING_FOSSIL_PATH] = Setting();
- Mappings[FUEL_SETTING_COMMIT_MSG] = Setting();
- Mappings[FUEL_SETTING_FILE_DBLCLICK] = Setting(0); // Maps to FileDblClickAction
- Mappings[FUEL_SETTING_GDIFF_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
- Mappings[FUEL_SETTING_GMERGE_CMD] = Setting("", Setting::TYPE_FOSSIL_GLOBAL);
- Mappings[FUEL_SETTING_IGNORE_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
- Mappings[FUEL_SETTING_CRNL_GLOB] = Setting("", Setting::TYPE_FOSSIL_LOCAL);
- Mappings[FUEL_SETTING_REMOTE_URL] = Setting("off", Setting::TYPE_FOSSIL_COMMAND);
-
+ Mappings.insert(FOSSIL_SETTING_GDIFF_CMD, Setting("", Setting::TYPE_FOSSIL_GLOBAL));
+ Mappings.insert(FOSSIL_SETTING_GMERGE_CMD, Setting("", Setting::TYPE_FOSSIL_GLOBAL));
+ Mappings.insert(FOSSIL_SETTING_IGNORE_GLOB, Setting("", Setting::TYPE_FOSSIL_LOCAL));
+ Mappings.insert(FOSSIL_SETTING_CRNL_GLOB, Setting("", Setting::TYPE_FOSSIL_LOCAL));
+ Mappings.insert(FOSSIL_SETTING_REMOTE_URL, Setting("off", Setting::TYPE_FOSSIL_COMMAND));
// Go into portable mode when explicitly requested or if a config file exists next to the executable
QString ini_path = QDir::toNativeSeparators(QCoreApplication::applicationDirPath() + QDir::separator() + QCoreApplication::applicationName() + ".ini");
@@ -135,6 +187,12 @@ Settings::Settings(bool portableMode) : store(0)
// Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel
store = new QSettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName());
}
+ Q_ASSERT(store);
+
+ if(!HasValue(FUEL_SETTING_FILE_DBLCLICK))
+ SetValue(FUEL_SETTING_FILE_DBLCLICK, 0);
+ if(!HasValue(FUEL_SETTING_LANGUAGE))
+ SetValue(FUEL_SETTING_LANGUAGE, QLocale::system().name());
ApplyEnvironment();
}
@@ -142,17 +200,54 @@ Settings::Settings(bool portableMode) : store(0)
//-----------------------------------------------------------------------------
Settings::~Settings()
{
+ Q_ASSERT(store);
delete store;
}
//-----------------------------------------------------------------------------
void Settings::ApplyEnvironment()
{
- QString locale_name = QLocale::system().name();
- //locale_name = "el_GR";
+ QString lang_id = GetValue(FUEL_SETTING_LANGUAGE).toString();
- QString locale_path = QString(":intl/intl/%0.qm").arg(locale_name);
+ QString locale_path = QString(":intl/intl/%0.qm").arg(lang_id);
QResource res(locale_path);
if(res.isValid() && translator.load(res.data(), res.size()))
QCoreApplication::instance()->installTranslator(&translator);
+ else
+ SetValue(FUEL_SETTING_LANGUAGE, "en_US");
+}
+
+//-----------------------------------------------------------------------------
+bool Settings::HasValue(const QString &name) const
+{
+ return store->contains(name);
+}
+
+//-----------------------------------------------------------------------------
+const QVariant Settings::GetValue(const QString &name)
+{
+ Q_ASSERT(HasValue(name));
+ return store->value(name);
+}
+
+//-----------------------------------------------------------------------------
+void Settings::SetValue(const QString &name, const QVariant &value)
+{
+ store->setValue(name, value);
+}
+
+//-----------------------------------------------------------------------------
+QVariant &Settings::GetFossilValue(const QString &name)
+{
+ mappings_t::iterator it=Mappings.find(name);
+ Q_ASSERT(it!=Mappings.end());
+ return it.value().Value;
+}
+
+//-----------------------------------------------------------------------------
+void Settings::SetFossilValue(const QString &name, const QVariant &value)
+{
+ mappings_t::iterator it=Mappings.find(name);
+ Q_ASSERT(it!=Mappings.end());
+ it->Value = value;
}
diff --git a/src/SettingsDialog.h b/src/SettingsDialog.h
index 791a653..ae63343 100644
--- a/src/SettingsDialog.h
+++ b/src/SettingsDialog.h
@@ -14,11 +14,14 @@ namespace Ui {
#define FUEL_SETTING_FOSSIL_PATH "FossilPath"
#define FUEL_SETTING_COMMIT_MSG "CommitMsgHistory"
#define FUEL_SETTING_FILE_DBLCLICK "FileDblClickAction"
-#define FUEL_SETTING_GDIFF_CMD "gdiff-command"
-#define FUEL_SETTING_GMERGE_CMD "gmerge-command"
-#define FUEL_SETTING_IGNORE_GLOB "ignore-glob"
-#define FUEL_SETTING_CRNL_GLOB "crnl-glob"
-#define FUEL_SETTING_REMOTE_URL "remote-url"
+#define FUEL_SETTING_LANGUAGE "Language"
+
+#define FOSSIL_SETTING_GDIFF_CMD "gdiff-command"
+#define FOSSIL_SETTING_GMERGE_CMD "gmerge-command"
+#define FOSSIL_SETTING_IGNORE_GLOB "ignore-glob"
+#define FOSSIL_SETTING_CRNL_GLOB "crnl-glob"
+#define FOSSIL_SETTING_REMOTE_URL "remote-url"
+
enum FileDblClickAction
{
@@ -34,27 +37,38 @@ struct Settings
{
enum SettingType
{
- TYPE_INTERNAL,
TYPE_FOSSIL_GLOBAL,
TYPE_FOSSIL_LOCAL,
TYPE_FOSSIL_COMMAND
};
- Setting(QVariant value=QVariant(), SettingType type=TYPE_INTERNAL) : Value(value), Type(type)
+ Setting(QVariant value, SettingType type) : Value(value), Type(type)
{}
QVariant Value;
SettingType Type;
};
+ typedef QMap mappings_t;
+
Settings(bool portableMode = false);
~Settings();
void ApplyEnvironment();
- typedef QMap mappings_t;
+ // App configuration access
+ class QSettings * GetStore() { return store; }
+ bool HasValue(const QString &name) const; // store->contains(FUEL_SETTING_FOSSIL_PATH)
+ const QVariant GetValue(const QString &name); // settings.store->value
+ void SetValue(const QString &name, const QVariant &value); // settings.store->value
+
+ // Fossil configuration access
+ QVariant & GetFossilValue(const QString &name);
+ void SetFossilValue(const QString &name, const QVariant &value);
+ mappings_t & GetMappings() { return Mappings; }
+
+private:
mappings_t Mappings;
class QSettings *store;
QTranslator translator;
-
};
@@ -78,7 +92,22 @@ private slots:
private:
static QString SelectExe(QWidget *parent, const QString &description);
+ QString LangIdToName(const QString &id);
+ QString LangNameToId(const QString &name);
+ void CreateLangMap();
+ struct LangMap
+ {
+ LangMap(const QString &_id, const QString &_name)
+ : id(_id), name(_name)
+ {
+ }
+
+ QString id;
+ QString name;
+ };
+
+ QList langMap;
Ui::SettingsDialog *ui;
Settings *settings;
};
diff --git a/ui/SettingsDialog.ui b/ui/SettingsDialog.ui
index 19dbe02..7ddb54e 100644
--- a/ui/SettingsDialog.ui
+++ b/ui/SettingsDialog.ui
@@ -227,6 +227,26 @@
+ -
+
+
+ Language
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Language to use for the user interface
+
+
+