Page MenuHomePhabricator (Chris)

No OneTemporary

Size
589 KB
Referenced Files
None
Subscribers
None
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/Guitar.pro b/Guitar.pro
index 139c1f8..9375ab7 100644
--- a/Guitar.pro
+++ b/Guitar.pro
@@ -1,422 +1,426 @@
QT += core gui widgets svg network
win32:QT += winextras
CONFIG(debug,debug|release):TARGET = Guitard
CONFIG(release,debug|release):TARGET = Guitar
TEMPLATE = app
CONFIG += c++11
DESTDIR = $$PWD/_bin
TRANSLATIONS = $$PWD/src/resources/translations/Guitar_ja.ts
TRANSLATIONS += $$PWD/src/resources/translations/Guitar_ru.ts
+TRANSLATIONS += $$PWD/src/resources/translations/Guitar_zh-CN.ts
+TRANSLATIONS += $$PWD/src/resources/translations/Guitar_zh-TW.ts
DEFINES += APP_GUITAR
DEFINES += HAVE_POSIX_OPENPT
macx:DEFINES += HAVE_SYS_TIME_H
macx:DEFINES += HAVE_UTMPX
gcc:QMAKE_CXXFLAGS += -Wall -Wextra -Werror=return-type -Werror=trigraphs -Wno-switch -Wno-reorder
linux:QMAKE_RPATHDIR += $ORIGIN
macx:QMAKE_RPATHDIR += @executable_path/../Frameworks
linux:QTPLUGIN += ibusplatforminputcontextplugin
#linux:QTPLUGIN += fcitxplatforminputcontextplugin
INCLUDEPATH += $$PWD/src
INCLUDEPATH += $$PWD/src/texteditor
win32:INCLUDEPATH += $$PWD/misc/winpty
win32:LIBS += $$PWD/misc/winpty/winpty.lib
# OpenSSL
linux {
static_link_openssl {
LIBS += $$OPENSSL_LIB_DIR/libssl.a $$OPENSSL_LIB_DIR/libcrypto.a -ldl
} else {
LIBS += -lssl -lcrypto
}
}
haiku:LIBS += -lssl -lcrypto -lnetwork
macx:INCLUDEPATH += /usr/local/include
macx:LIBS += /usr/local/lib/libssl.a /usr/local/lib/libcrypto.a
win32:msvc {
INCLUDEPATH += C:\openssl\include
INCLUDEPATH += $$PWD/../zlib
LIBS += -LC:\openssl\lib
# OpenSSL 1.0
LIBS += -llibeay32 -lssleay32
# OpenSSL 1.1
# LIBS += -llibcrypto -llibssl
}
win32:gcc {
INCLUDEPATH += C:\Qt\Tools\mingw530_32\opt\include
LIBS += -LC:\Qt\Tools\mingw530_32\opt\lib
LIBS += -lcrypto -lssl
}
# execute 'ruby prepare.rb' automatically
prepare.target = prepare
prepare.commands = cd $$PWD && ruby -W0 prepare.rb
QMAKE_EXTRA_TARGETS += prepare
PRE_TARGETDEPS += prepare
# zlib
win32:msvc {
CONFIG(debug, debug|release):LIBS += $$PWD/_bin/libz.lib
CONFIG(release, debug|release):LIBS += $$PWD/_bin/libz.lib
}
win32:gcc {
CONFIG(debug, debug|release):LIBS += $$PWD/_bin/liblibz.a
CONFIG(release, debug|release):LIBS += $$PWD/_bin/liblibz.a
}
!haiku {
use_system_zlib {
unix:LIBS += -lz
} else {
unix:CONFIG(debug, debug|release):LIBS += $$PWD/_bin/libzd.a
unix:CONFIG(release, debug|release):LIBS += $$PWD/_bin/libz.a
}
}
haiku:LIBS += -lz
win32 {
LIBS += -ladvapi32 -lshell32 -luser32 -lws2_32
RC_FILE = win.rc
QMAKE_SUBSYSTEM_SUFFIX=,5.01
}
macx {
QMAKE_INFO_PLIST = Info.plist
ICON += src/resources/Guitar.icns
t.path=Contents/Resources
QMAKE_BUNDLE_DATA += t
}
SOURCES += \
src/AboutDialog.cpp \
src/AbstractProcess.cpp \
src/AbstractSettingForm.cpp \
src/ApplicationGlobal.cpp \
src/AreYouSureYouWantToContinueConnectingDialog.cpp \
src/AvatarLoader.cpp \
src/BasicMainWindow.cpp \
src/BasicRepositoryDialog.cpp \
src/BigDiffWindow.cpp \
src/BlameWindow.cpp \
src/CheckoutDialog.cpp \
src/CherryPickDialog.cpp \
src/ClearButton.cpp \
src/CloneDialog.cpp \
src/CloneFromGitHubDialog.cpp \
src/CommitDialog.cpp \
src/CommitExploreWindow.cpp \
src/CommitPropertyDialog.cpp \
src/CommitViewWindow.cpp \
src/ConfigCredentialHelperDialog.cpp \
src/ConfigSigningDialog.cpp \
src/CreateRepositoryDialog.cpp \
src/DeleteBranchDialog.cpp \
src/DeleteTagsDialog.cpp \
src/DialogHeaderFrame.cpp \
src/DirectoryLineEdit.cpp \
src/DoYouWantToInitDialog.cpp \
src/EditGitIgnoreDialog.cpp \
src/EditRemoteDialog.cpp \
src/EditTagsDialog.cpp \
src/ExperimentDialog.cpp \
src/FileDiffSliderWidget.cpp \
src/FileDiffWidget.cpp \
src/FileHistoryWindow.cpp \
src/FilePropertyDialog.cpp \
src/FileUtil.cpp \
src/FileViewWidget.cpp \
src/FilesListWidget.cpp \
src/FindCommitDialog.cpp \
src/Git.cpp \
src/GitDiff.cpp \
src/GitHubAPI.cpp \
src/GitObjectManager.cpp \
src/GitPack.cpp \
src/GitPackIdxV2.cpp \
src/HyperLinkLabel.cpp \
src/ImageViewWidget.cpp \
src/InputNewTagDialog.cpp \
src/JumpDialog.cpp \
+ src/Languages.cpp \
src/LineEditDialog.cpp \
src/LocalSocketReader.cpp \
src/LogTableWidget.cpp \
src/MainWindow.cpp \
src/MaximizeButton.cpp \
src/MemoryReader.cpp \
src/MenuButton.cpp \
src/MergeDialog.cpp \
src/MyImageViewWidget.cpp \
src/MyProcess.cpp \
src/MySettings.cpp \
src/MyTableWidgetDelegate.cpp \
src/MyTextEditorWidget.cpp \
src/MyToolButton.cpp \
src/ObjectBrowserDialog.cpp \
src/Photoshop.cpp \
src/PushDialog.cpp \
src/ReadOnlyLineEdit.cpp \
src/ReadOnlyPlainTextEdit.cpp \
src/ReflogWindow.cpp \
src/RemoteRepositoriesTableWidget.cpp \
src/RemoteWatcher.cpp \
src/RepositoriesTreeWidget.cpp \
src/RepositoryData.cpp \
src/RepositoryInfoFrame.cpp \
src/RepositoryLineEdit.cpp \
src/RepositoryPropertyDialog.cpp \
src/SearchFromGitHubDialog.cpp \
src/SelectCommandDialog.cpp \
src/SelectGpgKeyDialog.cpp \
src/SelectItemDialog.cpp \
src/SetGlobalUserDialog.cpp \
src/SetGpgSigningDialog.cpp \
src/SetRemoteUrlDialog.cpp \
src/SetUserDialog.cpp \
src/SettingBehaviorForm.cpp \
src/SettingExampleForm.cpp \
src/SettingGeneralForm.cpp \
src/SettingNetworkForm.cpp \
src/SettingProgramsForm.cpp \
src/SettingsDialog.cpp \
src/StatusLabel.cpp \
src/Terminal.cpp \
src/TextEditDialog.cpp \
src/Theme.cpp \
src/WelcomeWizardDialog.cpp \
src/charvec.cpp \
src/common/joinpath.cpp \
src/common/misc.cpp \
src/darktheme/DarkStyle.cpp \
src/darktheme/NinePatch.cpp \
src/darktheme/StandardStyle.cpp \
src/darktheme/TraditionalWindowsStyleTreeControl.cpp \
src/gpg.cpp \
src/gunzip.cpp \
src/main.cpp\
src/texteditor/AbstractCharacterBasedApplication.cpp \
src/texteditor/InputMethodPopup.cpp \
src/texteditor/TextEditorTheme.cpp \
src/texteditor/TextEditorWidget.cpp \
src/texteditor/UnicodeWidth.cpp \
src/texteditor/unicode.cpp \
src/urlencode.cpp \
src/webclient.cpp \
HEADERS += \
src/AboutDialog.h \
src/AbstractProcess.h \
src/AbstractSettingForm.h \
src/ApplicationGlobal.h \
src/AreYouSureYouWantToContinueConnectingDialog.h \
src/AvatarLoader.h \
src/BasicMainWindow.h \
src/BasicRepositoryDialog.h \
src/BigDiffWindow.h \
src/BlameWindow.h \
src/CheckoutDialog.h \
src/CherryPickDialog.h \
src/ClearButton.h \
src/CloneDialog.h \
src/CloneFromGitHubDialog.h \
src/CommitDialog.h \
src/CommitExploreWindow.h \
src/CommitPropertyDialog.h \
src/CommitViewWindow.h \
src/ConfigCredentialHelperDialog.h \
src/ConfigSigningDialog.h \
src/CreateRepositoryDialog.h \
src/Debug.h \
src/DeleteBranchDialog.h \
src/DeleteTagsDialog.h \
src/DialogHeaderFrame.h \
src/DirectoryLineEdit.h \
src/DoYouWantToInitDialog.h \
src/EditGitIgnoreDialog.h \
src/EditRemoteDialog.h \
src/EditTagsDialog.h \
src/ExperimentDialog.h \
src/FileDiffSliderWidget.h \
src/FileDiffWidget.h \
src/FileHistoryWindow.h \
src/FilePropertyDialog.h \
src/FileUtil.h \
src/FilesListWidget.h \
src/FindCommitDialog.h \
src/Git.h \
src/GitDiff.h \
src/GitHubAPI.h \
src/GitObjectManager.h \
src/GitPack.h \
src/GitPackIdxV2.h \
src/HyperLinkLabel.h \
src/ImageViewWidget.h \
src/InputNewTagDialog.h \
src/JumpDialog.h \
+ src/Languages.h \
src/LineEditDialog.h \
src/LocalSocketReader.h \
src/LogTableWidget.h \
src/MainWindow.h \
src/MaximizeButton.h \
src/MemoryReader.h \
src/MenuButton.h \
src/MergeDialog.h \
src/MyImageViewWidget.h \
src/MyProcess.h \
src/MySettings.h \
src/MyTableWidgetDelegate.h \
src/MyTextEditorWidget.h \
src/MyToolButton.h \
src/ObjectBrowserDialog.h \
src/Photoshop.h \
src/PushDialog.h \
src/ReadOnlyLineEdit.h \
src/ReadOnlyPlainTextEdit.h \
src/ReflogWindow.h \
src/RemoteRepositoriesTableWidget.h \
src/RemoteWatcher.h \
src/RepositoriesTreeWidget.h \
src/RepositoryData.h \
src/RepositoryInfoFrame.h \
src/RepositoryLineEdit.h \
src/RepositoryPropertyDialog.h \
src/SearchFromGitHubDialog.h \
src/SelectCommandDialog.h \
src/SelectGpgKeyDialog.h \
src/SelectItemDialog.h \
src/SetGlobalUserDialog.h \
src/SetGpgSigningDialog.h \
src/SetRemoteUrlDialog.h \
src/SetUserDialog.h \
src/SettingBehaviorForm.h \
src/SettingExampleForm.h \
src/SettingGeneralForm.h \
src/SettingNetworkForm.h \
src/SettingProgramsForm.h \
src/SettingsDialog.h \
src/StatusLabel.h \
src/Terminal.h \
src/TextEditDialog.h \
src/Theme.h \
src/WelcomeWizardDialog.h \
src/charvec.h \
src/common/joinpath.h \
src/common/misc.h \
src/darktheme/DarkStyle.h \
src/darktheme/NinePatch.h \
src/darktheme/StandardStyle.h \
src/darktheme/TraditionalWindowsStyleTreeControl.h \
src/gpg.h \
src/gunzip.h \
src/main.h \
src/platform.h \
src/texteditor/AbstractCharacterBasedApplication.h \
src/texteditor/InputMethodPopup.h \
src/texteditor/TextEditorTheme.h \
src/texteditor/TextEditorWidget.h \
src/texteditor/UnicodeWidth.h \
src/texteditor/unicode.h \
src/urlencode.h \
src/webclient.h
HEADERS += src/version.h
FORMS += \
src/AboutDialog.ui \
src/AreYouSureYouWantToContinueConnectingDialog.ui \
src/BigDiffWindow.ui \
src/BlameWindow.ui \
src/CheckoutDialog.ui \
src/CherryPickDialog.ui \
src/CloneDialog.ui \
src/CloneFromGitHubDialog.ui \
src/CommitDialog.ui \
src/CommitExploreWindow.ui \
src/CommitPropertyDialog.ui \
src/CommitViewWindow.ui \
src/ConfigCredentialHelperDialog.ui \
src/ConfigSigningDialog.ui \
src/CreateRepositoryDialog.ui \
src/DeleteBranchDialog.ui \
src/DeleteTagsDialog.ui \
src/DoYouWantToInitDialog.ui \
src/EditGitIgnoreDialog.ui \
src/EditRemoteDialog.ui \
src/EditTagsDialog.ui \
src/ExperimentDialog.ui \
src/FileDiffWidget.ui \
src/FileHistoryWindow.ui \
src/FilePropertyDialog.ui \
src/FindCommitDialog.ui \
src/InputNewTagDialog.ui \
src/JumpDialog.ui \
src/LineEditDialog.ui \
src/MainWindow.ui \
src/MergeDialog.ui \
src/ObjectBrowserDialog.ui \
src/PushDialog.ui \
src/ReflogWindow.ui \
src/RepositoryPropertyDialog.ui \
src/SearchFromGitHubDialog.ui \
src/SelectCommandDialog.ui \
src/SelectGpgKeyDialog.ui \
src/SelectItemDialog.ui \
src/SetGlobalUserDialog.ui \
src/SetGpgSigningDialog.ui \
src/SetRemoteUrlDialog.ui \
src/SetUserDialog.ui \
src/SettingBehaviorForm.ui \
src/SettingExampleForm.ui \
src/SettingGeneralForm.ui \
src/SettingNetworkForm.ui \
src/SettingProgramsForm.ui \
src/SettingsDialog.ui \
src/TextEditDialog.ui \
src/WelcomeWizardDialog.ui
RESOURCES += \
src/resources/resources.qrc
unix {
SOURCES += \
src/unix/UnixProcess.cpp \
src/unix/UnixPtyProcess.cpp
HEADERS += \
src/unix/UnixProcess.h \
src/unix/UnixPtyProcess.h
}
win32 {
SOURCES += \
src/win32/Win32Process.cpp \
src/win32/Win32PtyProcess.cpp \
src/win32/event.cpp \
src/win32/thread.cpp \
src/win32/win32.cpp
HEADERS += \
src/win32/Win32Process.h \
src/win32/Win32PtyProcess.h \
src/win32/event.h \
src/win32/mutex.h \
src/win32/thread.h \
src/win32/win32.h
}
diff --git a/src/GitPack.cpp b/src/GitPack.cpp
index 91eac23..cbe0fe5 100644
--- a/src/GitPack.cpp
+++ b/src/GitPack.cpp
@@ -1,241 +1,249 @@
#include "GitPack.h"
#include "GitPackIdxV2.h"
#include <QDebug>
#include <QFile>
#include <zlib.h>
void GitPack::decodeTree(QByteArray *out)
{
if (out && out->size() > 0) {
QByteArray ba;
uint8_t const *begin = (uint8_t const *)out->data();
uint8_t const *end = begin + out->size();
uint8_t const *ptr = begin;
while (ptr < end) {
int mode = 0;
while (ptr < end) {
int c = *ptr & 0xff;
ptr++;
if (isdigit(c & 0xff)) {
mode = mode * 10 + (c - '0');
} else if (c == ' ') {
break;
}
}
uint8_t const *left = ptr;
while (ptr < end && *ptr) {
ptr++;
}
std::string name(left, ptr);
if (ptr + 20 < end) {
ptr++;
char tmp[100];
sprintf(tmp, "%06u %s ", mode, mode < 100000 ? "tree" : "blob");
char *p = tmp + 12;
for (int i = 0; i < 20; i++) {
sprintf(p, "%02x", ptr[i]);
p += 2;
}
ba.append(tmp, p - tmp);
ba.append('\t');
ba.append(name.c_str(), name.size());
ba.append('\n');
ptr += 20;
} else {
break;
}
}
*out = std::move(ba);
}
}
Git::Object::Type GitPack::stripHeader(QByteArray *out)
{
if (out) {
int n = out->size();
if (n > 0) {
char const *p = out->data();
if (n > 16) n = 16;
for (int i = 0; i < n; i++) {
if (p[i] == 0) {
Git::Object::Type type = Git::Object::Type::UNKNOWN;
if (strncmp(p, "blob ", 5) == 0) {
type = Git::Object::Type::BLOB;
} else if (strncmp(p, "tree ", 5) == 0) {
type = Git::Object::Type::TREE;
} else if (strncmp(p, "commit ", 7) == 0) {
type = Git::Object::Type::COMMIT;
} else if (strncmp(p, "tag ", 4) == 0) {
type = Git::Object::Type::TAG;
}
if (type != Git::Object::Type::UNKNOWN) {
*out = out->mid(i + 1);
}
return type;
}
}
}
}
return Git::Object::Type::UNKNOWN;
}
bool GitPack::decompress(QIODevice *in, size_t expanded_size, QByteArray *out, size_t *consumed, uint32_t *crc)
{
+ qDebug() << Q_FUNC_INFO << expanded_size;
if (consumed) *consumed = 0;
try {
int err;
z_stream d_stream;
d_stream.zalloc = nullptr;
d_stream.zfree = nullptr;
d_stream.opaque = nullptr;
d_stream.avail_in = 0;
err = inflateInit(&d_stream);
if (err != Z_OK) {
throw QString("failed: inflateInit");
}
int flush = Z_NO_FLUSH;
while (1) {
uint8_t ibuf[65536];
uint8_t obuf[65536];
size_t ilen = d_stream.avail_in;
d_stream.next_in = ibuf;
d_stream.next_out = obuf;
d_stream.avail_out = sizeof(obuf);
err = ::inflate(&d_stream, flush);
if (err == Z_BUF_ERROR) {
+ if (flush == Z_FINISH) {
+ throw QString("failed: inflate");
+ }
d_stream.avail_in = in->read((char *)ibuf, sizeof(ibuf));
if (d_stream.avail_in == 0) {
flush = Z_FINISH;
}
continue;
}
ilen -= d_stream.avail_in;
if (consumed) *consumed += ilen;
if (crc) *crc = crc32(*crc, ibuf, ilen);
+ if (ilen > 0 && d_stream.avail_in > 0) {
+ memmove(ibuf, ibuf + ilen, d_stream.avail_in);
+ }
+
size_t n = sizeof(obuf) - d_stream.avail_out;
out->append((char const *)obuf, n);
if (err == Z_STREAM_END) {
break;
}
if (err != Z_OK) {
throw QString("failed: inflate");
}
if (expanded_size > 0 && (size_t)out->size() > expanded_size) {
throw QString("file too large");
}
}
err = inflateEnd(&d_stream);
if (err != Z_OK) {
throw QString("failed: inflateEnd");
}
return true;
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::seekPackedObject(QIODevice *file, GitPackIdxItem const *item, Info *out)
{
try {
Info info;
auto Read = [&](void *ptr, size_t len){
const auto l = file->read((char *)ptr, len);
if (l < 0 || ((size_t)(l)) != len) {
throw QString("failed to read");
}
info.checksum = crc32(info.checksum, (uint8_t const *)ptr, len);
};
file->seek(0);
uint32_t header[3];
Read(header, sizeof(int32_t) * 3);
if (memcmp(header, "PACK", 4) != 0) throw QString("invalid pack file");
uint32_t version = read_uint32_be(header + 1);
if (version < 2) throw QString("invalid pack file version");
/*int count = */read_uint32_be(header + 2);
file->seek(item->offset);
info.checksum = 0;
// cf. https://github.com/github/git-msysgit/blob/master/builtin/unpack-objects.c
{
size_t size = 0;
char c;
Read(&c, 1);
info.type = (Git::Object::Type)((c >> 4) & 7);
size = c & 0x0f;
int shift = 4;
while (c & 0x80) {
Read(&c, 1);
size |= (c & 0x7f) << shift;
shift += 7;
}
info.expanded_size = size;
}
if (info.type == Git::Object::Type::OFS_DELTA) {
uint64_t offset = 0;
char c;
Read(&c, 1);
offset = c & 0x7f;
while (c & 0x80) {
Read(&c, 1);
offset = ((offset + 1) << 7) | (c & 0x7f);
}
info.offset = offset;
} else if (info.type == Git::Object::Type::REF_DELTA) {
char bin[20];
Read(bin, 20);
char tmp[41];
for (int i = 0; i < 20; i++) {
sprintf(tmp + i * 2, "%02x", bin[i] & 0xff);
}
info.ref_id = QString::fromLatin1(tmp, GIT_ID_LENGTH);
}
*out = info;
return true;
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::load(QIODevice *file, GitPackIdxItem const *item, Object *out)
{
*out = Object();
try {
seekPackedObject(file, item, out);
if (decompress(file, out->expanded_size, &out->content, &out->packed_size, &out->checksum)) {
out->expanded_size = out->expanded_size;
return true;
}
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::load(QString const &packfile, GitPackIdxItem const *item, GitPack::Object *out)
{
QFile file(packfile);
if (file.open(QFile::ReadOnly)) {
if (load(&file, item, out)) {
return true;
}
}
return false;
}
diff --git a/src/Languages.cpp b/src/Languages.cpp
new file mode 100644
index 0000000..35476a5
--- /dev/null
+++ b/src/Languages.cpp
@@ -0,0 +1,13 @@
+#include "Languages.h"
+
+Languages::Languages(QObject *parent)
+ : QObject(parent)
+{
+ addLanguage("en" , tr("English"));
+ addLanguage("ja" , tr("Japanese"));
+ addLanguage("ru" , tr("Russian"));
+ addLanguage("zh-CN", tr("Chinese (Simplified)"));
+ addLanguage("zh-TW", tr("Chinese (Traditional/Taiwan)"));
+}
+
+
diff --git a/src/Languages.h b/src/Languages.h
new file mode 100644
index 0000000..be6b4ac
--- /dev/null
+++ b/src/Languages.h
@@ -0,0 +1,28 @@
+#ifndef LANGUAGES_H
+#define LANGUAGES_H
+
+#include <QObject>
+
+class Languages : public QObject {
+ Q_OBJECT
+public:
+ struct Item {
+ QString id;
+ QString description;
+ Item() = default;
+ Item(QString const &id, QString const &description)
+ : id(id)
+ , description(description)
+ {
+ }
+ };
+ QList<Item> items;
+
+ explicit Languages(QObject *parent = nullptr);
+ void addLanguage(QString const &code, QString const &description)
+ {
+ items.push_back(Item(code, description));
+ }
+};
+
+#endif // LANGUAGES_H
diff --git a/src/SelectItemDialog.cpp b/src/SelectItemDialog.cpp
index 7b1c056..ed150e7 100644
--- a/src/SelectItemDialog.cpp
+++ b/src/SelectItemDialog.cpp
@@ -1,53 +1,53 @@
#include "SelectItemDialog.h"
#include "ui_SelectItemDialog.h"
SelectItemDialog::SelectItemDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SelectItemDialog)
{
ui->setupUi(this);
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowContextHelpButtonHint;
setWindowFlags(flags);
}
SelectItemDialog::~SelectItemDialog()
{
delete ui;
}
void SelectItemDialog::addItem(QString const &id, QString const &text)
{
auto *item = new QListWidgetItem;
item->setText(text);
item->setData(Qt::UserRole, id);
ui->listWidget->addItem(item);
}
void SelectItemDialog::select(QString const &id)
{
int n = ui->listWidget->count();
for (int i = 0; i < n; i++) {
QListWidgetItem *p = ui->listWidget->item(i);
if (p->data(Qt::UserRole).toString() == id) {
ui->listWidget->setCurrentRow(i);
return;
}
}
}
-SelectItemDialog::Item SelectItemDialog::item() const
+Languages::Item SelectItemDialog::item() const
{
- Item ret;
+ Languages::Item ret;
QListWidgetItem *p = ui->listWidget->currentItem();
if (p) {
ret.id = p->data(Qt::UserRole).toString();
- ret.text = p->text();
+ ret.description = p->text();
}
return ret;
}
void SelectItemDialog::on_listWidget_itemDoubleClicked(QListWidgetItem *)
{
done(Accepted);
}
diff --git a/src/SelectItemDialog.h b/src/SelectItemDialog.h
index 9907b49..de46a8a 100644
--- a/src/SelectItemDialog.h
+++ b/src/SelectItemDialog.h
@@ -1,40 +1,30 @@
#ifndef SELECTITEMDIALOG_H
#define SELECTITEMDIALOG_H
#include <QDialog>
#include <vector>
+#include "Languages.h"
class QListWidgetItem;
namespace Ui {
class SelectItemDialog;
}
class SelectItemDialog : public QDialog {
Q_OBJECT
private:
Ui::SelectItemDialog *ui;
-public:
- struct Item {
- QString id;
- QString text;
- Item() = default;
- Item(QString const &id, QString const &text)
- : id(id)
- , text(text)
- {
- }
- };
public:
explicit SelectItemDialog(QWidget *parent = nullptr);
~SelectItemDialog() override;
void addItem(QString const &id, QString const &text);
- Item item() const;
+ Languages::Item item() const;
void select(QString const &id);
private slots:
void on_listWidget_itemDoubleClicked(QListWidgetItem *);
};
#endif // SELECTITEMDIALOG_H
diff --git a/src/SelectItemDialog.ui b/src/SelectItemDialog.ui
index 8f67a12..7f59bad 100644
--- a/src/SelectItemDialog.ui
+++ b/src/SelectItemDialog.ui
@@ -1,75 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SelectItemDialog</class>
<widget class="QDialog" name="SelectItemDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>206</width>
- <height>159</height>
+ <width>456</width>
+ <height>408</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>pushButton</sender>
<signal>clicked()</signal>
<receiver>SelectItemDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>25</x>
<y>139</y>
</hint>
<hint type="destinationlabel">
<x>6</x>
<y>137</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButton_2</sender>
<signal>clicked()</signal>
<receiver>SelectItemDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>180</x>
<y>131</y>
</hint>
<hint type="destinationlabel">
<x>201</x>
<y>136</y>
</hint>
</hints>
</connection>
</connections>
</ui>
diff --git a/src/SettingGeneralForm.cpp b/src/SettingGeneralForm.cpp
index 837340d..434e735 100644
--- a/src/SettingGeneralForm.cpp
+++ b/src/SettingGeneralForm.cpp
@@ -1,125 +1,120 @@
#include "MySettings.h"
#include "SelectItemDialog.h"
#include "ApplicationGlobal.h"
#include "SettingGeneralForm.h"
#include "ui_SettingGeneralForm.h"
+#include "Languages.h"
#include "common/misc.h"
#include <QFileDialog>
SettingGeneralForm::SettingGeneralForm(QWidget *parent) :
AbstractSettingForm(parent),
ui(new Ui::SettingGeneralForm)
{
ui->setupUi(this);
langs = languages();
- themes.push_back(SelectItemDialog::Item("standard", tr("Standard")));
- themes.push_back(SelectItemDialog::Item("dark", tr("Dark")));
+ themes.push_back(Languages::Item("standard", tr("Standard")));
+ themes.push_back(Languages::Item("dark", tr("Dark")));
updateLanguage();
updateTheme();
}
SettingGeneralForm::~SettingGeneralForm()
{
delete ui;
}
-QList<SelectItemDialog::Item> SettingGeneralForm::languages()
+QList<Languages::Item> SettingGeneralForm::languages()
{
- QList<SelectItemDialog::Item> langs;
- langs.push_back(SelectItemDialog::Item("en", tr("English")));
- langs.push_back(SelectItemDialog::Item("ja", tr("Japanese")));
- langs.push_back(SelectItemDialog::Item("ru", tr("Russian")));
- langs.push_back(SelectItemDialog::Item("zh-CN", tr("Chinese (Simplified)")));
- langs.push_back(SelectItemDialog::Item("zh-TW", tr("Chinese (Taiwan)")));
- return langs;
+ return Languages().items;
}
void SettingGeneralForm::exchange(bool save)
{
if (save) {
settings()->remember_and_restore_window_position = ui->checkBox_save_window_pos->isChecked();
settings()->enable_high_dpi_scaling = ui->checkBox_enable_high_dpi_scaling->isChecked();
} else {
ui->checkBox_save_window_pos->setChecked(settings()->remember_and_restore_window_position);
ui->checkBox_enable_high_dpi_scaling->setChecked(settings()->enable_high_dpi_scaling);
}
}
void SettingGeneralForm::on_pushButton_browse_default_working_dir_clicked()
{
}
void SettingGeneralForm::updateLanguage()
{
QString id = global->language_id;
if (id.isEmpty()) {
id = "en";
}
- for (SelectItemDialog::Item const &item : langs) {
+ for (Languages::Item const &item : langs) {
if (item.id == id) {
- ui->lineEdit_language->setText(item.text);
+ ui->lineEdit_language->setText(item.description);
return;
}
}
}
void SettingGeneralForm::updateTheme()
{
QString id = global->theme_id;
if (id.isEmpty()) {
id = "standard";
}
- for (SelectItemDialog::Item const &item : themes) {
+ for (Languages::Item const &item : themes) {
if (item.id == id) {
- ui->lineEdit_theme->setText(item.text);
+ ui->lineEdit_theme->setText(item.description);
return;
}
}
}
-void SettingGeneralForm::execSelectLanguageDialog(QWidget *parent, QList<SelectItemDialog::Item> const &langs, std::function<void()> const &done)
+void SettingGeneralForm::execSelectLanguageDialog(QWidget *parent, QList<Languages::Item> const &langs, std::function<void()> const &done)
{
SelectItemDialog dlg(parent);
dlg.setWindowTitle(tr("Select Language"));
- for (SelectItemDialog::Item const &item : langs) {
- dlg.addItem(item.id, item.text);
+ for (Languages::Item const &item : langs) {
+ dlg.addItem(item.id, item.description);
}
dlg.select(global->language_id.isEmpty() ? "en" : global->language_id);
if (dlg.exec() == QDialog::Accepted) {
- SelectItemDialog::Item item = dlg.item();
+ Languages::Item item = dlg.item();
global->language_id = item.id;
MySettings s;
s.beginGroup("UI");
s.setValue("Language", global->language_id);
s.endGroup();
done();
}
}
void SettingGeneralForm::on_pushButton_change_language_clicked()
{
execSelectLanguageDialog(this, langs, [&](){updateLanguage();});
}
void SettingGeneralForm::on_pushButton_change_theme_clicked()
{
SelectItemDialog dlg(this);
dlg.setWindowTitle(tr("Select Theme"));
- for (SelectItemDialog::Item const &item : themes) {
- dlg.addItem(item.id, item.text);
+ for (Languages::Item const &item : themes) {
+ dlg.addItem(item.id, item.description);
}
dlg.select(global->theme_id.isEmpty() ? "standard" : global->theme_id);
if (dlg.exec() == QDialog::Accepted) {
- SelectItemDialog::Item item = dlg.item();
+ Languages::Item item = dlg.item();
global->theme_id = item.id;
MySettings s;
s.beginGroup("UI");
s.setValue("Theme", global->theme_id);
s.endGroup();
updateTheme();
}
}
diff --git a/src/SettingGeneralForm.h b/src/SettingGeneralForm.h
index 0400d2c..a9fd30b 100644
--- a/src/SettingGeneralForm.h
+++ b/src/SettingGeneralForm.h
@@ -1,36 +1,36 @@
#ifndef SETTINGGENERALFORM_H
#define SETTINGGENERALFORM_H
#include "AbstractSettingForm.h"
#include "SelectItemDialog.h"
#include <QWidget>
namespace Ui {
class SettingGeneralForm;
}
class SettingGeneralForm : public AbstractSettingForm
{
Q_OBJECT
private:
Ui::SettingGeneralForm *ui;
- QList<SelectItemDialog::Item> langs;
- QList<SelectItemDialog::Item> themes;
+ QList<Languages::Item> langs;
+ QList<Languages::Item> themes;
void updateLanguage();
void updateTheme();
public:
explicit SettingGeneralForm(QWidget *parent = nullptr);
~SettingGeneralForm() override;
void exchange(bool save) override;
- static QList<SelectItemDialog::Item> languages();
- static void execSelectLanguageDialog(QWidget *parent, const QList<SelectItemDialog::Item> &langs, const std::function<void ()> &done);
+ static QList<Languages::Item> languages();
+ static void execSelectLanguageDialog(QWidget *parent, const QList<Languages::Item> &langs, const std::function<void ()> &done);
private slots:
void on_pushButton_browse_default_working_dir_clicked();
void on_pushButton_change_language_clicked();
void on_pushButton_change_theme_clicked();
};
#endif // SETTINGGENERALFORM_H
diff --git a/src/resources/translations/Guitar_ja.qm b/src/resources/translations/Guitar_ja.qm
index b881a92..409739b 100644
Binary files a/src/resources/translations/Guitar_ja.qm and b/src/resources/translations/Guitar_ja.qm differ
diff --git a/src/resources/translations/Guitar_ja.ts b/src/resources/translations/Guitar_ja.ts
index 2715e58..20ad774 100644
--- a/src/resources/translations/Guitar_ja.ts
+++ b/src/resources/translations/Guitar_ja.ts
@@ -1,2751 +1,2986 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ja_JP">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source>&lt;a href=&quot;https://github.com/soramimi/Guitar&quot;&gt;https://github.com/soramimi/Guitar&lt;/a&gt;</source>
+ <translation></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 について</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>不明なホスト</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>接続を続行しますか? (yes/no)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>続行</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation>gitコマンドが指定されていません</translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>このURLは有効なリポジトリです</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>このURLへのアクセスに失敗しました</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&amp;Property</source>
<translation>プロパティ(&amp;P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>%1 コマンドの選択</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>すべてのファイルの変更を破棄</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>フォルダは有効なGitリポジトリではありません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>Gitリポジトリとして初期化しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>リポジトリの初期化</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>有効なリポジトリではありません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>リポジトリを開く</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>そのようなフォルダはありません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>ブックマークから削除しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>削除の確認</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(ファルは削除されません)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>同じ名前のファイルが既に存在しています</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>無効なフォルダ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>このフォルダはありません。作成しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>コミットメッセージを空にすることはできません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>コミット失敗</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>接続が拒否されました。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>リモートリポジトリが登録されていません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>--set-upstream を試してください</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch &apos;%1&apos;</source>
<translation>ブランチ「%1」の削除に失敗しました</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">ブランチの削除に失敗しました : &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>無名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差分</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>情報</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation>チェリーピック</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation>コミット</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation>日付</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation>名前</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation>メッセージ</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&amp;Test</source>
<translation>テスト(&amp;T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>ローカル</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>既存のフォルダを開く...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>検索</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>ここにチェックアウト</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>既存のフォンるだを開く</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>GitHubからクローン</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG署名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>コミットエクスプローラー</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>コミットID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>コミットのプロパティ</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG署名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>コミットID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>親ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>ファイル...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source>&lt;Unknown&gt;</source>
<translation>&lt;不明&gt;</translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>コミットビュー</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>履歴</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>なし</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>その他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>署名ポリシー</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>commit.gpgsign の設定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>リポジトリの作成</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>パス</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>ブックマーク</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>テスト</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>有効なリポジトリが既に存在しています。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定されたパスはフォルダではありません。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>リモート名が無効です。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>作成先のパス</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>ブランチの削除</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&amp;All branches</source>
<translation>全てのブランチ(&amp;A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>リモートブランチの削除</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>タグを削除</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>全てチェック</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>リポジトリの初期化</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>フォルダ:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>は、有効なGitリポジトリではありません。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>これをGitリポジトリとして初期化しますか?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>はい、初期化します。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>いいえ、初期化しません。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>選択してください</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>次へ...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>Gitで無視するファイルの編集</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>ファイルを編集する</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>リモートの編集</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&amp;Test</source>
<translation>テスト(&amp;T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>タグの編集</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>追加...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>削除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>ファイルの履歴</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>ファイルのプロパティ</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&amp;Close</source>
<translation>閉じる(&amp;C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation>コミットの検索</translation>
+ </message>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>タグの編集</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>タグ</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">ブランチとタグ</translation>
</message>
<message>
<source>&amp;Filter</source>
<translation type="vanished">フィルタ(&amp;F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">検索</translation>
</message>
<message>
<source>&amp;Checkout</source>
<translation type="vanished">チェックアウト(&amp;C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>ブランチ、タグ、コミットID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名前</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation>日本語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation>ロシア語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation>中国語(簡体字)</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation>中国語(繁体字/台湾)</translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation></translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>フェッチ</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>プル</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>プッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>端末</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>ブランチ名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>オフライン</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>オンライン</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>除外</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全て選択</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>追加</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&amp;File</source>
<translation>ファイル(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&amp;View</source>
<translation>表示(&amp;V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&amp;Edit</source>
<translation>編集(&amp;E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">注意を要するコマンド</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>タグの編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>タグの編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>リポジトリの作成</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>プッシュ upstream</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>処理の停止</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&amp;xit</source>
<translation>終了(&amp;X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>プロパティ...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>GPG署名の指定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&amp;Help</source>
<translation>ヘルプ(&amp;H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation>ステータス</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&amp;Window</source>
<translation>ウィンドウ(&amp;W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&amp;Repository</source>
<translation>リポジトリ(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>素タッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&amp;mote</source>
<translation>リモート(&amp;M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&amp;Destructive</source>
<translation>要注意(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>ログ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&amp;Open existing working copy...</source>
<translation>既存の作業コピーを開く(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>既存の作業コピーを追加</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&amp;Commit</source>
<translation>コミット(&amp;C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&amp;Push</source>
<translation>プッシュ(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&amp;ll</source>
<translation>プル(&amp;L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&amp;Fetch</source>
<translation>フェッチ(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>グローバル .gitignore を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>.git/config を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>.gitignore を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&amp;Settings...</source>
<translation>設定(&amp;S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&amp;Jump...</source>
<translation>移動(&amp;J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&amp;out...</source>
<translation>チェックアウト(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>ブランチの削除...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>適用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>破棄</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>リポジトリパネル</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&amp;Find...</source>
+ <translation>検索(&amp;F)...</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation>次を検索</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &amp;HEAD</source>
+ <translation>HEADへ移動(&amp;H)</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation>マージ...</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation>コミットログを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation>ファイルリストを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation>差分ビューを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation>サイドバー</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation>広げる</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>リモートブランチの削除...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&amp;About</source>
<translation>Guitarについて(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>全てのタグをプッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>ユーザー情報を設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&amp;Log</source>
<translation>ログ(&amp;L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">無名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>樹形図</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>コミットされていない変更があります</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(ファルは削除されません)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">リポジトリを開く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">そのようなフォルダはありません</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">有効なリポジトリではありません</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">コミットメッセージを空にすることはできません。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&amp;Add new group</source>
<translation>新しいグループを追加(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&amp;Delete group</source>
<translation>グループを削除(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&amp;Rename group</source>
<translation>グループ名の変更(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新しいグループ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &amp;terminal</source>
<translation>端末を開く(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&amp;t</source>
<translation>コマンドプロンプトを開く(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&amp;Open</source>
<translation>開く(&amp;O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &amp;folder</source>
<translation>フォルダを開く(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&amp;Remove</source>
<translation>削除(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>コミットIDをコピー(7文字)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>コミットIDをコピー(すべて)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">コメントを編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>リベース</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>探索</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>HEADをリセット</translation>
+ <translation type="vanished">HEADをリセット</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>履歴</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>そのようなコミットはありません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>認証が失敗しました</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>変更を破棄する</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">コミット失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">リモートリポジトリが登録されていません。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">--set-upstream を試してください</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">接続が拒否されました。</translation>
</message>
<message>
<source>&amp;Property</source>
<translation type="vanished">プロパティ(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>チェックアウト/ブランチ...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>メッセージの編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>マージ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>チェリーピック</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>追跡しない</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>選択されたファイルを削除します。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>リセット</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>無視する</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>コミットをリベースしてよろしいですか?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>削除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">すべてのファイルの変更を破棄</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">%1 コマンドの選択</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同じ名前のファイルが既に存在しています</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">無効なフォルダ</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">このフォルダはありません。作成しますか?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">このURLは有効なリポジトリです</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">このURLへのアクセスに失敗しました</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">そのコミットは、見つからないか、まだ読み込まれていません</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">ブランチの削除に失敗しました : &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>マージ</translation>
+ <translation type="vanished">マージ</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>現在のブランチ :</translation>
+ <translation type="vanished">現在のブランチ :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>Cancel</source>
+ <translation type="vanished">キャンセル</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation>マージ</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation>ファストフォワーディング</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation>規定 (--ff)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation>ファストフォワードしない (--no-ff)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation>ファストフォワードのみ (--ff-only)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation>元</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
<translation></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>名前を付けて保存...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>名前を付けて保存</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>名前を付けて保存...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>コピー</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>名前を付けて保存</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>オブジェクトブラウザ</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>調査</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>種類</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>オブジェクトの調査</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>プッシュ</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>ブランチ</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">ブランチ</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">キャンセル</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation>ヘッド</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>コマンド</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">コメント</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>URLをコピー</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>リポジトリのプロパティ</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>ローカルフォルダ :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>リモートURL</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>追加</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>編集</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>削除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&amp;Remote menu</source>
<translation>リモートメニュー(&amp;R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>削除の確認</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote &apos;%1&apos; from the repository &apos;%2&apos; ?</source>
<translation>リポジトリ「%2」からリモート「%1」を削除してよろしいですか?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>GitHubから検索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>検索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>オーナー</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>スコア</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>概要</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>git コマンドの選択</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&amp;Browse...</source>
<translation>参照(&amp;B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the &apos;%1&apos; command you want to use.</source>
<translation>使用したい &apos;%1&apos; コマンドを選択してください。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 コマンド (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>実行可能ファイル (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 コマンド</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>GPGキーの選択</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>メール</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>グローバルユーザー設定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>スキップ</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>GPG署名の指定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>グローバル</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>選択</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>消去</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>リモートURLの設定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>現在のURL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新しいURL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&amp;Test</source>
<translation>テスト(&amp;T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>ユーザーの設定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>グローバル</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>Gravatarからアイコンを取得</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>動作</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>既定の作業フォルダ</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>参照...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>リポジトリを開くとき自動的にフェッチする</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer&apos;s icon from gravatar.com</source>
<translation>gravatar.comからアイコンを取得する</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>取得するコミット情報の最大個数</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期的リモートの変更を監視する</translation>
+ <translation type="vanished">定期的リモートの変更を監視する</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>間隔</translation>
+ <translation type="vanished">間隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG署名ポリシー</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>無効</translation>
+ <translation type="vanished">無効</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation></translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>言語</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>言語の変更...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>テーマの変更...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>ウィンドウの位置を記憶し復元する</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>高精細画面のスケーリングを行う</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>テーマ</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
- <source>English</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日本語</translation>
+ <translation type="vanished">日本語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">ロシア語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>標準</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>ダーク</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>言語の選択</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>テーマの選択</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(設定は次の実行時に有効になります)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>ネットワーク</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>プロキシサーバー</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>プロキシなし</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自動検出</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手動</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>プログラム</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git コマンド</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>参照...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>File コマンド</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPGコマンド(オプション)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&amp;Close</source>
+ <translation>閉じる(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation>キャンセル</translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>Guitarウィザードへようこそ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>ヘルパープログラム</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>グローバルユーザー情報</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>Gravatarからアイコンを取得</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>規定の作業フォルダ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>フォルダ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitarの準備ができました!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>ユーザー</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source>&lt;&lt; Prev</source>
<translation>&lt;&lt; 戻る</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next &gt;&gt;</source>
<translation>次へ &gt;&gt;</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>完了</translation>
</message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_ru.qm b/src/resources/translations/Guitar_ru.qm
index 685cba3..9b31be9 100644
Binary files a/src/resources/translations/Guitar_ru.qm and b/src/resources/translations/Guitar_ru.qm differ
diff --git a/src/resources/translations/Guitar_ru.ts b/src/resources/translations/Guitar_ru.ts
index 51ad387..0f5fbcd 100644
--- a/src/resources/translations/Guitar_ru.ts
+++ b/src/resources/translations/Guitar_ru.ts
@@ -1,2645 +1,2982 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source>&lt;a href=&quot;https://github.com/soramimi/Guitar&quot;&gt;https://github.com/soramimi/Guitar&lt;/a&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>О %1</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>Узел не найден</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>Повторить попытку соединения? (Да/нет)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>Да, продолжить</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>Нет, закрыть</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>URL ссылается на корректный репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>Нет доступа по URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>Репозиторий-истоник</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&amp;Property</source>
<translation>&amp;Свойства</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>Выбор %1 команды</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>Отменить (Revert) изменения во всех файлах</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>Папка не является репозиторием Git.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>Инициализировать репозиторий Git?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>Инициализировать репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>Репозиторий не выбран</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>Свойства репозитория</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>Каталог не является репозиторием Git</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>Открыть репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>Каталог не существует</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>Удалить из закладок?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation>, %1 впереди</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation>, %1 позади</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>Подтвердите удаление</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>Вы точно хотите удалить репозиторий из закладок?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(Файлы НЕ будут удалены)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>Существует файл с тем же именем</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>Клонировать (Clone)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>Существует папка с тем же именем</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>Ошибочный каталог</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>Каталог не существует. Создать?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>Фиксировать (Commit)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>Комментарий к фиксации является обязательным.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>Не удалось зафиксировать</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>Отказано в соединении.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>Репозиторий источника не зарегистрирован.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>Текущая ветвь %1 не содержится в источнике.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>Попытайтесь отправить (Push) с опцией --set-upstream</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch &apos;%1&apos;</source>
<translation>Не удалось удалить ветвь &apos;%1&apos;</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">ブランチの削除に失敗しました : &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>Вы точно хотите выполнить следующую команду?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>Отбросить изменения (Reset) файла</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>Безымянный</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>Назначение</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation></translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>Информация</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">Выборочное применение (Cherry-pick)</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">Дата</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">Автор</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">Комментарий</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>Клонировать (Clone)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&amp;Test</source>
<translation>&amp;Тестировать</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>Локальный</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>Открыть локальную копию...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>Проверить в</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>Открыть существующий каталог</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>Клонировать из GitHub</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>Подпись GPG</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>Обзор фиксации</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>ID фиксации</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>Свойства фиксации</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>Подпись GPG</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>ID фиксации</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>ID родительских фиксаций</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>Файлы...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source>&lt;Unknown&gt;</source>
<translation>&lt;Неизвестно&gt;</translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>Просмотр фиксации (Commit)</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>История</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>Нет</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>Другие</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>Политика подписания</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>Настройка commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>Создать репозиторий</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>Путь</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>Закладка</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>Тестировать</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>Репозиторий Git уже существует.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>Путь не является каталогом.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>Имя источника некорректно.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>Путь назначения</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>Удалить ветвь</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&amp;All branches</source>
<translation>Все ветви (&amp;A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>Удалить ветвь в источнике</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>Удалить тэги</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>Проверить все</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>Создать репозиторий</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>Каталог:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>не является репозиторием.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>Инициализировать репозиторий Git?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>Да, инициализировать.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>Нет, отменить.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>Продолжить</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>Далее...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>Редактировать список игнорирования</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>Свойства источника</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&amp;Test</source>
<translation>&amp;Проверить</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>Редактор тэгов</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>Добавить...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>История файла</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="112"/>
+ <location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="113"/>
+ <location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="114"/>
+ <location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="115"/>
+ <location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>Свойства файла</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&amp;Close</source>
<translation>&amp;Закрыть</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="31"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>Редактор тэга</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>Тэг</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">ブランチとタグ</translation>
</message>
<message>
<source>&amp;Filter</source>
<translation type="vanished">フィルタ(&amp;F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">検索</translation>
</message>
<message>
<source>&amp;Checkout</source>
<translation type="vanished">チェックアウト(&amp;C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>Ветвь, Тэг или ID фиксации :</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="38"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>Имя</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">Японский</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation></translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>Клонировать</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2197"/>
- <location filename="../../MainWindow.cpp" line="2198"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>Загрузить</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>Обновить</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>Выгрузить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>Терминал</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>Имя ветви</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>Офлайн</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>Онлайн</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1594"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>Не отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>Выбрать всё</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1464"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>Отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>Фиксация</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&amp;File</source>
<translation>&amp;Файл</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&amp;View</source>
<translation>Вид(&amp;V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&amp;Edit</source>
<translation>Редактировать(&amp;E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">注意を要するコマンド</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1328"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>Правка тэгов...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>Правка тэгов</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>Создание репозитория</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>Выгрузить в источник</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>Остановить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&amp;xit</source>
<translation>В&amp;ыход</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>Свойства...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>Настройка подписей GPG</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&amp;Help</source>
<translation>Помощь (&amp;H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&amp;Window</source>
<translation>Окно(&amp;W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&amp;Repository</source>
<translation>Репозиторий(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>Спрятать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&amp;mote</source>
<translation>Источник (&amp;M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&amp;Destructive</source>
<translation>Разрушительные (&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>Журнал</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&amp;Open existing working copy...</source>
<translation>Открыть существующий репозиторий (&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1657"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>Добавить существующий репозиторий</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>Обновить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&amp;Commit</source>
<translation>Фиксация (&amp;Commit)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&amp;Push</source>
<translation>Выгрузить (&amp;Push)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&amp;ll</source>
<translation>Обновить (Pu&amp;ll)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&amp;Fetch</source>
<translation>Загрузить (&amp;Fetch)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>Прака глобального .gitconfig</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>Правка .git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>Правка .gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&amp;Settings...</source>
<translation>Настройки (&amp;S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&amp;Jump...</source>
<translation>Переход (&amp;Jump)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&amp;out...</source>
<translation>Проверка (C&amp;heckout)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>Удалить ветвь...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>Применить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>Отменить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>Панель репозиториев</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&amp;Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &amp;HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1341"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>Удалить ветвь источника...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&amp;About</source>
<translation>&amp;О программе</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>Выгрузить все тэги</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>Выбрать пользователя</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&amp;Log</source>
<translation>Журнал (&amp;Log)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">無名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>По-умолчанию</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>Граф</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1115"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>Незафиксированные изменения</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(ファルは削除されません)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">リポジトリを開く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">そのようなフォルダはありません</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">有効なリポジトリではありません</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">コミットメッセージを空にすることはできません。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1218"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&amp;Add new group</source>
<translation>Новая &amp;группа</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1219"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&amp;Delete group</source>
<translation>Удалить &amp;группу</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1220"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&amp;Rename group</source>
<translation>Переименовать группу(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1225"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>Новая группа</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1249"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &amp;terminal</source>
<translation>Открыть терминал (&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1250"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&amp;t</source>
<translation>Открыть терминал (&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1252"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&amp;Open</source>
<translation>Открыть (&amp;Open)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1263"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &amp;folder</source>
<translation>Открыть каталог (&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1268"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&amp;Remove</source>
<translation>Удалить (&amp;Remove)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1311"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>Скопируйте ID фиксации(7 символов)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1312"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>Скопируйте ID фиксации(полностью)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">コメントを編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
- <location filename="../../MainWindow.cpp" line="2130"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>Перебазирование</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1334"/>
<source>Reset HEAD</source>
- <translation>Откат HEAD</translation>
+ <translation type="vanished">Откат HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1420"/>
- <location filename="../../MainWindow.cpp" line="1469"/>
- <location filename="../../MainWindow.cpp" line="1595"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>История</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2088"/>
- <location filename="../../MainWindow.cpp" line="2102"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>Фиксация не существует</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2200"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>Обновить</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2481"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>Авторизация не удалась</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>Отмена (Revert)</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">コミット失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">リモートリポジトリが登録されていません。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">--set-upstream を試してください</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">接続が拒否されました。</translation>
</message>
<message>
<source>&amp;Property</source>
<translation type="vanished">プロパティ(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>Проверка/ветвь...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1322"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>Правка комментария...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1325"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>Слияние</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1327"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>Выборочное применение (Cherry-pick)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1419"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>Не отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1421"/>
- <location filename="../../MainWindow.cpp" line="1470"/>
- <location filename="../../MainWindow.cpp" line="1596"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>Обращение</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1429"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>Удалить выбранные файлы.</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1440"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1465"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>Откат (Reset)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1466"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>Игнорировать</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2127"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>Вы уверены, что хотите переместить фиксацию?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1418"/>
- <location filename="../../MainWindow.cpp" line="1467"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">すべてのファイルの変更を破棄</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">%1 コマンドの選択</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同じ名前のファイルが既に存在しています</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">無効なフォルダ</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">このフォルダはありません。作成しますか?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">このURLは有効なリポジトリです</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">このURLへのアクセスに失敗しました</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2088"/>
- <location filename="../../MainWindow.cpp" line="2102"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">そのコミットは、見つからないか、まだ読み込まれていません</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">ブランチの削除に失敗しました : &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>Слияние</translation>
+ <translation type="vanished">Слияние</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>Текущая ветвь :</translation>
+ <translation type="vanished">Текущая ветвь :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>Cancel</source>
+ <translation type="vanished">Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">Слияние</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>Отмена</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
- <location filename="../../MyImageViewWidget.cpp" line="35"/>
+ <location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>Сохранить как...</translation>
</message>
<message>
- <location filename="../../MyImageViewWidget.cpp" line="43"/>
+ <location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>Сохранить как</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>Сохранить как...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>Сохранить как</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>Обозреватель объектов</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>Проверка</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>Проверка объектов</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>Выгрузить</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>Выгрузить в источник</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>Ветвь</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">ブランチ</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">キャンセル</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation>Текущая</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>Команда</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">コメント</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>Копировать URL</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>Свойства репозитория</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>Локальный каталог:</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>URL источников</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&amp;Remote menu</source>
<translation>Меню источника (&amp;R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
- <location filename="../../RepositoryPropertyDialog.cpp" line="132"/>
+ <location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>Подтвердите удаление</translation>
</message>
<message>
- <location filename="../../RepositoryPropertyDialog.cpp" line="132"/>
+ <location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote &apos;%1&apos; from the repository &apos;%2&apos; ?</source>
<translation>Вы точно хотите удалить источник &apos;%1&apos; из репозитория &apos;%2&apos; ?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>Поиск на GitHub</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>Владелец</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="60"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>Популярность</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="61"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>Описание</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>Выбрать команду git</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&amp;Browse...</source>
<translation>&amp;Обзор...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the &apos;%1&apos; command you want to use.</source>
<translation>Выберите &apos;%1&apos; команду, которую вы хотите выполнить.</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 команда (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>Исполняемые файлы (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 команда</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>Выбор ключа GPG</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation></translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>Глобальная настройка пользователя</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>Пропустить</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>Настройка подписей GPG</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>Глобально</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>Выбрать</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>Установка URL источника</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>Текущий URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>Новый URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&amp;Test</source>
<translation>&amp;Тестировать</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>Выбрать пользователя</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>Глобально</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>Получить аватар с Gravatar</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>Поведение</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>Рабочий каталог по-умолчанию</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>Автоматически загружать при открытии репозитория</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer&apos;s icon from gravatar.com</source>
<translation>Получить аватар коммитера с gravatar.com</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>Максимальное число загружаемых коммитов</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>Отслеживать изменения в источнике</translation>
+ <translation type="vanished">Отслеживать изменения в источнике</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>интервал</translation>
+ <translation type="vanished">интервал</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>Политика подписания</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>Выключить</translation>
+ <translation type="vanished">Выключить</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1 минута</translation>
+ <translation type="vanished">1 минута</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1 минут</translation>
+ <translation type="vanished">%1 минут</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation></translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>Общие</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>Изменить язык...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>Изменить тему...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>Помнить позицию и размер окна</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>Включить highDPI масштабирование</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>Тема</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
- <source>English</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>Японский</translation>
+ <translation type="vanished">Японский</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>Стандартная</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>Тёмная</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="78"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>Выбор языка</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="97"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>Выбор темы</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(Изменения применятся при следующем запуске)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>Прокси-сервер</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>Без прокси</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>Авто-определение</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>Вручную</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>Программы</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>путь к git</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>путь к file</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>путь к gpg (опционально)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished">&amp;Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWizardDialog</name>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="14"/>
+ <source>Welcome to the Guitar Wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="45"/>
+ <source>Helper Tools</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="61"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="338"/>
+ <source>git</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="71"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="88"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="248"/>
+ <source>Browse</source>
+ <translation type="unfinished">Обзор</translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="78"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="352"/>
+ <source>file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="120"/>
+ <source>Global User Information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="142"/>
+ <source>git config --global user.name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="152"/>
+ <source>git config --global user.email</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="168"/>
+ <source>Get icon from Gravatar</source>
+ <translation type="unfinished">Получить аватар с Gravatar</translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="222"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
+ <source>Default Working Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="238"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="324"/>
+ <source>folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="280"/>
+ <source>Ready to play the Guitar !</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="296"/>
+ <source>user</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="310"/>
+ <source>email</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="426"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <source>&lt;&lt; Prev</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="433"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
+ <source>Next &gt;&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.cpp" line="126"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
+ <source>Finish</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_zh-CN.qm b/src/resources/translations/Guitar_zh-CN.qm
index 63ca1e3..4b5d2d8 100644
Binary files a/src/resources/translations/Guitar_zh-CN.qm and b/src/resources/translations/Guitar_zh-CN.qm differ
diff --git a/src/resources/translations/Guitar_zh-CN.ts b/src/resources/translations/Guitar_zh-CN.ts
index edc8a52..79866af 100644
--- a/src/resources/translations/Guitar_zh-CN.ts
+++ b/src/resources/translations/Guitar_zh-CN.ts
@@ -1,2751 +1,2994 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source>&lt;a href=&quot;https://github.com/soramimi/Guitar&quot;&gt;https://github.com/soramimi/Guitar&lt;/a&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 关于</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>未知主机</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>你想继续连接吗?(是/否)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>继续</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>此URL是有效的仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>无法访问此URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>远程仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&amp;Property</source>
<translation>属性(&amp;P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>选择 %1 命令</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>放弃所有文件更改</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>文件夹不是有效的Git仓库。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>是否要将其初始化为Git仓库?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>初始化仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>未选择仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>仓库属性</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>不是有效的仓库。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>打开仓库く</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>没有这样的文件夹</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>是否确实要从书签中删除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>确认删除</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>是否确实要从书签中删除仓库?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(文件未被删除)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>同名的文件已存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>同名的文件夹已存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>无效文件夹</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>此文件夹不存在。是否要创建?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>提交消息不能为空。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>提交失败</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>连接被拒绝。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>远程仓库未注册。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>目前的分支「%1」没有上游分支。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>请尝试--set-upstream </translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch &apos;%1&apos;</source>
<translation>无法删除分支「%1」</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">无法删除分支: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>您确定要运行以下命令吗?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>重置文件</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>未命名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差异</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation>作者及修订版本信息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>信息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">择优拣选</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished">确定</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished">提交</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">日期</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">作者</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">消息</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&amp;Test</source>
<translation>测试(&amp;T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>打开现有文件夹く...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>搜索</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>检出到</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>打开现有文件夹</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>从GitHub克隆</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG签名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>提交浏览器</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>提交</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>提交属性</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG签名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>父ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>文件...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>浏览器</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source>&lt;Unknown&gt;</source>
<translation>&lt;未知的&gt;</translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>提交视图</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>历史</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>无</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>其他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>签名策略</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>配置commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation>局部</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>创建仓库</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>路径</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>书签</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>测试</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>已存在有效的仓库。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定的路径不是文件夹。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>远程名称无效。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>目标路径</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>删除分支</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&amp;All branches</source>
<translation>所有分支(&amp;A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>删除远程分支</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>删除标签</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>检查所有</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>初始化仓库</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>文件夹:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>不是有效的Git仓库。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>您想将其初始化为Git仓库吗?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>是,请初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>否,不要初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>请选择</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>下一步...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>编辑Git忽略的文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>编辑文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>远程编辑</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&amp;Test</source>
<translation>测试(&amp;T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>编辑标签</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>添加...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>文件历史</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>文件属性</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&amp;Close</source>
<translation>关闭(&amp;C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished">确定</translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>编辑标签</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>标签</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">分支和标签</translation>
</message>
<message>
<source>&amp;Filter</source>
<translation type="vanished">过滤器(&amp;F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">查找</translation>
</message>
<message>
<source>&amp;Checkout</source>
<translation type="vanished">检出(&amp;C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>分支,标签,提交ID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名称</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished">英语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">日语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished">俄语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation>行编辑</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation>Guitar</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>取出</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>拉取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>终端</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>资源管理器</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>分支名称</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>离线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>在线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>unstage</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全选</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>stage</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&amp;File</source>
<translation>文件(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&amp;View</source>
<translation>表示(&amp;V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&amp;Edit</source>
<translation>编辑(&amp;E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">需要注意的命令</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>编辑标签...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>编辑标签</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>创建仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>推送到上游</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>停止处理</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&amp;xit</source>
<translation>退出(&amp;X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>属性...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>设置GPG签名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&amp;Help</source>
<translation>帮助(&amp;H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&amp;Window</source>
<translation>窗口(&amp;W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&amp;Repository</source>
<translation>仓库(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>贮存</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&amp;mote</source>
<translation>远程(&amp;M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&amp;Destructive</source>
<translation>注意(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>日志</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&amp;Open existing working copy...</source>
<translation>打开现有工作副本(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>添加现有工作副本</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>刷新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&amp;Commit</source>
<translation>提交(&amp;C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&amp;Push</source>
<translation>推送(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&amp;ll</source>
<translation>拉取(&amp;L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&amp;Fetch</source>
<translation>取出(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>编辑全局.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>编辑.git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>编辑.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&amp;Settings...</source>
<translation>设置(&amp;S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&amp;Jump...</source>
<translation>跳转(&amp;J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&amp;out...</source>
<translation>检出(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>删除分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>应用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>丢弃</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>仓库面板</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&amp;Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &amp;HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>删除远程分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&amp;About</source>
<translation>关于Guitar(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>推送所有标签</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>设置用户信息</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&amp;Log</source>
<translation>日志(&amp;L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">未命名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>缺省</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>树形图</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>未提交的更改</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">确定要从书签中删除仓库吗?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(该文件未被删除。)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">打开仓库く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">没有这样的文件夹。</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">不是有效的仓库</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">提交消息不能为空。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">仓库属性</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&amp;Add new group</source>
<translation>添加新组(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&amp;Delete group</source>
<translation>删除组(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&amp;Rename group</source>
<translation>重命名组(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新建组</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &amp;terminal</source>
<translation>打开终端(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&amp;t</source>
<translation>打开命令提示符(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&amp;Open</source>
<translation>打开く(&amp;O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &amp;folder</source>
<translation>打开文件夹(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&amp;Remove</source>
<translation>删除(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>复制提交ID(7个字母)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>复制提交ID(全部)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">编辑注释...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>重新设置基线</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>浏览</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>重置HEAD</translation>
+ <translation type="vanished">重置HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>历史</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>没有这样的提交</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>认证失败</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>放弃更改</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">提交失败</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">远程仓库未注册。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">目前的分支「%1」没有上游分支。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">请尝试--set-upstream</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">连接被拒绝。</translation>
</message>
<message>
<source>&amp;Property</source>
<translation type="vanished">属性(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>检出/分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>编辑消息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>合并</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>择优拣选</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>不跟踪</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>作者及版本修订信息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>删除所选文件。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>重置</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">重置文件</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>是否确实要将该提交重新设置为基线?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">没有选择仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">确定要运行以下命令吗??</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">放弃所有文件更改</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">选择「%1」命令</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同名的文件已存在</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同名的文件夹已存在</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">文件夹无效</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">此文件夹不存在。是否要创建?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">此URL是有效的仓库</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">无法访问此URL</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">远程仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">未找到或尚未读取到提交</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">无法删除分支 : &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>合并</translation>
+ <translation type="vanished">合并</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>目前的分支 :</translation>
+ <translation type="vanished">目前的分支 :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>OK</source>
+ <translation type="vanished">确定</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="vanished">取消</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">合并</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation>确定</translation>
+ <translation type="unfinished">确定</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>另存为...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>另存为</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>另存为...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>另存为</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>对象浏览器</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>检查</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>类型</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>对象检查</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>push --set-upstream</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>分支</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">分支</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">取消</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation>参考日志</translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>命令</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">注释</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>浏览器</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>复制URL</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>仓库属性</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>本地目录 :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>远程URL</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>添加</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>编辑</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>删除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&amp;Remote menu</source>
<translation>远程菜单(&amp;R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>确认删除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote &apos;%1&apos; from the repository &apos;%2&apos; ?</source>
<translation>确定要从仓库「%2」中删除远程「%1」吗?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>从GitHub搜索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>搜索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>所有者</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>范围</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>描述</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>选择git命令</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&amp;Browse...</source>
<translation>浏览(&amp;B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the &apos;%1&apos; command you want to use.</source>
<translation>请选择想用的&apos;%1&apos; 命令。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 命令 (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>可执行文件 (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 命令</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>选择GPG密钥</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>电子邮件</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>全局用户设置</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>跳过</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>设置GPG签名</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>选择</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>设置远程URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>当前URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&amp;Test</source>
<translation>测试(&amp;T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>设置用户</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>从Gravatar获取图标</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>行为</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>默认工作文件夹</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>浏览...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>打开仓库时自动获取</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer&apos;s icon from gravatar.com</source>
<translation>从gravatar.com获取图标</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>要获取的最大提交信息数</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期监视远程更改</translation>
+ <translation type="vanished">定期监视远程更改</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>间隔</translation>
+ <translation type="vanished">间隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG签名策略</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>禁用</translation>
+ <translation type="vanished">禁用</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation>示例</translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation>注意</translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>常规</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>选择语言...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>选择主题...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>记住并恢复窗口位置</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>启用高清屏幕缩放</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>主题</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
<source>English</source>
- <translation>英语</translation>
+ <translation type="vanished">英语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日语</translation>
+ <translation type="vanished">日语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation>俄语</translation>
+ <translation type="vanished">俄语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>标准</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>暗</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>选择语言</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>选择主题</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(该设置将在下次运行时生效)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>网络</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>代理服务器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>无代理</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自动检测</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手动</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>程序</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git命令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>浏览...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>File命令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPG命令(选项)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished">关闭(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>欢迎来到Guitar向导</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>助手工具</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation>git</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation>文件</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>全局用户信息</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation>git config --global user.name</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation>git config --global user.email</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>从Gravatar获取图标</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>默认工作文件夹</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>文件夹</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitar已就绪!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>用户</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source>&lt;&lt; Prev</source>
<translation>&lt;&lt; 上一步</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next &gt;&gt;</source>
<translation>下一步 &gt;&gt;</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>结束</translation>
</message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_zh-TW.qm b/src/resources/translations/Guitar_zh-TW.qm
index 89ac819..e923cd7 100644
Binary files a/src/resources/translations/Guitar_zh-TW.qm and b/src/resources/translations/Guitar_zh-TW.qm differ
diff --git a/src/resources/translations/Guitar_zh-TW.ts b/src/resources/translations/Guitar_zh-TW.ts
index de1f2d2..69b0f49 100644
--- a/src/resources/translations/Guitar_zh-TW.ts
+++ b/src/resources/translations/Guitar_zh-TW.ts
@@ -1,2751 +1,2994 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source>&lt;a href=&quot;https://github.com/soramimi/Guitar&quot;&gt;https://github.com/soramimi/Guitar&lt;/a&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 關於</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>未知主機</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>您想要繼續連接嗎?(是/否)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>繼續</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>此URL是一個有效的儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>無法存取此URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>遠端儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&amp;Property</source>
<translation>內容(&amp;P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>選擇 %1 指令</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>放棄所有檔案更動</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>此資料夾不是一個有效的Git儲存庫。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>是否要將其初始化為git儲存庫?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>初始化儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>未選擇儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>儲存庫內容</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>不是有效的git儲存庫。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>打開儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>沒有此資料夾</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>是否將其從書籤中刪除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>確定刪除</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>確定要將此儲存庫從書籤中刪除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(檔案將不會被刪除)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>已有相同名稱的檔案存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>已有相同名稱的資料夾存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>無效的資料夾</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>此資料夾並不存在。是否建立?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>提交訊息不能為空白。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>提交失敗</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>連線被拒。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>遠端儲存庫尚未被註冊。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>目前的分支「%1」沒有上游分支。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>請嘗試使用 push --set-upstream </translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch &apos;%1&apos;</source>
<translation>無法刪除分支「%1」</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">無法刪除分支: &apos;%1&apos;</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>您確定要執行以下指令嗎?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>重置文件</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>未命名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation>網址</translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差異</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation>作者與修訂版本訊息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>資訊</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation>單選按鈕</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">擇優挑選</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished">確定</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished">提交</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">日期</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">作者</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">訊息</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&amp;Test</source>
<translation>測試(&amp;T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>打開現有的本地資料夾...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>搜尋</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>簽出至</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>打開現有的資料夾</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>從GitHub複製</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG簽名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>提交瀏覽器</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>提交</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>提交內容</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG簽名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>父層ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>檔案...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>瀏覽器</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source>&lt;Unknown&gt;</source>
<translation>&lt;未知的&gt;</translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>提交線圖</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>歷史</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation>wincred</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation>winstore</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>無</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>其他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>簽名政策</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>設定commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>建立儲存庫</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>路徑</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>書籤</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>測試</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>已存在有效的儲存庫。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定的路徑不是資料夾。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>遠端名稱無效。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>目標路徑</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>刪除分支</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&amp;All branches</source>
<translation>所有分支(&amp;A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>刪除遠端分支</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>刪除標籤</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>全部檢查</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>初始化儲存庫</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>資料夾:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>不是有效的git儲存庫。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>您想要將其初始化為git儲存庫嗎?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>是,請初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>否,不要初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>請選擇選項</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>下一步...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>編輯Git忽略檔案</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation>單選按鈕</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>編輯文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>遠端編輯</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&amp;Test</source>
<translation>測試(&amp;T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>編輯標籤</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>新增...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>檔案歷史紀錄</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>檔案內容</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&amp;Close</source>
<translation>關閉(&amp;C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished">確定</translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>編輯標籤</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>標籤</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">分支與標籤</translation>
</message>
<message>
<source>&amp;Filter</source>
<translation type="vanished">篩選器(&amp;F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">尋找</translation>
</message>
<message>
<source>&amp;Checkout</source>
<translation type="vanished">簽出(&amp;C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>分支,標籤,提交ID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名稱</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished">英文</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">日語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished">俄文</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation>Guitar</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>提取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>拉取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>終端機</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>檔案總管</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>分支名稱</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>離線</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>在线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>取消暫存變更</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全選</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>暫存變更</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&amp;File</source>
<translation>檔案(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&amp;View</source>
<translation>檢視(&amp;V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&amp;Edit</source>
<translation>編輯(&amp;E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">需要注意的指令</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>編輯標籤...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>編輯標籤</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>建立儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>推送至上游</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>停止處理</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&amp;xit</source>
<translation>離開(&amp;X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>內容...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>設定GPG簽名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&amp;Help</source>
<translation>說明(&amp;H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&amp;Window</source>
<translation>視窗(&amp;W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&amp;Repository</source>
<translation>儲存庫(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>擱置</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&amp;mote</source>
<translation>遠端(&amp;M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&amp;Destructive</source>
<translation>注意(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>日誌</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&amp;Open existing working copy...</source>
<translation>打開所有工作副本(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>新增所有工作副本</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&amp;Commit</source>
<translation>提交(&amp;C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&amp;Push</source>
<translation>推送(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation>測試</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&amp;ll</source>
<translation>拉取(&amp;L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&amp;Fetch</source>
<translation>提取(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>編輯全域.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>編輯.git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>編輯.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&amp;Settings...</source>
<translation>設定(&amp;S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&amp;Jump...</source>
<translation>移至(&amp;J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&amp;out...</source>
<translation>簽出(&amp;O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>刪除分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>套用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>丟棄</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>儲存庫面板</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&amp;Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &amp;HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>刪除遠端分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&amp;About</source>
<translation>關於Guitar(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>推送所有標籤</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>設定使用者訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&amp;Log</source>
<translation>日誌(&amp;L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">未命名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>預設</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>線圖</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>未提交的變更</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">確定將此儲存庫從書籤中刪除嗎?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(此文件將不會被刪除)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">開啟儲存庫</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">沒有此資料夾。</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">不是有效的儲存庫</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">提交訊息不能為空白。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">儲存庫內容</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&amp;Add new group</source>
<translation>新增群組(&amp;A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&amp;Delete group</source>
<translation>刪除群組(&amp;D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&amp;Rename group</source>
<translation>重新命名群組(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新群組</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &amp;terminal</source>
<translation>開啟終端機(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&amp;t</source>
<translation>開啟命令提示字元(&amp;T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&amp;Open</source>
<translation>開啟(&amp;O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &amp;folder</source>
<translation>打開資料夾(&amp;F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&amp;Remove</source>
<translation>刪除(&amp;R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>複製提交ID(7個字母)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>複製提交ID(全部)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">編輯提交訊息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>Rebase</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>瀏覽</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>重置HEAD</translation>
+ <translation type="vanished">重置HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>歷史紀錄</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>沒有這樣的提交</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>認證失敗</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>放棄變更</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">提交失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">遠端儲存庫尚未被註冊。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">目前的分支「%1」沒有上游分支。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">請嘗試使用 push --set-upstream</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">連線被拒絕</translation>
</message>
<message>
<source>&amp;Property</source>
<translation type="vanished">內容(&amp;P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>簽出/分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>編輯訊息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>合併</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>擇優挑選</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>不追蹤</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>作者及版本修訂訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>刪除選擇的檔案。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>重置</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">重置檔案</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation></translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">沒有選擇儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">確定要執行以下指令嗎?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">放棄所有變更</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">選擇「%1」指令</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">已有相同檔案名稱</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">已有相同的資料夾名稱</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">資料夾無效</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">此資料夾不存在,是否要建立?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">此URL是有效的儲存庫</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">無法存取此URL</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">遠端儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">未找到或尚未讀取到此提交</translation>
</message>
<message>
<source>Failed to delete the branch &apos;%1&apos;
</source>
<translation type="vanished">無法刪除分支:&apos;%1&apos;</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>合併</translation>
+ <translation type="vanished">合併</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>目前分支:</translation>
+ <translation type="vanished">目前分支:</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>OK</source>
+ <translation type="vanished">確定</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="vanished">取消</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">合併</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation>確定</translation>
+ <translation type="unfinished">確定</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>另存為...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>另存為</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>另存為...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>另存為</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>物件瀏覽器</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>檢查</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>類型</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>物件檢查</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>push --set-upstream</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>分支</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">分支</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">取消</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>指令</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">備註</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>瀏覽器</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>複製網址</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>儲存庫內容</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>本地資料夾 :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>遠端網址</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&amp;Remote menu</source>
<translation>遠端選單(&amp;R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>確定移除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote &apos;%1&apos; from the repository &apos;%2&apos; ?</source>
<translation>確定要從儲存庫「%2」中移除遠端「%1」嗎?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>從GitHub搜尋</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>搜尋</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>擁有者</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>範圍</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>描述</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>選擇git指令</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&amp;Browse...</source>
<translation>瀏覽(&amp;B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the &apos;%1&apos; command you want to use.</source>
<translation>請選擇想使用的&apos;%1&apos; 指令。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 指令 (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>執行檔 (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 指令</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>選擇GPG金鑰</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>全域使用者設定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>略過</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>設定GPG簽名</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>選擇</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>設定遠端網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>目前網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation>網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&amp;Test</source>
<translation>測試(&amp;T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>設定使用者</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>行為</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>預設工作資料夾</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>瀏覽...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>開啟儲存庫時自動fetch</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer&apos;s icon from gravatar.com</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>最大獲取的提交數量</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期檢查遠端的變更</translation>
+ <translation type="vanished">定期檢查遠端的變更</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>間隔</translation>
+ <translation type="vanished">間隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG簽名政策</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>停用</translation>
+ <translation type="vanished">停用</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation>範例</translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation>正在施工</translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>一般設定</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>語言</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>選擇語言...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>選擇主題...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>記住並恢復視窗位置</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>啟用高解析度螢幕縮放</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>主題</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
<source>English</source>
- <translation>英文</translation>
+ <translation type="vanished">英文</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日語</translation>
+ <translation type="vanished">日語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation>俄文</translation>
+ <translation type="vanished">俄文</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>標準</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>暗</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>選擇語言</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>選擇主題</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(此設定必須下次執行時才會套用)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>網路</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>代理伺服器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>無代理伺服器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自動偵測</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手動</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>程式</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git指令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>瀏覽...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>檔案總管指令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPG指令(可選)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&amp;Close</source>
+ <translation type="unfinished">關閉(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>歡迎使用Guitar設定精靈</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>助手工具</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation>git</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation>檔案</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>全域使用者訊息</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation>git config --global user.name</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation>git config --global user.email</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>預設工作資料夾</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>資料夾</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitar已就緒!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>使用者</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source>&lt;&lt; Prev</source>
<translation>&lt;&lt; 上一步</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next &gt;&gt;</source>
<translation>下一步 &gt;&gt;</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>完成</translation>
</message>
</context>
</TS>
diff --git a/src/texteditor/AbstractCharacterBasedApplication.cpp b/src/texteditor/AbstractCharacterBasedApplication.cpp
index b7302d6..7264900 100644
--- a/src/texteditor/AbstractCharacterBasedApplication.cpp
+++ b/src/texteditor/AbstractCharacterBasedApplication.cpp
@@ -1,2607 +1,2612 @@
#include <memory>
#include <memory>
#include "AbstractCharacterBasedApplication.h"
#include "UnicodeWidth.h"
#include "unicode.h"
#include <QApplication>
#include <QClipboard>
#include <QDebug>
#include <QFile>
#include <QTextCodec>
#include <memory>
using WriteMode = AbstractCharacterBasedApplication::WriteMode;
using FormattedLine = AbstractCharacterBasedApplication::FormattedLine;
class EsccapeSequence {
private:
int offset = 0;
unsigned char data[100];
int color_fg = -1;
int color_bg = -1;
public:
bool isActive() const
{
return offset > 0;
}
void write(char c)
{
if (c == 0x1b) {
data[0] = c;
offset = 1;
return;
}
data[offset] = c;
if (offset > 0) {
if (c == 'm') {
if (data[1] == '[' && isdigit(data[2]) && isdigit(data[3])) {
data[offset] = 0;
if (data[2] == '3') {
color_fg = atoi((char const *)data + 3);
if (color_fg == 9) {
color_fg = -1;
}
}
if (data[2] == '4') {
color_bg = atoi((char const *)data + 3);
if (color_bg == 9) {
color_bg = -1;
}
}
}
offset = 0;
return;
}
if (offset + 1 < (int)sizeof(data)) {
offset++;
}
}
}
int fg_color_code() const
{
return color_fg == 9 ? -1 : color_fg;
}
int bg_color_code() const
{
return color_bg == 9 ? -1 : color_bg;
}
};
struct AbstractCharacterBasedApplication::Private {
bool is_changed = false;
bool is_quit_enabled = false;
bool is_open_enabled = false;
bool is_save_enabled = false;
bool is_toggle_selection_anchor_enabled = true;
bool is_read_only = false;
bool is_terminal_mode = false;
bool is_cursor_visible = true;
State state = State::Normal;
int header_line = 1;
int footer_line = 1;
int screen_width = 80;
int screen_height = 24;
bool auto_layout = false;
QString recently_used_path;
bool show_line_number = true;
int left_margin = AbstractCharacterBasedApplication::LEFT_MARGIN;
QString dialog_title;
QString dialog_value;
std::vector<Character> screen;
std::vector<uint8_t> line_flags;
int parsed_row_index = -1;
int parsed_col_index = -1;
bool parsed_for_edit = false;
QByteArray parsed_line;
std::vector<AbstractCharacterBasedApplication::Char> prepared_current_line;
QList<Document::CharAttr_> syntax_table;
bool dialog_mode = false;
DialogHandler dialog_handler;
bool is_painting_suppressed = false;
int valid_line_index = -1;
int line_margin = 3;
WriteMode write_mode = WriteMode::Insert;
QTextCodec *text_codec = nullptr;
Qt::KeyboardModifiers keyboard_modifiers = Qt::KeyboardModifier::NoModifier;
bool ctrl_modifier = false;
bool shift_modifier = false;
EsccapeSequence escape_sequence;
bool cursor_moved_by_mouse = false;
};
AbstractCharacterBasedApplication::AbstractCharacterBasedApplication()
: m(new Private)
{
}
AbstractCharacterBasedApplication::~AbstractCharacterBasedApplication()
{
delete m;
}
void AbstractCharacterBasedApplication::setModifierKeys(Qt::KeyboardModifiers keymod)
{
m->keyboard_modifiers = keymod;
m->ctrl_modifier = m->keyboard_modifiers & Qt::ControlModifier;
m->shift_modifier = m->keyboard_modifiers & Qt::ShiftModifier;
}
void AbstractCharacterBasedApplication::clearShiftModifier()
{
m->shift_modifier = false;
}
bool AbstractCharacterBasedApplication::isControlModifierPressed() const
{
return m->ctrl_modifier;
}
bool AbstractCharacterBasedApplication::isShiftModifierPressed() const
{
return m->shift_modifier;
}
void AbstractCharacterBasedApplication::setTextCodec(QTextCodec *codec)
{
m->text_codec = codec;
clearParsedLine();
invalidateArea();
makeBuffer();
}
void AbstractCharacterBasedApplication::setAutoLayout(bool f)
{
m->auto_layout = f;
layoutEditor();
}
void AbstractCharacterBasedApplication::showHeader(bool f)
{
m->header_line = f ? 1 : 0;
layoutEditor();
}
void AbstractCharacterBasedApplication::showFooter(bool f)
{
m->footer_line = f ? 1 : 0;
layoutEditor();
}
void AbstractCharacterBasedApplication::showLineNumber(bool show, int left_margin)
{
m->show_line_number = show;
m->left_margin = left_margin;
}
void AbstractCharacterBasedApplication::setCursorVisible(bool show)
{
m->is_cursor_visible = show;
}
bool AbstractCharacterBasedApplication::isCursorVisible()
{
return m->is_cursor_visible;
}
void AbstractCharacterBasedApplication::retrieveLastText(std::vector<char> *out, int maxlen) const
{
const_cast<AbstractCharacterBasedApplication *>(this)->document()->retrieveLastText(out, maxlen);
}
bool AbstractCharacterBasedApplication::isChanged() const
{
return m->is_changed;
}
void AbstractCharacterBasedApplication::setChanged(bool f)
{
m->is_changed = f;
}
int AbstractCharacterBasedApplication::leftMargin_() const
{
return m->left_margin;
}
void AbstractCharacterBasedApplication::setRecentlyUsedPath(QString const &path)
{
m->recently_used_path = path;
}
QString AbstractCharacterBasedApplication::recentlyUsedPath()
{
return m->recently_used_path;
}
std::vector<AbstractCharacterBasedApplication::Character> *AbstractCharacterBasedApplication::screen()
{
return &m->screen;
}
const std::vector<AbstractCharacterBasedApplication::Character> *AbstractCharacterBasedApplication::screen() const
{
return &m->screen;
}
std::vector<uint8_t> *AbstractCharacterBasedApplication::line_flags()
{
return &m->line_flags;
}
void AbstractCharacterBasedApplication::makeBuffer()
{
int w = screenWidth();
int h = screenHeight();
int size = w * h;
m->screen.resize(size);
std::fill(m->screen.begin(), m->screen.end(), Character());
m->line_flags.resize(h);
}
void AbstractCharacterBasedApplication::layoutEditor()
{
makeBuffer();
editor_cx->viewport_org_x = leftMargin_();
editor_cx->viewport_org_y = m->header_line;
editor_cx->viewport_width = screenWidth() - cx()->viewport_org_x;
editor_cx->viewport_height = screenHeight() - (m->header_line + m->footer_line);
}
void AbstractCharacterBasedApplication::initEditor()
{
editor_cx = std::make_shared<TextEditorContext>();
layoutEditor();
}
bool AbstractCharacterBasedApplication::isLineNumberVisible() const
{
return m->show_line_number;
}
int AbstractCharacterBasedApplication::charWidth(uint32_t c)
{
return UnicodeWidth::width(UnicodeWidth::type(c));
}
QList<FormattedLine> AbstractCharacterBasedApplication::formatLine(Document::Line const &line, int tab_span, int anchor_a, int anchor_b) const
{
QByteArray ba;
if (m->text_codec) {
ba = m->text_codec->toUnicode(line.text).toUtf8();
} else {
ba = line.text;
}
std::vector<ushort> vec;
vec.reserve(ba.size() + 100);
size_t len = ba.size();
QList<FormattedLine> res;
int col = 0;
int col_start = col;
bool flag_a = false;
bool flag_b = false;
auto Color = [&](size_t offset, size_t *next_offset){
int i = findSyntax(&m->syntax_table, offset);
if (i < m->syntax_table.size() && m->syntax_table[i].offset <= offset) {
if (next_offset) {
if (i + 1 < m->syntax_table.size()) {
*next_offset = m->syntax_table[i + 1].offset;
} else {
*next_offset = -1;
}
}
static int color[] = {
0x000000,
0x0000ff,
0x00ff00,
0x00ffff,
0xff0000,
0xff00ff,
0xffff00,
0xffffff,
};
i = m->syntax_table[i].color;
if (i >= 0 && i < 8) {
return color[i];
}
}
if (next_offset) {
*next_offset = -1;
}
return 0;
};
auto Flush = [&](size_t offset, size_t *next_offset){
if (!vec.empty()) {
int atts = 0;
atts |= Color(offset, next_offset);
if (anchor_a >= 0 || anchor_b >= 0) {
if ((anchor_a < 0 || col_start >= anchor_a) && (anchor_b == -1 || col_start < anchor_b)) {
atts |= FormattedLine::Selected;
}
}
ushort const *left = &vec[0];
ushort const *right = left + vec.size();
while (left < right && (right[-1] == '\r' || right[-1] == '\n')) right--;
if (left < right) {
res.push_back(FormattedLine(QString::fromUtf16(left, right - left), atts));
}
vec.clear();
} else {
*next_offset = -1;
}
col_start = col;
};
size_t offset = 0;
size_t next_offset = -1;
if (len > 0) {
{
size_t o = line.byte_offset;
int i = findSyntax(&m->syntax_table, o);
if (i < m->syntax_table.size() && m->syntax_table[i].offset <= o) {
if (i + 1 < m->syntax_table.size()) {
o = m->syntax_table[i + 1].offset;
if (o != (size_t)-1) {
next_offset = o;
}
}
}
}
utf8 u8(ba.data(), len);
u8.to_utf32([&](uint32_t c){
if (line.byte_offset + u8.offset() == next_offset) {
Flush(line.byte_offset + offset, &next_offset);
offset += u8.offset();
}
if (c == '\t') {
do {
vec.push_back(' ');
col++;
} while (col % tab_span != 0);
} else if (c < ' ') {
// nop
} else {
int cw = charWidth(c);
if (c < 0xffff) {
vec.push_back(c);
} else {
int a = c >> 16;
if (a > 0 && a <= 0x20) {
a--;
int b = c & 0x03ff;
a = (a << 6) | ((c >> 10) & 0x003f);
a |= 0xd800;
b |= 0xdc00;
vec.push_back(a);
vec.push_back(b);
}
}
col += cw;
}
if ((anchor_a >= 0 || anchor_b >= 0) && anchor_a != anchor_b) {
if (!flag_a && col >= anchor_a) {
Flush(line.byte_offset + offset, &next_offset);
flag_a = true;
}
if (!flag_b && col >= anchor_b) {
Flush(line.byte_offset + offset, &next_offset);
flag_b = true;
}
}
return true;
});
}
Flush(line.byte_offset + offset, &next_offset);
return res;
}
QByteArray AbstractCharacterBasedApplication::fetchLine(int row) const
{
QByteArray line;
int lines = documentLines();
if (row >= 0 && row < lines) {
line = cx()->engine->document.lines[row].text;
}
return line;
}
void AbstractCharacterBasedApplication::fetchCurrentLine() const
{
int row = cx()->current_row;
m->parsed_line = fetchLine(row);
m->parsed_row_index = row;
}
void AbstractCharacterBasedApplication::clearParsedLine()
{
m->parsed_row_index = -1;
m->parsed_for_edit = false;
m->parsed_line.clear();
}
int AbstractCharacterBasedApplication::cursorX() const
{
return cx()->current_col - cx()->scroll_col_pos;
}
int AbstractCharacterBasedApplication::cursorY() const
{
return cx()->current_row - cx()->scroll_row_pos;
}
int AbstractCharacterBasedApplication::screenWidth() const
{
return m->screen_width;
}
int AbstractCharacterBasedApplication::screenHeight() const
{
return m->screen_height;
}
void AbstractCharacterBasedApplication::setScreenSize(int w, int h, bool update_layout)
{
m->screen_width = w;
m->screen_height = h;
if (update_layout) {
layoutEditor();
}
}
bool AbstractCharacterBasedApplication::isPaintingSuppressed() const
{
return m->is_painting_suppressed;
}
void AbstractCharacterBasedApplication::setPaintingSuppressed(bool f)
{
m->is_painting_suppressed = f;
}
void AbstractCharacterBasedApplication::commitLine(std::vector<Char> const &vec)
{
if (isReadOnly()) return;
QByteArray ba;
if (!vec.empty()){
std::vector<uint32_t> v;
for (Char const &c : vec) {
v.push_back(c.unicode);
}
utf32 u32(&v[0], v.size());
u32.to_utf8([&](char c, int pos){
(void)pos;
ba.push_back(c);
return true;
});
}
if (m->parsed_row_index == 0 && engine()->document.lines.empty()) {
Document::Line newline;
engine()->document.lines.push_back(newline);
}
Document::Line *line = &engine()->document.lines[m->parsed_row_index];
if (m->parsed_row_index == 0) {
line->byte_offset = 0;
line->line_number = (line->type == Document::Line::Unknown) ? 0 : 1;
}
line->text = ba;
if (m->valid_line_index > m->parsed_row_index) {
m->valid_line_index = m->parsed_row_index;
}
int y = m->parsed_row_index - cx()->scroll_row_pos + cx()->viewport_org_y;
if (y >= 0 && y < (int)m->line_flags.size()) {
m->line_flags[y] |= LineChanged;
}
}
void AbstractCharacterBasedApplication::parseLine(std::vector<Char> *vec, int increase_hint, bool force)
{
if (force) {
clearParsedLine();
}
if (force || !m->parsed_for_edit) {
fetchCurrentLine();
m->parsed_col_index = internalParseLine(m->parsed_line, vec ? vec : &m->prepared_current_line, increase_hint);
m->parsed_for_edit = true;
} else {
if (vec) {
*vec = m->prepared_current_line;
}
}
}
int AbstractCharacterBasedApplication::parseLine2(int row, std::vector<Char> *vec) const
{
QByteArray line = fetchLine(row);
int index = internalParseLine(line, vec, 0);
return index;
}
QByteArray AbstractCharacterBasedApplication::parsedLine() const
{
return m->parsed_line;
}
bool AbstractCharacterBasedApplication::isCurrentLineWritable() const
{
if (isReadOnly()) return false;
int row = cx()->current_row;
if (row >= 0 && row < cx()->engine->document.lines.size()) {
if (cx()->engine->document.lines[row].type != Document::Line::Unknown) {
return true;
}
}
return false;
}
int AbstractCharacterBasedApplication::editorViewportWidth() const
{
return cx()->viewport_width;
}
int AbstractCharacterBasedApplication::editorViewportHeight() const
{
return cx()->viewport_height;
}
int AbstractCharacterBasedApplication::print(int x, int y, QString const &text, const AbstractCharacterBasedApplication::Option &opt)
{
CharAttr attr = opt.char_attr;
if (opt.char_attr.flags & CharAttr::Selected) {
attr.index = CharAttr::Invert;
}
if (opt.char_attr.flags & CharAttr::CurrentLine) {
attr.index = CharAttr::Hilite;
}
const int screen_w = screenWidth();
const int screen_h = screenHeight();
int x_start = 0;
int y_start = 0;
int x_limit = screen_w;
int y_limit = screen_h;
if (!opt.clip.isNull()) {
x_start = opt.clip.x();
y_start = opt.clip.y();
x_limit = x_start + opt.clip.width();
y_limit = y_start + opt.clip.height();
}
if (y >= y_start && y < y_limit) {
bool changed = false;
int x2 = x;
int y2 = y;
if (text.isEmpty()) {
changed = true; // set changed flag if text is empty
} else {
for (int i = 0; i < text.size(); i++) {
ushort c = text.utf16()[i];
if (c < ' ' || c == 0x7f) continue;
int cw = charWidth(c);
if (x2 + cw > x_limit) {
break;
}
for (int j = 0; j < cw; j++) {
if (x2 >= x_start && x2 < screen_w) {
int o = y2 * screen_w + x2;
CharAttr a;
if (j == 0) {
a = attr;
} else {
c = -1;
}
if (c != m->screen[o].c || a != m->screen[o].a) {
m->screen[o].c = c;
m->screen[o].a = a;
changed = true;
}
}
x2++;
}
}
}
if (changed) {
m->line_flags[y] |= LineChanged;
}
x = x2;
}
return x;
}
void AbstractCharacterBasedApplication::initEngine(std::shared_ptr<TextEditorContext> const &cx)
{
cx->engine = std::make_shared<TextEditorEngine>();
}
TextEditorContext *AbstractCharacterBasedApplication::cx()
{
if (dialog_cx) {
if (!dialog_cx->engine) {
initEngine(dialog_cx);
}
return dialog_cx.get();
}
if (!editor_cx->engine) {
initEngine(editor_cx);
}
return editor_cx.get();
}
const TextEditorContext *AbstractCharacterBasedApplication::cx() const
{
return const_cast<AbstractCharacterBasedApplication *>(this)->cx();
}
TextEditorEnginePtr AbstractCharacterBasedApplication::engine()
{
Q_ASSERT(cx()->engine);
return cx()->engine;
}
void AbstractCharacterBasedApplication::setTextEditorEngine(TextEditorEnginePtr const &e)
{
cx()->engine = e;
}
void AbstractCharacterBasedApplication::setDocument(QList<Document::Line> const *source)
{
document()->lines = *source;
}
void AbstractCharacterBasedApplication::openFile(QString const &path)
{
document()->lines.clear();
QFile file(path);
if (file.open(QFile::ReadOnly)) {
size_t offset = 0;
QString line;
unsigned int linenum = 0;
while (!file.atEnd()) {
linenum++;
Document::Line line(file.readLine());
line.byte_offset = offset;
line.type = Document::Line::Normal;
line.line_number = linenum;
document()->lines.push_back(line);
offset += line.text.size();
}
int n = line.size();
if (n > 0) {
ushort const *p = line.utf16();
ushort c = p[n - 1];
if (c == '\r' || c == '\n') {
document()->lines.push_back(Document::Line(QByteArray()));
}
}
m->valid_line_index = (int)document()->lines.size();
setRecentlyUsedPath(path);
}
scrollToTop();
}
void AbstractCharacterBasedApplication::saveFile(QString const &path)
{
QFile file(path);
if (file.open(QFile::WriteOnly)) {
for (Document::Line const &line : document()->lines) {
file.write(line.text);
}
}
}
void AbstractCharacterBasedApplication::pressEnter()
{
deleteIfSelected();
if (isDialogMode()) {
closeDialog(true);
} else {
writeNewLine();
}
}
void AbstractCharacterBasedApplication::pressEscape()
{
if (isTerminalMode()) {
m->escape_sequence.write(0x1b);
return;
}
if (isDialogMode()) {
closeDialog(false);
return;
}
deselect();
updateVisibility(false, false, false);
}
AbstractCharacterBasedApplication::State AbstractCharacterBasedApplication::state() const
{
return m->state;
}
Document *AbstractCharacterBasedApplication::document()
{
return &engine()->document;
}
int AbstractCharacterBasedApplication::documentLines() const
{
return const_cast<AbstractCharacterBasedApplication *>(this)->document()->lines.size();
}
bool AbstractCharacterBasedApplication::isSingleLineMode() const
{
return cx()->single_line;
}
void AbstractCharacterBasedApplication::setLineMargin(int n)
{
m->line_margin = n;
}
void AbstractCharacterBasedApplication::ensureCurrentLineVisible()
{
int margin = (cx()->viewport_height >= 6 && !isSingleLineMode()) ? m->line_margin : 0;
int pos = cx()->scroll_row_pos;
int top = cx()->current_row - margin;
int bottom = cx()->current_row + 1 - editorViewportHeight() + margin;
if (pos > top) pos = top;
if (pos < bottom) pos = bottom;
if (pos < 0) pos = 0;
if (cx()->scroll_row_pos != pos) {
cx()->scroll_row_pos = pos;
invalidateArea();
}
}
int AbstractCharacterBasedApplication::decideColumnScrollPos() const
{
int x = cx()->current_col;
int w = editorViewportWidth() - RIGHT_MARGIN;
if (w < 0) w = 0;
return x > w ? (cx()->current_col - w) : 0;
}
int AbstractCharacterBasedApplication::calcVisualWidth(const Document::Line &line) const
{
QList<FormattedLine> lines = formatLine(line, cx()->tab_span);
int x = 0;
for (FormattedLine const &line : lines) {
if (line.text.isEmpty()) continue;
ushort const *ptr = line.text.utf16();
ushort const *end = ptr + line.text.size();
while (1) {
int c = -1;
if (ptr < end) {
c = *ptr;
ptr++;
}
if (c == -1 || c == '\r' || c == '\n') {
break;
}
if (c == '\t') {
x += cx()->tab_span;
x -= x % cx()->tab_span;
} else {
x += charWidth(c);
}
}
}
return x;
}
void AbstractCharacterBasedApplication::clearRect(int x, int y, int w, int h)
{
int scr_w = screenWidth();
int scr_h = screenHeight();
int y0 = y;
int y1 = y + h;
if (y0 < 0) y0 = 0;
if (y1 > scr_h) y1 = scr_h;
int x0 = x;
int x1 = x + w;
if (x0 < 0) x0 = 0;
if (x1 > scr_w) x1 = scr_w;
for (int y = y0; y < y1; y++) {
for (int x = x0; x < x1; x++) {
int o = y * scr_w + x;
m->screen[o] = Character();
}
}
}
int AbstractCharacterBasedApplication::calcIndexToColumn(const std::vector<Char> &vec, int index) const
{
int col = 0;
for (int i = 0; i < index; i++) {
uint32_t c = vec.at(i).unicode;
if (c == '\t') {
col += cx()->tab_span;
col -= col % cx()->tab_span;
} else {
col += charWidth(c);
}
}
return col;
}
void AbstractCharacterBasedApplication::savePos()
{
TextEditorContext *p = editor_cx.get();
if (p) {
p->saved_row = p->current_row;
p->saved_col = p->current_col;
p->saved_col_hint = p->current_col_hint;
}
}
void AbstractCharacterBasedApplication::restorePos()
{
TextEditorContext *p = editor_cx.get();
if (p) {
p->current_row = p->saved_row;
p->current_col = p->saved_col;
p->current_col_hint = p->saved_col_hint;
}
}
void AbstractCharacterBasedApplication::setCursorRow(int row, bool auto_scroll, bool by_mouse)
{
if (cx()->current_row == row) return;
if (isShiftModifierPressed()) {
if (selection_anchor_0.enabled == SelectionAnchor::No) {
setSelectionAnchor(SelectionAnchor::EnabledEasy, true, auto_scroll);
selection_anchor_1 = selection_anchor_0;
}
} else if (selection_anchor_0.enabled == SelectionAnchor::EnabledEasy) {
setSelectionAnchor(SelectionAnchor::No, false, auto_scroll);
}
cx()->current_row = row;
if (selection_anchor_0.enabled != SelectionAnchor::No) {
setSelectionAnchor(selection_anchor_0.enabled, true, auto_scroll);
}
m->cursor_moved_by_mouse = by_mouse;
}
void AbstractCharacterBasedApplication::setCursorCol(int col, bool auto_scroll, bool by_mouse)
{
if (cx()->current_col == col) {
cx()->current_col_hint = col;
return;
}
if (isShiftModifierPressed()) {
if (selection_anchor_0.enabled == SelectionAnchor::No) {
setSelectionAnchor(SelectionAnchor::EnabledEasy, true, auto_scroll);
selection_anchor_1 = selection_anchor_0;
}
} else if (selection_anchor_0.enabled == SelectionAnchor::EnabledEasy) {
setSelectionAnchor(SelectionAnchor::No, false, auto_scroll);
}
cx()->current_col = col;
cx()->current_col_hint = col;
if (selection_anchor_0.enabled != SelectionAnchor::No) {
setSelectionAnchor(selection_anchor_0.enabled, true, auto_scroll);
}
m->cursor_moved_by_mouse = by_mouse;
}
void AbstractCharacterBasedApplication::setCursorPos(int row, int col)
{
setCursorRow(row, false);
setCursorCol(col, false);
}
void AbstractCharacterBasedApplication::setCursorColByIndex(std::vector<Char> const &vec, int col_index)
{
int col = calcIndexToColumn(vec, col_index);
setCursorCol(col);
}
int AbstractCharacterBasedApplication::nextTabStop(int x) const
{
x += cx()->tab_span;
x -= x % cx()->tab_span;
return x;
}
void AbstractCharacterBasedApplication::editSelected(EditOperation op, std::vector<Char> *cutbuffer)
{
if (isReadOnly() && op == EditOperation::Cut) {
op = EditOperation::Copy;
}
SelectionAnchor a = selection_anchor_0;
SelectionAnchor b = selection_anchor_1;
if (!a.enabled) return;
if (!b.enabled) return;
if (a == b) return;
auto UpdateVisibility = [&](){
updateVisibility(false, false, false);
};
if (cutbuffer) {
cutbuffer->clear();
}
std::list<std::vector<Char>> cutlist;
if (a.row > b.row) {
std::swap(a, b);
} else if (a.row == b.row) {
if (a.col > b.col) {
std::swap(a, b);
}
}
int curr_row = cx()->current_row;
int curr_col = cx()->current_col;
cx()->current_row = b.row;
cx()->current_col = b.col;
if (a.row == b.row) {
std::vector<Char> vec1;
parseLine(&vec1, 0, true);
auto begin = vec1.begin() + calcColumnToIndex(a.col);
auto end = vec1.begin() + calcColumnToIndex(b.col);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), begin, end);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec1.erase(begin, end);
commitLine(vec1);
UpdateVisibility();
}
} else {
std::vector<Char> vec1;
parseLine(&vec1, 0, true);
{
auto begin = vec1.begin();
auto end = vec1.begin() + calcColumnToIndex(b.col);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), begin, end);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec1.erase(begin, end);
commitLine(vec1);
UpdateVisibility();
}
}
int n = b.row - a.row;
for (int i = 0; i < n; i++) {
QList<Document::Line> *lines = &cx()->engine->document.lines;
if (cutbuffer && i > 0) {
cx()->current_row = b.row - i;
cx()->current_col = 0;
std::vector<Char> cut;
parseLine(&cut, 0, true);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
lines->erase(lines->begin() + b.row - i);
}
}
cx()->current_row = a.row;
cx()->current_col = a.col;
int index = calcColumnToIndex(a.col);
std::vector<Char> vec2;
parseLine(&vec2, 0, true);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), vec2.begin() + index, vec2.end());
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec2.resize(index);
vec2.insert(vec2.end(), vec1.begin(), vec1.end());
commitLine(vec2);
UpdateVisibility();
}
}
if (cutbuffer) {
size_t size = 0;
for (std::vector<Char> const &v : cutlist) {
size += v.size();
}
cutbuffer->reserve(size);
for (auto it = cutlist.rbegin(); it != cutlist.rend(); it++) {
std::vector<Char> const &v = *it;
cutbuffer->insert(cutbuffer->end(), v.begin(), v.end());
}
}
-
if (op == EditOperation::Cut) {
deselect();
setCursorPos(a.row, a.col);
invalidateArea(a.row - cx()->scroll_row_pos);
} else {
cx()->current_row = curr_row;
cx()->current_col = curr_col;
invalidateArea(curr_row - cx()->scroll_row_pos);
}
clearParsedLine();
UpdateVisibility();
}
void AbstractCharacterBasedApplication::edit_(EditOperation op)
{
- std::vector<Char> u32buf;
- editSelected(op, &u32buf);
- if (u32buf.empty()) return;
+ std::vector<Char> cutbuf;
+ editSelected(op, &cutbuf);
+ if (cutbuf.empty()) return;
+
+ std::vector<uint32_t> u32buf;
+ u32buf.reserve(cutbuf.size());
+ for (Char const &c : cutbuf) {
+ u32buf.push_back(c.unicode);
+ }
std::vector<ushort> u16buf;
u16buf.reserve(1024);
- utf32(&u32buf[0].unicode, u32buf.size()).to_utf16([&](uint16_t c){
+ utf32(u32buf.data(), u32buf.size()).to_utf16([&](uint16_t c){
u16buf.push_back(c);
return true;
});
if (!u16buf.empty()) {
QString s = QString::fromUtf16(&u16buf[0], u16buf.size());
qApp->clipboard()->setText(s);
}
}
bool AbstractCharacterBasedApplication::deleteIfSelected()
{
if (selection_anchor_0.enabled && selection_anchor_1.enabled) {
if (selection_anchor_0 != selection_anchor_1) {
editSelected(EditOperation::Cut, nullptr);
return true;
}
}
return false;
}
void AbstractCharacterBasedApplication::doDelete()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
if (deleteIfSelected()) {
return;
}
parseLine(nullptr, 0, false);
std::vector<Char> *vec = &m->prepared_current_line;
int index = m->parsed_col_index;
int c = -1;
if (index >= 0 && index < (int)vec->size()) {
c = (*vec)[index].unicode;
}
if (c == '\n' || c == '\r' || c == -1) {
if (index == 0) {
m->parsed_row_index--;
}
invalidateAreaBelowTheCurrentLine();
if (isSingleLineMode()) {
// nop
} else {
if (c != -1) {
vec->erase(vec->begin() + index);
if (c == '\r' && index < (int)vec->size() && (*vec)[index].unicode == '\n') {
vec->erase(vec->begin() + index);
}
}
if (vec->empty()) {
clearParsedLine();
if (cx()->current_row + 1 < (int)cx()->engine->document.lines.size()) {
cx()->engine->document.lines.erase(cx()->engine->document.lines.begin() + cx()->current_row);
}
} else {
commitLine(*vec);
setCursorColByIndex(*vec, index);
if (index == (int)vec->size()) {
int nextrow = cx()->current_row + 1;
int lines = documentLines();
if (nextrow < lines) {
Document::Line *ba1 = &cx()->engine->document.lines[cx()->current_row];
Document::Line const &ba2 = cx()->engine->document.lines[nextrow];
ba1->text.append(ba2.text);
cx()->engine->document.lines.erase(cx()->engine->document.lines.begin() + nextrow);
}
}
}
clearParsedLine();
updateVisibility(true, true, true);
}
} else {
vec->erase(vec->begin() + index);
commitLine(*vec);
setCursorColByIndex(*vec, index);
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::doBackspace()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
if (deleteIfSelected()) {
return ;
}
if (cx()->current_row > 0 || cx()->current_col > 0) {
setPaintingSuppressed(true);
moveCursorLeft();
doDelete();
setPaintingSuppressed(false);
updateVisibility(true, true, true);
}
}
bool AbstractCharacterBasedApplication::isDialogMode()
{
return m->dialog_mode;
}
void AbstractCharacterBasedApplication::setDialogOption(QString const &title, QString const &value, DialogHandler const &handler)
{
m->dialog_title = title;
m->dialog_value = value;
m->dialog_handler = handler;
}
void AbstractCharacterBasedApplication::setDialogMode(bool f)
{
if (f) {
if (!dialog_cx) {
int y = screenHeight() - 2;
dialog_cx = std::make_shared<TextEditorContext>();
dialog_cx->engine = std::make_shared<TextEditorEngine>();
dialog_cx->single_line = true;
dialog_cx->viewport_org_x = 0;
dialog_cx->viewport_org_y = y + 1;
dialog_cx->viewport_width = screenWidth();
dialog_cx->viewport_height = 1;
}
dialog_cx->engine->document.lines.push_back(Document::Line(m->dialog_value.toUtf8()));
editor_cx->viewport_height = screenHeight() - m->header_line - 2;
m->dialog_mode = true;
clearParsedLine();
moveCursorEnd();
} else {
dialog_cx.reset();
m->dialog_mode = false;
layoutEditor();
clearParsedLine();
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::execDialog(QString const &dialog_title, QString const &dialog_value, DialogHandler const &handler)
{
setDialogOption(dialog_title, dialog_value, handler);
setDialogMode(true);
}
void AbstractCharacterBasedApplication::closeDialog(bool result)
{
if (isDialogMode()) {
deselect();
QString line;
if (!dialog_cx->engine->document.lines.empty()) {
Document::Line const &l = dialog_cx->engine->document.lines.front();
line = QString::fromUtf8(l.text);
}
setDialogMode(false);
if (m->dialog_handler) {
m->dialog_handler(result, line);
}
return;
}
}
int AbstractCharacterBasedApplication::internalParseLine(QByteArray const &parsed_line, std::vector<Char> *vec, int increase_hint) const
{
vec->clear();
int index = -1;
int col = 0;
int len = parsed_line.size();
if (len > 0) {
vec->reserve(len + increase_hint);
char const *src = parsed_line.data();
utf8 u8(src, len);
while (1) {
int n = 0;
uint32_t c = u8.next();
if (c == 0) {
n = 1;
} else {
if (c == '\t') {
int z = nextTabStop(col);
n = z - col;
} else {
n = charWidth(c);
}
}
if (col <= cx()->current_col && col + n > cx()->current_col) {
index = (int)vec->size();
}
if (c == 0) break;
col += n;
vec->push_back(Char(c, 0));
}
}
return index;
}
int AbstractCharacterBasedApplication::calcColumnToIndex(int column)
{
int index = 0;
if (column > 0) {
fetchCurrentLine();
int col = 0;
int len = m->parsed_line.size();
if (len > 0) {
char const *src = m->parsed_line.data();
utf8 u8(src, len);
while (1) {
uint32_t c = u8.next();
int n = 0;
if (c == '\r' || c == '\n' || c == 0) {
break;
}
if (c == '\t') {
int z = nextTabStop(col);
n = z - col;
} else {
n = charWidth(c);
}
col += n;
index++;
if (col >= column) {
break;
}
}
}
}
return index;
}
void AbstractCharacterBasedApplication::invalidateArea(int top_y)
{
int y0 = cx()->viewport_org_y;
int y1 = cx()->viewport_height + y0;
top_y += y0;
if (y0 < top_y) y0 = top_y;
int n = m->line_flags.size();
if (y0 < 0) y0 = 0;
if (y1 > n) y1 = n;
for (int y = y0; y < y1; y++) {
m->line_flags[y] |= LineChanged;
}
}
void AbstractCharacterBasedApplication::invalidateAreaBelowTheCurrentLine()
{
int y;
y = m->parsed_row_index;
if (m->valid_line_index > y) {
m->valid_line_index = y;
}
y = m->parsed_row_index - cx()->scroll_row_pos;
invalidateArea(y);
}
int AbstractCharacterBasedApplication::scrollBottomLimit() const
{
return documentLines() - editorViewportHeight() / 2;
}
void AbstractCharacterBasedApplication::writeCR()
{
deleteIfSelected();
setCursorCol(0);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorOut()
{
setCursorRow(-1);
}
void AbstractCharacterBasedApplication::moveCursorHome()
{
fetchCurrentLine();
QString line = m->parsed_line;
ushort const *ptr = line.utf16();
ushort const *end = ptr + line.size();
int x = 0;
while (1) {
int c = -1;
if (ptr < end) {
c = *ptr;
ptr++;
}
if (c == ' ') {
x++;
} else if (c == '\t') {
x = nextTabStop(x);
} else {
break;
}
}
if (x == cx()->current_col) {
x = 0;
}
setCursorCol(x);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorEnd()
{
fetchCurrentLine();
QByteArray line = m->parsed_line;
int col = calcVisualWidth(Document::Line(line));
setCursorCol(col);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::scrollUp()
{
if (cx()->scroll_row_pos > 0) {
cx()->scroll_row_pos--;
invalidateArea();
clearParsedLine();
updateVisibility(false, false, true);
}
}
void AbstractCharacterBasedApplication::scrollDown()
{
int limit = scrollBottomLimit();
if (cx()->scroll_row_pos < limit) {
cx()->scroll_row_pos++;
invalidateArea();
clearParsedLine();
updateVisibility(false, false, true);
}
}
void AbstractCharacterBasedApplication::moveCursorUp()
{
if (isSingleLineMode()) {
// nop
} else if (cx()->current_row > 0) {
setCursorRow(cx()->current_row - 1);
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::moveCursorDown()
{
if (isSingleLineMode()) {
// nop
} else if (cx()->current_row + 1 < (int)document()->lines.size()) {
setCursorRow(cx()->current_row + 1);
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::scrollToTop()
{
if (isSingleLineMode()) return;
setCursorRow(0);
setCursorCol(0);
cx()->scroll_row_pos = 0;
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
void AbstractCharacterBasedApplication::moveCursorLeft()
{
if (!isShiftModifierPressed() && selection_anchor_0.enabled && selection_anchor_1.enabled) { // 選択領域があったら
if (selection_anchor_0 != selection_anchor_1) {
SelectionAnchor a = std::min(selection_anchor_0, selection_anchor_1);
deselect();
setCursorRow(a.row);
setCursorCol(a.col);
updateVisibility(true, true, true);
return;
}
}
if (cx()->current_col == 0) {
if (isSingleLineMode()) {
// nop
} else {
if (cx()->current_row > 0) {
setCursorRow(cx()->current_row - 1);
clearParsedLine();
moveCursorEnd();
}
}
return;
}
int col = 0;
int newcol = 0;
int index;
for (index = 0; index < (int)m->prepared_current_line.size(); index++) {
uint32_t c = m->prepared_current_line[index].unicode;
if (c == '\r' || c == '\n') {
break;
}
newcol = col;
if (c == '\t') {
col = nextTabStop(col);
} else {
col += charWidth(c);
}
if (col >= cx()->current_col) {
break;
}
}
m->parsed_col_index = index;
setCursorCol(newcol);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorRight()
{
if (!isShiftModifierPressed() && selection_anchor_0.enabled && selection_anchor_1.enabled) { // 選択領域があったら
if (selection_anchor_0 != selection_anchor_1) {
SelectionAnchor a = std::max(selection_anchor_0, selection_anchor_1);
deselect();
setCursorRow(a.row);
setCursorCol(a.col);
updateVisibility(true, true, true);
return;
}
}
int col = 0;
int i = 0;
while (1) {
int c = -1;
if (i < (int)m->prepared_current_line.size()) {
c = m->prepared_current_line[i].unicode;
}
if (c == '\r' || c == '\n' || c == -1) {
if (!isSingleLineMode()) {
int nextrow = cx()->current_row + 1;
int lines = document()->lines.size();
if (nextrow < lines) {
setCursorPos(nextrow, 0);
clearParsedLine();
updateVisibility(true, true, true);
return;
}
}
break;
}
if (c == '\t') {
col = nextTabStop(col);
} else {
col += charWidth(c);
}
if (col > cx()->current_col) {
break;
}
i++;
}
if (col != cx()->current_col) {
setCursorCol(col);
clearParsedLine();
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::movePageUp()
{
if (!isSingleLineMode()) {
int step = editorViewportHeight();
setCursorRow(cx()->current_row - step);
cx()->scroll_row_pos -= step;
if (cx()->current_row < 0) {
cx()->current_row = 0;
}
if (cx()->scroll_row_pos < 0) {
cx()->scroll_row_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::movePageDown()
{
if (!isSingleLineMode()) {
int limit = documentLines();
if (limit > 0) {
limit--;
int step = editorViewportHeight();
setCursorRow(cx()->current_row + step);
cx()->scroll_row_pos += step;
if (cx()->current_row > limit) {
cx()->current_row = limit;
}
limit = scrollBottomLimit();
if (cx()->scroll_row_pos > limit) {
cx()->scroll_row_pos = limit;
}
} else {
setCursorRow(0);
cx()->scroll_row_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::scrollRight()
{
if (cx()->scroll_col_pos > 0) {
cx()->scroll_col_pos--;
} else {
cx()->scroll_col_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::scrollLeft()
{
cx()->scroll_col_pos++;
invalidateArea();
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::addNewLineToBottom()
{
int row = cx()->engine->document.lines.size();
if (cx()->current_row >= row) {
setCursorPos(row, 0);
cx()->engine->document.lines.push_back(Document::Line(QByteArray()));
}
}
void AbstractCharacterBasedApplication::appendNewLine(std::vector<Char> *vec)
{
if (isSingleLineMode()) return;
vec->emplace_back('\r', 0);
vec->emplace_back('\n', 0);
}
void AbstractCharacterBasedApplication::writeNewLine()
{
if (isReadOnly()) return;
if (isSingleLineMode()) return;
if (!isCurrentLineWritable()) return;
invalidateAreaBelowTheCurrentLine();
std::vector<Char> curr_line;
parseLine(&curr_line, 0, false);
int index = m->parsed_col_index;
if (index < 0) {
addNewLineToBottom();
index = 0;
}
std::vector<Char> next_line;
// split line
next_line.insert(next_line.end(), curr_line.begin() + index, curr_line.end());
// shrink current line
curr_line.resize(index);
// append new line code
appendNewLine(&curr_line);
// next line index
cx()->current_row = m->parsed_row_index + 1;
// commit current line
commitLine(curr_line);
// insert next line
m->parsed_row_index = cx()->current_row;
engine()->document.lines.insert(engine()->document.lines.begin() + m->parsed_row_index, Document::Line(QByteArray()));
// commit next line
commitLine(next_line);
setCursorColByIndex(next_line, 0);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::makeColumnPosList(std::vector<int> *out)
{
out->clear();
std::vector<Char> const *line = &m->prepared_current_line;
int x = 0;
while (1) {
size_t index = out->size();
out->push_back(x);
int n;
int c = -1;
if (index < line->size()) {
c = line->at(index).unicode;
}
if (c == '\r' || c == '\n' || c == -1) {
break;
}
if (c == '\t') {
int z = nextTabStop(x);
n = z - x;
} else {
n = charWidth(c);
}
x += n;
}
}
void AbstractCharacterBasedApplication::updateCursorPos(bool auto_scroll)
{
if (!cx()->engine) {
return;
}
parseLine(&m->prepared_current_line, 0, false);
int index = 0;
int char_span = 0;
int col = cx()->current_col_hint;
{
std::vector<int> pts;
makeColumnPosList(&pts);
if (pts.size() > 1) {
int newcol = pts.back();
int newindex = pts.size() - 1;
for (size_t i = 0; i + 1 < pts.size(); i++) {
int x = pts[i];
if (x <= col && col < pts[i + 1]) {
char_span = pts[i + 1] - pts[i];
newindex = i;
newcol = x;
break;
}
}
index = newindex;
col = newcol;
} else if (!pts.empty()) {
col = pts.back();
} else {
col = 0;
}
}
m->parsed_col_index = index;
cx()->current_col = col;
if (char_span < 1) {
char_span = 1;
}
cx()->current_char_span = char_span;
if (auto_scroll) {
int pos = decideColumnScrollPos();
if (cx()->scroll_col_pos != pos) {
cx()->scroll_col_pos = pos;
invalidateArea();
}
}
}
void AbstractCharacterBasedApplication::printInvertedBar(int x, int y, char const *text, int padchar)
{
int w = screenWidth();
int o = w * y;
for (int i = 0; i < w; i++) {
m->screen[o + i].c = 0;
}
AbstractCharacterBasedApplication::Option opt;
opt.char_attr = CharAttr::Invert;
print(x, y, text, opt);
for (int i = 0; i < w; i++) {
if (m->screen[o + i].c == 0) {
m->screen[o + i].c = padchar;
}
m->screen[o + i].a = opt.char_attr;
}
}
QString AbstractCharacterBasedApplication::statusLine() const
{
QString text = "[%1:%2]";
text = text.arg(cx()->current_row + 1).arg(cx()->current_col + 1);
return text;
}
int AbstractCharacterBasedApplication::printArea(TextEditorContext const *cx, const SelectionAnchor *sel_a, const SelectionAnchor *sel_b)
{
int end_of_line_y = -1;
if (cx) {
int height = cx->viewport_height;
QRect clip(cx->viewport_org_x, cx->viewport_org_y, cx->viewport_width, height);
int row = cx->scroll_row_pos;
for (int i = 0; i < height; i++) {
if (row < 0) continue;
int y = cx->viewport_org_y + i;
if (row < (int)cx->engine->document.lines.size()) {
if (i < height) {
int x = cx->viewport_org_x - cx->scroll_col_pos;
Document::Line const &line = cx->engine->document.lines[row];
int anchor_a = -1;
int anchor_b = -1;
if (sel_a && sel_a->enabled && sel_b && sel_b->enabled) {
SelectionAnchor a = *sel_a;
SelectionAnchor b = *sel_b;
if (a.row > b.row) {
std::swap(a, b);
} else if (a.row == b.row) {
if (a.col > b.col) {
std::swap(a, b);
}
}
if (row > a.row && row < b.row) {
anchor_a = 0;
} else {
if (row == a.row) {
anchor_a = a.col;
}
if (row == b.row) {
anchor_b = b.col;
}
}
}
QList<FormattedLine> lines = formatLine(line, cx->tab_span, anchor_a, anchor_b);
for (FormattedLine const &line : lines) {
AbstractCharacterBasedApplication::Option opt;
if (line.atts & FormattedLine::StyleID) {
opt.char_attr.color = QColor(line.atts & 0xff, (line.atts >> 8) & 0xff, (line.atts >> 16) & 0xff);
}
opt.clip = clip;
if (line.isSelected()) {
opt.char_attr.flags |= CharAttr::Selected;
}
x = print(x, y, line.text, opt);
}
int end_x = clip.x() + clip.width();
if (x < end_x) {
if (x < clip.left()) {
x = clip.left();
}
if (x < end_x) {
clearRect(x, y, end_x - x, 1);
}
}
}
} else {
if (end_of_line_y < 0) {
end_of_line_y = i;
}
clearRect(cx->viewport_org_x, y, cx->viewport_width, 1);
if (y >= 0 && y < (int)m->line_flags.size()) {
m->line_flags[y] |= LineChanged;
}
}
row++;
}
}
return end_of_line_y;
}
void AbstractCharacterBasedApplication::paintLineNumbers(std::function<void(int, QString, Document::Line const *line)> const &draw)
{
auto Line = [&](int index)->Document::Line &{
return editor_cx->engine->document.lines[index];
};
int rightpadding = 2;
int left_margin = editor_cx->viewport_org_x;
int num = 1;
size_t offset = 0;
for (int i = 0; i < editor_cx->viewport_height; i++) {
char tmp[100];
Q_ASSERT(left_margin < (int)sizeof(tmp));
memset(tmp, ' ', left_margin);
tmp[left_margin] = 0;
int row = editor_cx->scroll_row_pos + i;
Document::Line *line = nullptr;
if (row < (int)editor_cx->engine->document.lines.size()) {
if (m->valid_line_index < 0) {
m->valid_line_index = 0;
Document::Line *p = &Line(0);
if (p->type != Document::Line::Unknown) {
p->byte_offset = offset;
p->line_number = num;
offset += p->text.size();
num++;
}
}
line = &Line(row);
if (row >= m->valid_line_index) {
{
Document::Line const &line = Line(m->valid_line_index);
offset = line.byte_offset;
num = line.line_number;
}
while (m->valid_line_index <= row) {
Document::Line const &line = Line(m->valid_line_index);
if (line.type != Document::Line::Unknown) {
offset += line.text.size();
num++;
}
m->valid_line_index++;
if (m->valid_line_index < editor_cx->engine->document.lines.size()) {
Document::Line *p = &Line(m->valid_line_index);
p->byte_offset = offset;
p->line_number = num;
}
}
}
if (left_margin > 1) {
unsigned int linenum = -1;
if (row < m->valid_line_index) {
#if 1
linenum = line->line_number;
#else
linenum = line->byte_offset;
#endif
}
if (linenum != (unsigned int)-1 && line->type != Document::Line::Unknown) {
sprintf(tmp, "%*u ", left_margin - rightpadding, linenum);
}
}
}
int y = editor_cx->viewport_org_y + i;
draw(y, tmp, line);
}
}
bool AbstractCharacterBasedApplication::isAutoLayout() const
{
return m->auto_layout;
}
void AbstractCharacterBasedApplication::preparePaintScreen()
{
if (m->header_line > 0) {
char const *line = "Hello, world\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86";
printInvertedBar(0, 0, line, ' ');
}
if (m->show_line_number) {
Option opt_normal;
paintLineNumbers([&](int y, QString text, Document::Line const *line){
(void)line;
print(0, y, text + '|', opt_normal);
});
}
SelectionAnchor anchor_a;
SelectionAnchor anchor_b;
auto MakeSelectionAnchor = [&](){
if (selection_anchor_0.enabled != SelectionAnchor::No) {
anchor_a = selection_anchor_0;
#if 0
anchor_b.row = cx()->current_row;
anchor_b.col = cx()->current_col;
anchor_b.enabled = selection_anchor_0.enabled;
#else
anchor_b = selection_anchor_1;
#endif
}
};
if (isDialogMode()) {
printArea(editor_cx.get(), &anchor_a, &anchor_b);
std::string text = m->dialog_title.toStdString();
text = ' ' + text + ' ';
int y = screenHeight() - 2;
printInvertedBar(3, y, text.c_str(), '-');
MakeSelectionAnchor();
printArea(dialog_cx.get(), &anchor_a, &anchor_b);
} else {
MakeSelectionAnchor();
editor_cx->bottom_line_y = printArea(editor_cx.get(), &anchor_a, &anchor_b);
if (m->footer_line > 0) {
QString line = statusLine();
int y = screenHeight() - 1;
printInvertedBar(0, y, line.toStdString().c_str(), ' ');
}
}
}
void AbstractCharacterBasedApplication::onQuit()
{
if (!m->is_quit_enabled) return;
if (!isDialogMode()) {
m->state = State::Exit;
}
}
void AbstractCharacterBasedApplication::onOpenFile()
{
if (isReadOnly()) return;
if (!m->is_open_enabled) return;
if (!isDialogMode()) {
execDialog("Open File", recentlyUsedPath(), [&](bool ok, QString const &text){
if (ok) {
openFile(text);
}
});
}
}
void AbstractCharacterBasedApplication::onSaveFile()
{
if (!m->is_save_enabled) return;
if (!isDialogMode()) {
execDialog("Save File", recentlyUsedPath(), [&](bool ok, QString const &text){
if (ok) {
saveFile(text);
}
});
}
}
void AbstractCharacterBasedApplication::setNormalTextEditorMode(bool f)
{
m->is_quit_enabled = f;
m->is_open_enabled = f;
m->is_save_enabled = f;
setTerminalMode(!f);
}
SelectionAnchor AbstractCharacterBasedApplication::currentAnchor(SelectionAnchor::Enabled enabled)
{
SelectionAnchor a;
a.row = cx()->current_row;
a.col = cx()->current_col;
a.enabled = enabled;
return a;
}
void AbstractCharacterBasedApplication::deselect()
{
selection_anchor_0.enabled = SelectionAnchor::No;
selection_anchor_1.enabled = SelectionAnchor::No;
}
bool AbstractCharacterBasedApplication::isSelectionAnchorEnabled() const
{
return selection_anchor_0.enabled != SelectionAnchor::No;
}
void AbstractCharacterBasedApplication::setToggleSelectionAnchorEnabled(bool f)
{
m->is_toggle_selection_anchor_enabled = f;
}
void AbstractCharacterBasedApplication::setReadOnly(bool f)
{
m->is_read_only = f;
}
bool AbstractCharacterBasedApplication::isReadOnly() const
{
return m->is_read_only && !m->is_terminal_mode;
}
void AbstractCharacterBasedApplication::setSelectionAnchor(SelectionAnchor::Enabled enabled, bool update_anchor, bool auto_scroll)
{
if (update_anchor) {
selection_anchor_0 = currentAnchor(enabled);
} else {
selection_anchor_0.enabled = enabled;
}
clearParsedLine();
updateVisibility(false, false, auto_scroll);
}
void AbstractCharacterBasedApplication::toggleSelectionAnchor()
{
if (!m->is_toggle_selection_anchor_enabled) return;
setSelectionAnchor(isSelectionAnchorEnabled() ? SelectionAnchor::No : SelectionAnchor::EnabledHard, true, true);
selection_anchor_1 = selection_anchor_0;
}
void AbstractCharacterBasedApplication::editPaste()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
setPaintingSuppressed(true);
QString str = qApp->clipboard()->text();
utf16(str.utf16(), str.size()).to_utf32([&](uint32_t c){
write(c, false);
return true;
});
setPaintingSuppressed(false);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::editCopy()
{
edit_(EditOperation::Copy);
}
void AbstractCharacterBasedApplication::editCut()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
edit_(EditOperation::Cut);
}
void AbstractCharacterBasedApplication::setWriteMode(WriteMode wm)
{
m->write_mode = wm;
}
bool AbstractCharacterBasedApplication::isInsertMode() const
{
return m->write_mode == WriteMode::Insert && !isTerminalMode();
}
bool AbstractCharacterBasedApplication::isOverwriteMode() const
{
return m->write_mode == WriteMode::Overwrite || isTerminalMode();
}
void AbstractCharacterBasedApplication::setTerminalMode(bool f)
{
m->is_terminal_mode = f;
if (isTerminalMode()) {
showHeader(false);
showFooter(false);
showLineNumber(false, 0);
setLineMargin(0);
setWriteMode(WriteMode::Overwrite);
setReadOnly(true);
}
layoutEditor();
}
bool AbstractCharacterBasedApplication::isTerminalMode() const
{
return m->is_terminal_mode;
}
bool AbstractCharacterBasedApplication::isBottom() const
{
if (cx()->current_row == m->parsed_row_index) {
if (m->parsed_col_index == (int)m->prepared_current_line.size()) {
return true;
}
}
return false;
}
void AbstractCharacterBasedApplication::moveToTop()
{
if (isSingleLineMode()) return;
deselect();
cx()->current_row = 0;
cx()->current_col = 0;
cx()->current_col_hint = 0;
cx()->scroll_row_pos = 0;
scrollToTop();
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
void AbstractCharacterBasedApplication::logicalMoveToBottom()
{
deselect();
cx()->current_row = documentLines();
cx()->current_col = 0;
if (cx()->current_row > 0) {
cx()->current_row = cx()->current_row - 1;
clearParsedLine();
fetchCurrentLine();
int col = calcVisualWidth(Document::Line(m->parsed_line));
cx()->current_col = col;
cx()->current_col_hint = col;
}
cx()->scroll_row_pos = scrollBottomLimit();
}
void AbstractCharacterBasedApplication::moveToBottom()
{
if (isSingleLineMode()) return;
logicalMoveToBottom();
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
int AbstractCharacterBasedApplication::findSyntax(QList<Document::CharAttr_> const *list, size_t offset)
{
int lo = 0;
int hi = list->size();
while (lo + 1 < hi) {
int mid = (lo + hi) / 2;
Document::CharAttr_ const *a = &list->at(mid);
if (offset == a->offset) {
return mid;
}
if (offset < a->offset) {
hi = mid;
} else {
lo = mid;
}
}
return lo;
}
void AbstractCharacterBasedApplication::insertSyntax(QList<Document::CharAttr_> *list, size_t offset, Document::CharAttr_ const &a)
{
int i = findSyntax(list, offset);
int n = list->size();
if (i < n) {
if (list->at(i).offset == offset) {
(*list)[i] = a;
} else {
if (i < n) {
if (a.offset < list->at(i).offset) {
if (list->at(i).color == a.color) {
(*list)[i].offset = offset;
return;
}
}
}
if (list->at(i).color == a.color) {
return;
}
if (list->at(i).offset < a.offset) {
i++;
}
list->insert(list->begin() + i, a);
while (++i < n) {
(*list)[i].offset++;
}
}
} else {
list->push_back(a);
}
}
void AbstractCharacterBasedApplication::internalWrite(const ushort *begin, const ushort *end)
{
deleteIfSelected();
clearShiftModifier();
if (cx()->engine->document.lines.isEmpty()) {
Document::Line line;
line.type = Document::Line::Normal;
line.line_number = 1;
cx()->engine->document.lines.push_back(line);
}
if (!isCurrentLineWritable()) return;
int len = end - begin;
parseLine(nullptr, len, false);
int index = m->parsed_col_index;
if (index < 0) {
addNewLineToBottom();
index = 0;
}
std::vector<Char> *vec = &m->prepared_current_line;
auto WriteChar = [&](ushort c){
if (isInsertMode()) {
vec->insert(vec->begin() + index, Char(c, 0));
} else if (isOverwriteMode()) {
if (index < (int)vec->size()) {
uint32_t d = vec->at(index).unicode;
if (d == '\n' || d == '\r') {
vec->insert(vec->begin() + index, Char(c, 0));
} else {
vec->at(index) = Char(c, 0);
}
} else {
vec->emplace_back(c, 0);
}
}
Document::CharAttr_ a;
a.offset = index;
a.color = m->escape_sequence.fg_color_code();
insertSyntax(&m->syntax_table, index, a);
};
ushort const *ptr = begin;
while (ptr < end) {
ushort c = *ptr;
ptr++;
if (c >= 0xd800 && c < 0xdc00) {
if (ptr < end) {
ushort d = *ptr;
if (d >= 0xdc00 && d < 0xe000) {
ptr++;
int u = 0x10000 + (c - 0xd800) * 0x400 + (d - 0xdc00);
WriteChar(u);
index++;
}
}
} else {
WriteChar(c);
index++;
}
}
m->parsed_col_index = index;
commitLine(*vec);
setCursorColByIndex(*vec, index);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::pressLetterWithControl(int c)
{
if (c < 0 || c > 0x7f) {
return;
}
if (c < 0x40) {
c += 0x40;
}
c = toupper(c);
switch (c) {
case 'A':
toggleSelectionAnchor();
break;
case 'Q':
onQuit();
break;
case 'O':
onOpenFile();
break;
case 'S':
onSaveFile();
break;
case 'X':
editCut();
break;
case 'C':
editCopy();
break;
case 'V':
editPaste();
break;
}
}
void AbstractCharacterBasedApplication::write(uint32_t c, bool by_keyboard)
{
if (isTerminalMode()) {
if (c == '\r') {
setCursorCol(0);
clearParsedLine();
updateVisibility(true, true, true);
return;
}
if (m->cursor_moved_by_mouse) {
moveToBottom();
}
if (c == 0x1b || m->escape_sequence.isActive()) {
m->escape_sequence.write(c);
return;
}
}
bool ok = !(isTerminalMode() && by_keyboard);
if (c < 0x20) {
if (c == 0x08) {
if (ok) {
doBackspace();
}
} else if (c == 0x09) {
if (ok) {
ushort u = c;
internalWrite(&u, &u + 1);
}
} else if (c == 0x0a) {
if (ok) {
pressEnter();
}
} else if (c == 0x0d) {
if (ok) {
writeCR();
}
} else if (c == 0x1b) {
pressEscape();
} else if (c >= 1 && c <= 26) {
pressLetterWithControl(c);
}
} else if (c == 0x7f) {
if (ok) {
doDelete();
}
} else if (c < 0x10000) {
if (ok) {
ushort u = c;
internalWrite(&u, &u + 1);
}
} else if (c >= 0x10000 && c <= 0x10ffff) {
if (ok) {
ushort t[2];
t[0] = (c - 0x10000) / 0x400 + 0xd800;
t[1] = (c - 0x10000) % 0x400 + 0xdc00;
internalWrite(t, t + 2);
}
} else {
switch (c) {
case EscapeCode::Up:
if (ok) moveCursorUp();
break;
case EscapeCode::Down:
if (ok) moveCursorDown();
break;
case EscapeCode::Right:
if (ok) moveCursorRight();
break;
case EscapeCode::Left:
if (ok) moveCursorLeft();
break;
case EscapeCode::Home:
if (ok) moveCursorHome();
break;
case EscapeCode::End:
if (ok) moveCursorEnd();
break;
case EscapeCode::PageUp:
if (ok) movePageUp();
break;
case EscapeCode::PageDown:
if (ok) movePageDown();
break;
case EscapeCode::Insert:
clearShiftModifier();
break;
case EscapeCode::Delete:
clearShiftModifier();
if (ok) doDelete();
break;
}
}
}
void AbstractCharacterBasedApplication::write(char const *ptr, int len, bool by_keyboard)
{
if (isReadOnly()) return;
char const *begin = ptr;
char const *end = begin + (len < 0 ? strlen(ptr) : len);
char const *left = begin;
char const *right = begin;
while (1) {
int c = -1;
if (right < end) {
c = *right & 0xff;
}
if (c == '\n' || c == '\r' || c < 0) {
utf8 src(left, right);
while (1) {
int d = src.next();
if (d == 0) break;
write(d, by_keyboard);
}
if (c < 0) break;
right++;
if (c == '\r') {
c = isInsertMode() ? '\n' : '\r';
if (right < end && *right == '\n') {
c = '\n';
right++;
}
write(c, by_keyboard);
} else if (c == '\n') {
write('\n', by_keyboard);
}
left = right;
} else {
right++;
}
}
}
void AbstractCharacterBasedApplication::write(std::string const &text)
{
if (!text.empty()) {
write(text.c_str(), text.size(), false);
}
}
void AbstractCharacterBasedApplication::write_(char const *ptr, bool by_keyboard)
{
write(ptr, -1, by_keyboard);
}
void AbstractCharacterBasedApplication::write_(QString const &text, bool by_keyboard)
{
if (isReadOnly()) return;
if (text.size() == 1) {
ushort c = text.at(0).unicode();
write(c, by_keyboard);
return;
}
int len = text.size();
if (len > 0) {
ushort const *begin = text.utf16();
ushort const *end = begin + len;
ushort const *left = begin;
ushort const *right = begin;
while (1) {
int c = -1;
if (right < end) {
c = *right;
}
if (c < 0x20) {
if (left < right) {
internalWrite(left, right);
}
if (c == -1) break;
right++;
if (c == '\n' || c == '\r') {
if (c == '\r') {
if (right < end && *right == '\n') {
right++;
}
}
writeNewLine();
} else {
write(c, by_keyboard);
}
left = right;
} else {
right++;
}
}
}
}
void AbstractCharacterBasedApplication::write(QKeyEvent *e)
{
setModifierKeys(e->modifiers());
int c = e->key();
if (c == Qt::Key_Backspace) {
write(0x08, true);
} else if (c == Qt::Key_Delete) {
write(0x7f, true);
} else if (c == Qt::Key_Up) {
if (isControlModifierPressed()) {
scrollUp();
} else {
write(EscapeCode::Up, true);
}
} else if (c == Qt::Key_Down) {
if (isControlModifierPressed()) {
scrollDown();
} else {
write(EscapeCode::Down, true);
}
} else if (c == Qt::Key_Left) {
write(EscapeCode::Left, true);
} else if (c == Qt::Key_Right) {
write(EscapeCode::Right, true);
} else if (c == Qt::Key_PageUp) {
write(EscapeCode::PageUp, true);
} else if (c == Qt::Key_PageDown) {
write(EscapeCode::PageDown, true);
} else if (c == Qt::Key_Home) {
if (isControlModifierPressed()) {
moveToTop();
} else {
write(EscapeCode::Home, true);
}
} else if (c == Qt::Key_End) {
if (isControlModifierPressed()) {
moveToBottom();
} else {
write(EscapeCode::End, true);
}
} else if (c == Qt::Key_Return || c == Qt::Key_Enter) {
write('\n', true);
} else if (c == Qt::Key_Escape) {
write(0x1b, true);
} else if (isControlModifierPressed()) {
if (QChar(c).isLetter()) {
c = QChar(c).toUpper().unicode();
if (c >= 0x40 && c < 0x60) {
write(c - 0x40, true);
}
}
} else {
QString text = e->text();
write_(text, true);
}
}
void Document::retrieveLastText(std::vector<char> *out, int maxlen) const
{
int remain = maxlen;
int i = lines.size();
while (i > 0 && remain > 0) {
i--;
QByteArray const &data = lines[i].text;
int n = data.size();
if (n > remain) {
n = remain;
}
char const *p = data.data() + data.size() - n;
out->insert(out->begin(), p, p + n);
remain -= n;
}
}
//AbstractCharacterBasedApplication::Char::operator unsigned int() const
//{
// qDebug();
// return 'A';
//}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Feb 7, 8:52 AM (23 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
55931
Default Alt Text
(589 KB)

Event Timeline