Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F131531
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
157 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/.gitignore b/.gitignore
index 818affd..a00a83c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,15 @@
*.user
win.rc
Info.plist
version.c
_notes
_release
.DS_Store
image/about.psd
extra/_build_*
misc/win32tools
_bin/
+build/
+src/version.h
*.autosave
src/version.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..2831737
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,386 @@
+cmake_minimum_required(VERSION 3.2)
+
+project(Guitar
+ VERSION 0.9.0
+ LANGUAGES CXX C
+)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTORCC ON)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
+
+find_package(Qt5 COMPONENTS Core Widgets Network Svg REQUIRED)
+find_package(zlib REQUIRED )
+find_package(OpenSSL REQUIRED )
+find_package(Qt5LinguistTools REQUIRED)
+if(WIN32)
+ # check package at
+ # https://github.com/rprichard/winpty
+ find_package(winpty REQUIRED )
+endif()
+
+# extract version information
+string(TIMESTAMP Guitar_copyright_year "%Y")
+execute_process(
+ COMMAND git rev-parse --short=7 HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE Guitar_git_hash
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+add_compile_options(-std=c++11)
+
+configure_file(version.h.in version.h)
+configure_file(win.rc.in win.rc.h)
+configure_file(Info.plist.in Info.plist)
+
+set(Guitar_SOURCES
+ src/main.cpp
+ src/MainWindow.cpp
+ src/Git.cpp
+ src/common/joinpath.cpp
+ src/common/misc.cpp
+ src/ConfigCredentialHelperDialog.cpp
+ src/MySettings.cpp
+ src/FileDiffWidget.cpp
+ src/TextEditDialog.cpp
+ src/LogTableWidget.cpp
+ src/FileDiffSliderWidget.cpp
+ src/FileUtil.cpp
+ src/SettingsDialog.cpp
+ src/MergeBranchDialog.cpp
+ src/CloneDialog.cpp
+ src/AboutDialog.cpp
+ src/RepositoryInfoFrame.cpp
+ src/RepositoryPropertyDialog.cpp
+ src/RepositoryData.cpp
+ src/MyToolButton.cpp
+ src/GitDiff.cpp
+ src/CommitPropertyDialog.cpp
+ src/Terminal.cpp
+ src/DeleteTagsDialog.cpp
+ src/RepositoriesTreeWidget.cpp
+ src/SelectCommandDialog.cpp
+ src/ImageViewWidget.cpp
+ src/FileHistoryWindow.cpp
+ src/GitPackIdxV2.cpp
+ src/GitPack.cpp
+ src/GitObjectManager.cpp
+ src/FilePropertyDialog.cpp
+ src/BigDiffWindow.cpp
+ src/MaximizeButton.cpp
+ src/CommitExploreWindow.cpp
+ src/ReadOnlyLineEdit.cpp
+ src/ReadOnlyPlainTextEdit.cpp
+ src/MyTableWidgetDelegate.cpp
+ src/SetRemoteUrlDialog.cpp
+ src/ClearButton.cpp
+ src/SetUserDialog.cpp
+ src/SearchFromGitHubDialog.cpp
+ src/webclient.cpp
+ src/charvec.cpp
+ src/urlencode.cpp
+ src/HyperLinkLabel.cpp
+ src/JumpDialog.cpp
+ src/CheckoutDialog.cpp
+ src/DeleteBranchDialog.cpp
+ src/BasicRepositoryDialog.cpp
+ src/RemoteRepositoriesTableWidget.cpp
+ src/LocalSocketReader.cpp
+ src/PushDialog.cpp
+ src/StatusLabel.cpp
+ src/RepositoryLineEdit.cpp
+ src/DirectoryLineEdit.cpp
+ src/AbstractSettingForm.cpp
+ src/SettingExampleForm.cpp
+ src/CreateRepositoryDialog.cpp
+ src/GitHubAPI.cpp
+ src/MemoryReader.cpp
+ src/ExperimentDialog.cpp
+ src/gunzip.cpp
+ src/AvatarLoader.cpp
+ src/SettingNetworkForm.cpp
+ src/Photoshop.cpp
+ src/SettingBehaviorForm.cpp
+ src/MyProcess.cpp
+ src/FileViewWidget.cpp
+ src/MyTextEditorWidget.cpp
+ src/AbstractProcess.cpp
+ src/texteditor/AbstractCharacterBasedApplication.cpp
+ src/texteditor/InputMethodPopup.cpp
+ src/texteditor/TextEditorTheme.cpp
+ src/texteditor/TextEditorWidget.cpp
+ src/texteditor/unicode.cpp
+ src/texteditor/UnicodeWidth.cpp
+ src/MyImageViewWidget.cpp
+ src/SetGlobalUserDialog.cpp
+ src/ReflogWindow.cpp
+ src/Theme.cpp
+ src/ApplicationGlobal.cpp
+ src/BlameWindow.cpp
+ src/MenuButton.cpp
+ src/SettingGeneralForm.cpp
+ src/WelcomeWizardDialog.cpp
+ src/DialogHeaderFrame.cpp
+ src/CommitViewWindow.cpp
+ src/EditRemoteDialog.cpp
+ src/gpg.cpp
+ src/SelectGpgKeyDialog.cpp
+ src/SetGpgSigningDialog.cpp
+ src/CommitDialog.cpp
+ src/ConfigSigningDialog.cpp
+ src/AreYouSureYouWantToContinueConnectingDialog.cpp
+ src/LineEditDialog.cpp
+ src/SettingProgramsForm.cpp
+ src/InputNewTagDialog.cpp
+ src/EditTagsDialog.cpp
+ src/darktheme/DarkStyle.cpp
+ src/darktheme/NinePatch.cpp
+ src/darktheme/StandardStyle.cpp
+ src/darktheme/TraditionalWindowsStyleTreeControl.cpp
+ src/EditGitIgnoreDialog.cpp
+ src/SelectItemDialog.cpp
+ src/RebaseOntoDialog.cpp
+ src/RemoteWatcher.cpp
+ src/DoYouWantToInitDialog.cpp
+ src/BasicMainWindow.cpp
+ )
+
+
+set(Guitar_HEADERS
+ src/MainWindow.h
+ src/Git.h
+ src/common/joinpath.h
+ src/common/misc.h
+ src/ConfigCredentialHelperDialog.h
+ src/MySettings.h
+ src/main.h
+ src/FileDiffWidget.h
+ src/TextEditDialog.h
+ src/LogTableWidget.h
+ src/FileDiffSliderWidget.h
+ src/FileUtil.h
+ src/SettingsDialog.h
+ src/MergeBranchDialog.h
+ src/CloneDialog.h
+ src/AboutDialog.h
+ src/RepositoryInfoFrame.h
+ src/RepositoryPropertyDialog.h
+ src/RepositoryData.h
+ src/MyToolButton.h
+ src/GitDiff.h
+ src/CommitPropertyDialog.h
+ src/Terminal.h
+ src/DeleteTagsDialog.h
+ src/RepositoriesTreeWidget.h
+ src/SelectCommandDialog.h
+ src/ImageViewWidget.h
+ src/FileHistoryWindow.h
+ src/Debug.h
+ src/GitPackIdxV2.h
+ src/GitPack.h
+ src/GitObjectManager.h
+ src/FilePropertyDialog.h
+ src/BigDiffWindow.h
+ src/MaximizeButton.h
+ src/CommitExploreWindow.h
+ src/ReadOnlyLineEdit.h
+ src/ReadOnlyPlainTextEdit.h
+ src/MyTableWidgetDelegate.h
+ src/SetRemoteUrlDialog.h
+ src/ClearButton.h
+ src/SetUserDialog.h
+ src/SearchFromGitHubDialog.h
+ src/webclient.h
+ src/charvec.h
+ src/urlencode.h
+ src/HyperLinkLabel.h
+ src/JumpDialog.h
+ src/CheckoutDialog.h
+ src/DeleteBranchDialog.h
+ src/BasicRepositoryDialog.h
+ src/RemoteRepositoriesTableWidget.h
+ src/LocalSocketReader.h
+ src/PushDialog.h
+ src/StatusLabel.h
+ src/RepositoryLineEdit.h
+ src/DirectoryLineEdit.h
+ src/AbstractSettingForm.h
+ src/SettingExampleForm.h
+ src/CreateRepositoryDialog.h
+ src/GitHubAPI.h
+ src/MemoryReader.h
+ src/ExperimentDialog.h
+ src/gunzip.h
+ src/AvatarLoader.h
+ src/SettingNetworkForm.h
+ src/Photoshop.h
+ src/SettingBehaviorForm.h
+ src/MyProcess.h
+ src/FileViewWidget.h
+ src/MyTextEditorWidget.h
+ src/AbstractProcess.h
+ src/texteditor/AbstractCharacterBasedApplication.h
+ src/texteditor/InputMethodPopup.h
+ src/texteditor/TextEditorTheme.h
+ src/texteditor/TextEditorWidget.h
+ src/texteditor/unicode.h
+ src/texteditor/UnicodeWidth.h
+ src/MyImageViewWidget.h
+ src/SetGlobalUserDialog.h
+ src/ReflogWindow.h
+ src/Theme.h
+ src/ApplicationGlobal.h
+ src/BlameWindow.h
+ src/MenuButton.h
+ src/SettingGeneralForm.h
+ src/WelcomeWizardDialog.h
+ src/DialogHeaderFrame.h
+ src/CommitViewWindow.h
+ src/EditRemoteDialog.h
+ src/gpg.h
+ src/SelectGpgKeyDialog.h
+ src/SetGpgSigningDialog.h
+ src/CommitDialog.h
+ src/ConfigSigningDialog.h
+ src/AreYouSureYouWantToContinueConnectingDialog.h
+ src/LineEditDialog.h
+ src/SettingProgramsForm.h
+ src/InputNewTagDialog.h
+ src/EditTagsDialog.h
+ src/darktheme/DarkStyle.h
+ src/darktheme/NinePatch.h
+ src/darktheme/StandardStyle.h
+ src/darktheme/TraditionalWindowsStyleTreeControl.h
+ src/EditGitIgnoreDialog.h
+ src/SelectItemDialog.h
+ src/RebaseOntoDialog.h
+ src/RemoteWatcher.h
+ src/DoYouWantToInitDialog.h
+ src/BasicMainWindow.h
+ )
+
+if(UNIX)
+ list(APPEND Guitar_SOURCES
+ src/unix/UnixProcess.cpp
+ src/unix/UnixPtyProcess.cpp
+ )
+ list(APPEND Guitar_HEADERS
+ src/unix/UnixProcess.h
+ src/unix/UnixPtyProcess.h
+ )
+elseif(WIN32)
+ list(APPEND Guitar_SOURCES
+ src/win32/thread.cpp
+ src/win32/event.cpp
+ src/win32/win32.cpp
+ src/win32/Win32Process.cpp
+ src/win32/Win32PtyProcess.cpp
+ )
+ list(APPEND Guitar_HEADERS
+ src/win32/thread.h
+ src/win32/event.h
+ src/win32/mutex.h
+ src/win32/win32.h
+ src/win32/Win32Process.h
+ src/win32/Win32PtyProcess.h
+ )
+endif()
+
+set(Guitar_UIS
+ src/MainWindow.ui
+ src/ConfigCredentialHelperDialog.ui
+ src/TextEditDialog.ui
+ src/SettingsDialog.ui
+ src/MergeBranchDialog.ui
+ src/CloneDialog.ui
+ src/AboutDialog.ui
+ src/RepositoryPropertyDialog.ui
+ src/CommitPropertyDialog.ui
+ src/DeleteTagsDialog.ui
+ src/SelectCommandDialog.ui
+ src/FileDiffWidget.ui
+ src/FileHistoryWindow.ui
+ src/FilePropertyDialog.ui
+ src/BigDiffWindow.ui
+ src/CommitExploreWindow.ui
+ src/SetRemoteUrlDialog.ui
+ src/SetUserDialog.ui
+ src/SearchFromGitHubDialog.ui
+ src/JumpDialog.ui
+ src/CheckoutDialog.ui
+ src/DeleteBranchDialog.ui
+ src/PushDialog.ui
+ src/SettingExampleForm.ui
+ src/CreateRepositoryDialog.ui
+ src/ExperimentDialog.ui
+ src/SettingNetworkForm.ui
+ src/SettingBehaviorForm.ui
+ src/SetGlobalUserDialog.ui
+ src/ReflogWindow.ui
+ src/BlameWindow.ui
+ src/SettingGeneralForm.ui
+ src/WelcomeWizardDialog.ui
+ src/CommitViewWindow.ui
+ src/EditRemoteDialog.ui
+ src/SelectGpgKeyDialog.ui
+ src/SetGpgSigningDialog.ui
+ src/CommitDialog.ui
+ src/ConfigSigningDialog.ui
+ src/AreYouSureYouWantToContinueConnectingDialog.ui
+ src/LineEditDialog.ui
+ src/SettingProgramsForm.ui
+ src/InputNewTagDialog.ui
+ src/EditTagsDialog.ui
+ src/EditGitIgnoreDialog.ui
+ src/SelectItemDialog.ui
+ src/RebaseOntoDialog.ui
+ src/DoYouWantToInitDialog.ui
+ )
+
+set(Guitar_RESOURCES
+ src/resources/resources.qrc
+ )
+
+set(Guitar_TRANSLATIONS
+ src/resources/translations/ja_JPN.ts
+ )
+
+qt5_add_translation(Guitar_QM_FILES ${Guitar_TRANSLATIONS})
+configure_file(${Guitar_RESOURCES} ${CMAKE_BINARY_DIR} COPYONLY)
+
+add_custom_target(translations ALL DEPENDS ${Guitar_QM_FILES})
+
+add_custom_target(resources ALL DEPENDS ${Guitar_RESOURCES})
+
+add_dependencies(resources translations)
+
+include_directories(src)
+include_directories(src/texteditor)
+
+add_executable(${PROJECT_NAME}
+ ${Guitar_SOURCES}
+ ${Guitar_HEADERS}
+ ${Guitar_UIS}
+ ${Guitar_RESOURCES}
+ ${Guitar_QM_FILES}
+ )
+
+set_target_properties(${PROJECT_NAME} PROPERTIES
+ CXX_STANDARD 11
+ CXX_EXTENSIONS OFF
+)
+
+target_link_libraries(${PROJECT_NAME}
+ Qt5::Widgets
+ Qt5::Network
+ Qt5::Svg
+ zlib
+ OpenSSL::SSL OpenSSL::Crypto
+)
+
+
+add_subdirectory(extra)
diff --git a/Guitar.icns b/Guitar.icns
deleted file mode 100644
index 878b45a..0000000
Binary files a/Guitar.icns and /dev/null differ
diff --git a/Guitar.ico b/Guitar.ico
deleted file mode 100644
index eadd7cc..0000000
Binary files a/Guitar.ico and /dev/null differ
diff --git a/Guitar.pro b/Guitar.pro
index d56e2bb..66d631e 100644
--- a/Guitar.pro
+++ b/Guitar.pro
@@ -1,394 +1,399 @@
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 = Guitar_ja.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/winpty
-win32:LIBS += $$PWD/winpty/winpty.lib
+win32:INCLUDEPATH += $$PWD/misc/winpty
+win32:LIBS += $$PWD/misc/winpty/winpty.lib
# OpenSSL
linux: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
}
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 {
unix:CONFIG(debug, debug|release):LIBS += $$PWD/_bin/libzd.a
unix:CONFIG(release, debug|release):LIBS += $$PWD/_bin/libz.a
#unix:LIBS += -lz
}
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 += Guitar.icns
t.path=Contents/Resources
QMAKE_BUNDLE_DATA += t
}
SOURCES += \
- version.c \
src/main.cpp\
src/MainWindow.cpp \
src/Git.cpp \
src/common/joinpath.cpp \
src/common/misc.cpp \
src/ConfigCredentialHelperDialog.cpp \
src/MySettings.cpp \
src/FileDiffWidget.cpp \
src/TextEditDialog.cpp \
src/LogTableWidget.cpp \
src/FileDiffSliderWidget.cpp \
src/FileUtil.cpp \
src/SettingsDialog.cpp \
src/MergeBranchDialog.cpp \
src/CloneDialog.cpp \
src/AboutDialog.cpp \
src/RepositoryInfoFrame.cpp \
src/RepositoryPropertyDialog.cpp \
src/RepositoryData.cpp \
src/MyToolButton.cpp \
src/GitDiff.cpp \
src/CommitPropertyDialog.cpp \
src/Terminal.cpp \
src/DeleteTagsDialog.cpp \
src/RepositoriesTreeWidget.cpp \
src/SelectCommandDialog.cpp \
src/ImageViewWidget.cpp \
src/FileHistoryWindow.cpp \
src/GitPackIdxV2.cpp \
src/GitPack.cpp \
src/GitObjectManager.cpp \
src/FilePropertyDialog.cpp \
src/BigDiffWindow.cpp \
src/MaximizeButton.cpp \
src/CommitExploreWindow.cpp \
src/ReadOnlyLineEdit.cpp \
src/ReadOnlyPlainTextEdit.cpp \
src/MyTableWidgetDelegate.cpp \
src/SetRemoteUrlDialog.cpp \
src/ClearButton.cpp \
src/SetUserDialog.cpp \
src/SearchFromGitHubDialog.cpp \
src/webclient.cpp \
src/charvec.cpp \
src/urlencode.cpp \
src/HyperLinkLabel.cpp \
src/JumpDialog.cpp \
src/CheckoutDialog.cpp \
src/DeleteBranchDialog.cpp \
src/BasicRepositoryDialog.cpp \
src/RemoteRepositoriesTableWidget.cpp \
src/LocalSocketReader.cpp \
src/PushDialog.cpp \
src/StatusLabel.cpp \
src/RepositoryLineEdit.cpp \
src/DirectoryLineEdit.cpp \
src/AbstractSettingForm.cpp \
src/SettingExampleForm.cpp \
src/CreateRepositoryDialog.cpp \
src/GitHubAPI.cpp \
src/MemoryReader.cpp \
src/ExperimentDialog.cpp \
src/gunzip.cpp \
src/AvatarLoader.cpp \
src/SettingNetworkForm.cpp \
src/Photoshop.cpp \
src/SettingBehaviorForm.cpp \
src/MyProcess.cpp \
src/FileViewWidget.cpp \
src/MyTextEditorWidget.cpp \
src/AbstractProcess.cpp \
src/texteditor/AbstractCharacterBasedApplication.cpp \
src/texteditor/InputMethodPopup.cpp \
src/texteditor/TextEditorTheme.cpp \
src/texteditor/TextEditorWidget.cpp \
src/texteditor/unicode.cpp \
src/texteditor/UnicodeWidth.cpp \
src/MyImageViewWidget.cpp \
src/SetGlobalUserDialog.cpp \
src/ReflogWindow.cpp \
src/Theme.cpp \
src/ApplicationGlobal.cpp \
src/BlameWindow.cpp \
src/MenuButton.cpp \
src/SettingGeneralForm.cpp \
src/WelcomeWizardDialog.cpp \
src/DialogHeaderFrame.cpp \
src/CommitViewWindow.cpp \
src/EditRemoteDialog.cpp \
src/gpg.cpp \
src/SelectGpgKeyDialog.cpp \
src/SetGpgSigningDialog.cpp \
src/CommitDialog.cpp \
src/ConfigSigningDialog.cpp \
src/AreYouSureYouWantToContinueConnectingDialog.cpp \
src/LineEditDialog.cpp \
src/SettingProgramsForm.cpp \
src/InputNewTagDialog.cpp \
src/EditTagsDialog.cpp \
src/darktheme/DarkStyle.cpp \
src/darktheme/NinePatch.cpp \
src/darktheme/StandardStyle.cpp \
src/darktheme/TraditionalWindowsStyleTreeControl.cpp \
src/EditGitIgnoreDialog.cpp \
src/SelectItemDialog.cpp \
src/RebaseOntoDialog.cpp \
src/DoYouWantToInitDialog.cpp \
src/RemoteWatcher.cpp \
src/BasicMainWindow.cpp
HEADERS += \
src/MainWindow.h \
src/Git.h \
src/common/joinpath.h \
src/common/misc.h \
src/ConfigCredentialHelperDialog.h \
src/MySettings.h \
src/main.h \
src/FileDiffWidget.h \
src/TextEditDialog.h \
src/LogTableWidget.h \
src/FileDiffSliderWidget.h \
src/FileUtil.h \
src/SettingsDialog.h \
src/MergeBranchDialog.h \
src/CloneDialog.h \
src/AboutDialog.h \
src/RepositoryInfoFrame.h \
src/RepositoryPropertyDialog.h \
src/RepositoryData.h \
src/MyToolButton.h \
src/GitDiff.h \
src/CommitPropertyDialog.h \
src/Terminal.h \
src/DeleteTagsDialog.h \
src/RepositoriesTreeWidget.h \
src/SelectCommandDialog.h \
src/ImageViewWidget.h \
src/FileHistoryWindow.h \
src/Debug.h \
src/GitPackIdxV2.h \
src/GitPack.h \
src/GitObjectManager.h \
src/FilePropertyDialog.h \
src/BigDiffWindow.h \
src/MaximizeButton.h \
src/CommitExploreWindow.h \
src/ReadOnlyLineEdit.h \
src/ReadOnlyPlainTextEdit.h \
src/MyTableWidgetDelegate.h \
src/SetRemoteUrlDialog.h \
- myzlib.h \
src/ClearButton.h \
src/SetUserDialog.h \
src/SearchFromGitHubDialog.h \
src/webclient.h \
src/charvec.h \
src/urlencode.h \
src/HyperLinkLabel.h \
src/JumpDialog.h \
src/CheckoutDialog.h \
src/DeleteBranchDialog.h \
src/BasicRepositoryDialog.h \
src/RemoteRepositoriesTableWidget.h \
src/LocalSocketReader.h \
src/PushDialog.h \
src/StatusLabel.h \
src/RepositoryLineEdit.h \
src/DirectoryLineEdit.h \
src/AbstractSettingForm.h \
src/SettingExampleForm.h \
src/CreateRepositoryDialog.h \
src/GitHubAPI.h \
src/MemoryReader.h \
src/ExperimentDialog.h \
src/gunzip.h \
src/AvatarLoader.h \
src/SettingNetworkForm.h \
src/Photoshop.h \
src/SettingBehaviorForm.h \
src/MyProcess.h \
src/MyTextEditorWidget.h \
src/AbstractProcess.h \
src/texteditor/AbstractCharacterBasedApplication.h \
src/texteditor/InputMethodPopup.h \
src/texteditor/TextEditorTheme.h \
src/texteditor/TextEditorWidget.h \
src/texteditor/unicode.h \
src/texteditor/UnicodeWidth.h \
src/MyImageViewWidget.h \
src/SetGlobalUserDialog.h \
src/ReflogWindow.h \
src/Theme.h \
src/ApplicationGlobal.h \
src/BlameWindow.h \
src/MenuButton.h \
src/SettingGeneralForm.h \
src/WelcomeWizardDialog.h \
src/DialogHeaderFrame.h \
src/CommitViewWindow.h \
src/EditRemoteDialog.h \
src/gpg.h \
src/SelectGpgKeyDialog.h \
src/SetGpgSigningDialog.h \
src/CommitDialog.h \
src/ConfigSigningDialog.h \
src/AreYouSureYouWantToContinueConnectingDialog.h \
src/LineEditDialog.h \
src/SettingProgramsForm.h \
src/InputNewTagDialog.h \
src/EditTagsDialog.h \
src/darktheme/DarkStyle.h \
src/darktheme/NinePatch.h \
src/darktheme/StandardStyle.h \
src/darktheme/TraditionalWindowsStyleTreeControl.h \
src/EditGitIgnoreDialog.h \
src/SelectItemDialog.h \
src/RebaseOntoDialog.h \
src/DoYouWantToInitDialog.h \
src/RemoteWatcher.h \
src/BasicMainWindow.h \
+<<<<<<< HEAD
+ src/version.h
+=======
src/platform.h
+>>>>>>> 1577236553e0370f7ab2c4b5a5743bab35f93670
FORMS += \
src/MainWindow.ui \
src/ConfigCredentialHelperDialog.ui \
src/TextEditDialog.ui \
src/SettingsDialog.ui \
src/MergeBranchDialog.ui \
src/CloneDialog.ui \
src/AboutDialog.ui \
src/RepositoryPropertyDialog.ui \
src/CommitPropertyDialog.ui \
src/DeleteTagsDialog.ui \
src/SelectCommandDialog.ui \
src/FileDiffWidget.ui \
src/FileHistoryWindow.ui \
src/FilePropertyDialog.ui \
src/BigDiffWindow.ui \
src/CommitExploreWindow.ui \
src/SetRemoteUrlDialog.ui \
src/SetUserDialog.ui \
src/SearchFromGitHubDialog.ui \
src/JumpDialog.ui \
src/CheckoutDialog.ui \
src/DeleteBranchDialog.ui \
src/PushDialog.ui \
src/SettingExampleForm.ui \
src/CreateRepositoryDialog.ui \
src/ExperimentDialog.ui \
src/SettingNetworkForm.ui \
src/SettingBehaviorForm.ui \
src/SetGlobalUserDialog.ui \
src/ReflogWindow.ui \
src/BlameWindow.ui \
src/SettingGeneralForm.ui \
src/WelcomeWizardDialog.ui \
src/CommitViewWindow.ui \
src/EditRemoteDialog.ui \
src/SelectGpgKeyDialog.ui \
src/SetGpgSigningDialog.ui \
src/CommitDialog.ui \
src/ConfigSigningDialog.ui \
src/AreYouSureYouWantToContinueConnectingDialog.ui \
src/LineEditDialog.ui \
src/SettingProgramsForm.ui \
src/InputNewTagDialog.ui \
src/EditTagsDialog.ui \
src/EditGitIgnoreDialog.ui \
src/SelectItemDialog.ui \
src/RebaseOntoDialog.ui \
src/DoYouWantToInitDialog.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/thread.cpp \
src/win32/event.cpp \
src/win32/win32.cpp \
src/win32/Win32Process.cpp \
src/win32/Win32PtyProcess.cpp
HEADERS += \
src/win32/thread.h \
src/win32/event.h \
src/win32/mutex.h \
src/win32/win32.h \
src/win32/Win32Process.h \
src/win32/Win32PtyProcess.h
}
+
+
diff --git a/Guitar_ja.qm b/Guitar_ja.qm
deleted file mode 100644
index b0e0027..0000000
Binary files a/Guitar_ja.qm and /dev/null differ
diff --git a/Guitar_ja.ts b/Guitar_ja.ts
deleted file mode 100644
index 82afad1..0000000
--- a/Guitar_ja.ts
+++ /dev/null
@@ -1,2482 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1" language="ja_JP">
-<context>
- <name>AboutDialog</name>
- <message>
- <location filename="src/AboutDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/AboutDialog.ui" line="29"/>
- <location filename="src/AboutDialog.ui" line="36"/>
- <location filename="src/AboutDialog.ui" line="43"/>
- <location filename="src/AboutDialog.ui" line="50"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/AboutDialog.cpp" line="28"/>
- <source>About %1</source>
- <translation>%1 について</translation>
- </message>
-</context>
-<context>
- <name>AreYouSureYouWantToContinueConnectingDialog</name>
- <message>
- <location filename="src/AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
- <source>Unknown Host</source>
- <translation>不明なホスト</translation>
- </message>
- <message>
- <location filename="src/AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
- <source>Are you sure you want to continue connecting (yes/no)?</source>
- <translation>接続を続行しますか? (yes/no)?</translation>
- </message>
- <message>
- <location filename="src/AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
- <source>Continue</source>
- <translation>続行</translation>
- </message>
- <message>
- <location filename="src/AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
-</context>
-<context>
- <name>BasicRepositoryDialog</name>
- <message>
- <location filename="src/BasicRepositoryDialog.cpp" line="66"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/BasicRepositoryDialog.cpp" line="67"/>
- <source>Purpose</source>
- <translation>用途</translation>
- </message>
- <message>
- <location filename="src/BasicRepositoryDialog.cpp" line="68"/>
- <source>URL</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>BigDiffWindow</name>
- <message>
- <location filename="src/BigDiffWindow.ui" line="14"/>
- <source>Diff</source>
- <translation>差分</translation>
- </message>
-</context>
-<context>
- <name>BlameWindow</name>
- <message>
- <location filename="src/BlameWindow.ui" line="14"/>
- <source>Blame</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="45"/>
- <source>Information</source>
- <translation>情報</translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="60"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="70"/>
- <source>Date</source>
- <translation>日付</translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="90"/>
- <source>Message</source>
- <translation>メッセージ</translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="80"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/BlameWindow.ui" line="118"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
-</context>
-<context>
- <name>CheckoutDialog</name>
- <message>
- <location filename="src/CheckoutDialog.ui" line="14"/>
- <source>Checkout</source>
- <translation>チェックアウト</translation>
- </message>
- <message>
- <location filename="src/CheckoutDialog.ui" line="20"/>
- <location filename="src/CheckoutDialog.ui" line="27"/>
- <location filename="src/CheckoutDialog.ui" line="34"/>
- <source>RadioButton</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CheckoutDialog.ui" line="63"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CheckoutDialog.ui" line="70"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>CloneDialog</name>
- <message>
- <location filename="src/CloneDialog.ui" line="14"/>
- <location filename="src/CloneDialog.ui" line="103"/>
- <source>Clone</source>
- <translation>クローン</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="22"/>
- <source>Remote</source>
- <translation>リモート</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="39"/>
- <source>&Test</source>
- <translation>テスト(&T)</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="46"/>
- <source>Local</source>
- <translation>ローカル</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="56"/>
- <source>Browse</source>
- <translation>参照</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="83"/>
- <source>Open existing local directory...</source>
- <translation>既存のフォルダを開く...</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.ui" line="113"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.cpp" line="40"/>
- <source>Search</source>
- <translation>検索</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.cpp" line="41"/>
- <source>GitHub</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CloneDialog.cpp" line="108"/>
- <source>Checkout into</source>
- <translation>ここにチェックアウト</translation>
- </message>
- <message>
- <location filename="src/CloneDialog.cpp" line="120"/>
- <source>Open existing directory</source>
- <translation>既存のフォンるだを開く</translation>
- </message>
-</context>
-<context>
- <name>CommitDialog</name>
- <message>
- <location filename="src/CommitDialog.ui" line="14"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="27"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="49"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="68"/>
- <location filename="src/CommitDialog.ui" line="94"/>
- <location filename="src/CommitDialog.ui" line="139"/>
- <location filename="src/CommitDialog.ui" line="159"/>
- <location filename="src/CommitDialog.ui" line="179"/>
- <source>---</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="75"/>
- <location filename="src/CommitDialog.ui" line="166"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="111"/>
- <source>GPG Signing</source>
- <translation>GPG署名</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="126"/>
- <source>ID</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="146"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="189"/>
- <source>Configure...</source>
- <translation>設定...</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="198"/>
- <source>Message</source>
- <translation>メッセージ</translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="223"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CommitDialog.ui" line="233"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>CommitExploreWindow</name>
- <message>
- <location filename="src/CommitExploreWindow.ui" line="14"/>
- <source>Commit Explorer</source>
- <translation>コミットエクスプローラー</translation>
- </message>
- <message>
- <location filename="src/CommitExploreWindow.ui" line="65"/>
- <source>Commit ID</source>
- <translation>コミットID</translation>
- </message>
- <message>
- <location filename="src/CommitExploreWindow.ui" line="82"/>
- <source>Date</source>
- <translation>日付</translation>
- </message>
- <message>
- <location filename="src/CommitExploreWindow.ui" line="89"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CommitExploreWindow.cpp" line="80"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
-</context>
-<context>
- <name>CommitPropertyDialog</name>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="14"/>
- <source>Commit Property</source>
- <oldsource>Commit Properties</oldsource>
- <translation>コミットのプロパティ</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="46"/>
- <source>Date</source>
- <translation>日付</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="56"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="66"/>
- <location filename="src/CommitPropertyDialog.ui" line="196"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="154"/>
- <source>GPG Sign</source>
- <translation>GPG署名</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="176"/>
- <source>ID</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="186"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="233"/>
- <source>Commit ID</source>
- <translation>コミットID</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="243"/>
- <source>Parent IDs</source>
- <translation>親ID</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="265"/>
- <source>Files...</source>
- <translation>ファイル...</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="285"/>
- <source>Explorer</source>
- <translation>エクスプローラ</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="305"/>
- <source>Checkout</source>
- <translation>チェックアウト</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="312"/>
- <source>Jump</source>
- <translation>移動</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.ui" line="332"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
- <message>
- <location filename="src/CommitPropertyDialog.cpp" line="59"/>
- <source><Unknown></source>
- <translation><不明></translation>
- </message>
-</context>
-<context>
- <name>CommitViewWindow</name>
- <message>
- <location filename="src/CommitViewWindow.ui" line="14"/>
- <source>Commit View</source>
- <translation>コミットビュー</translation>
- </message>
- <message>
- <location filename="src/CommitViewWindow.cpp" line="58"/>
- <source>History</source>
- <translation>履歴</translation>
- </message>
-</context>
-<context>
- <name>ConfigCredentialHelperDialog</name>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="26"/>
- <source>wincred</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="39"/>
- <source>winstore</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="52"/>
- <source>None</source>
- <translation>なし</translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="65"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="78"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/ConfigCredentialHelperDialog.ui" line="91"/>
- <source>Other</source>
- <translation>その他</translation>
- </message>
-</context>
-<context>
- <name>ConfigSigningDialog</name>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="14"/>
- <source>Signing Policy</source>
- <translation>署名ポリシー</translation>
- </message>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="20"/>
- <source>Config commit.gpgsign</source>
- <translation>commit.gpgsign の設定</translation>
- </message>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="32"/>
- <source>global</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="42"/>
- <source>local</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="70"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ConfigSigningDialog.ui" line="77"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>CreateRepositoryDialog</name>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="14"/>
- <location filename="src/CreateRepositoryDialog.cpp" line="42"/>
- <location filename="src/CreateRepositoryDialog.cpp" line="46"/>
- <location filename="src/CreateRepositoryDialog.cpp" line="50"/>
- <location filename="src/CreateRepositoryDialog.cpp" line="54"/>
- <source>Create Repository</source>
- <translation>リポジトリの作成</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="22"/>
- <source>Path</source>
- <translation>パス</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="32"/>
- <source>Browse</source>
- <translation>参照</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="54"/>
- <source>Bookmark</source>
- <translation>ブックマーク</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="63"/>
- <location filename="src/CreateRepositoryDialog.ui" line="88"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="76"/>
- <source>Remote</source>
- <translation>リモート</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="98"/>
- <source>URL</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="108"/>
- <source>Test</source>
- <translation>テスト</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="146"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.ui" line="153"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.cpp" line="19"/>
- <source>A valid git repository already exists there.</source>
- <translation>有効なリポジトリが既に存在しています。</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.cpp" line="42"/>
- <location filename="src/CreateRepositoryDialog.cpp" line="50"/>
- <source>The specified path is not a directory.</source>
- <translation>指定されたパスはフォルダではありません。</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.cpp" line="54"/>
- <source>Remote name is invalid.</source>
- <translation>リモート名が無効です。</translation>
- </message>
- <message>
- <location filename="src/CreateRepositoryDialog.cpp" line="62"/>
- <source>Destination Path</source>
- <translation>作成先のパス</translation>
- </message>
-</context>
-<context>
- <name>DeleteBranchDialog</name>
- <message>
- <location filename="src/DeleteBranchDialog.ui" line="14"/>
- <source>Delete Branch</source>
- <translation>ブランチの削除</translation>
- </message>
- <message>
- <location filename="src/DeleteBranchDialog.ui" line="25"/>
- <source>&All branches</source>
- <translation>全てのブランチ(&A)</translation>
- </message>
- <message>
- <location filename="src/DeleteBranchDialog.ui" line="45"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/DeleteBranchDialog.ui" line="52"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/DeleteBranchDialog.cpp" line="23"/>
- <source>Delete Remote Branch</source>
- <translation>リモートブランチの削除</translation>
- </message>
-</context>
-<context>
- <name>DeleteTagsDialog</name>
- <message>
- <location filename="src/DeleteTagsDialog.ui" line="14"/>
- <source>Delete tags</source>
- <translation>タグを削除</translation>
- </message>
- <message>
- <location filename="src/DeleteTagsDialog.ui" line="32"/>
- <source>Check all</source>
- <translation>全てチェック</translation>
- </message>
- <message>
- <location filename="src/DeleteTagsDialog.ui" line="52"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/DeleteTagsDialog.ui" line="62"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>DoYouWantToInitDialog</name>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="14"/>
- <source>Init Repository</source>
- <translation>リポジトリの初期化</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="20"/>
- <source>The folder:</source>
- <translation>フォルダ:</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="32"/>
- <source>is not a valid git working copy.</source>
- <translation>は、有効なGitリポジトリではありません。</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="39"/>
- <source>Do you want to init it as a git repository ?</source>
- <translation>これをGitリポジトリとして初期化しますか?</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="81"/>
- <source>Yes, Please init it.</source>
- <translation>はい、初期化します。</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="88"/>
- <source>No, Stop it.</source>
- <translation>いいえ、初期化しません。</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.ui" line="140"/>
- <source>Please choose option</source>
- <translation>選択してください</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.cpp" line="20"/>
- <source>Next...</source>
- <translation>次へ...</translation>
- </message>
- <message>
- <location filename="src/DoYouWantToInitDialog.cpp" line="26"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>EditGitIgnoreDialog</name>
- <message>
- <location filename="src/EditGitIgnoreDialog.ui" line="14"/>
- <source>Edit Git Ignore</source>
- <translation>Gitで無視するファイルの編集</translation>
- </message>
- <message>
- <location filename="src/EditGitIgnoreDialog.ui" line="20"/>
- <location filename="src/EditGitIgnoreDialog.ui" line="27"/>
- <location filename="src/EditGitIgnoreDialog.ui" line="34"/>
- <location filename="src/EditGitIgnoreDialog.ui" line="41"/>
- <source>RadioButton</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/EditGitIgnoreDialog.ui" line="63"/>
- <source>Edit the file</source>
- <translation>ファイルを編集する</translation>
- </message>
- <message>
- <location filename="src/EditGitIgnoreDialog.ui" line="83"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/EditGitIgnoreDialog.ui" line="90"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>EditRemoteDialog</name>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="14"/>
- <source>Edit Remote</source>
- <translation>リモートの編集</translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="20"/>
- <source>Remote</source>
- <translation>リモート</translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="26"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="33"/>
- <source>URL</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="53"/>
- <source>&Test</source>
- <translation>テスト(&T)</translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="81"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/EditRemoteDialog.ui" line="88"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
-</context>
-<context>
- <name>EditTagsDialog</name>
- <message>
- <location filename="src/EditTagsDialog.ui" line="14"/>
- <source>Edit Tags</source>
- <translation>タグの編集</translation>
- </message>
- <message>
- <location filename="src/EditTagsDialog.ui" line="41"/>
- <source>Add...</source>
- <translation>追加...</translation>
- </message>
- <message>
- <location filename="src/EditTagsDialog.ui" line="48"/>
- <source>Delete</source>
- <translation>削除</translation>
- </message>
- <message>
- <location filename="src/EditTagsDialog.ui" line="68"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
-</context>
-<context>
- <name>ExperimentDialog</name>
- <message>
- <location filename="src/ExperimentDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>FileDiffWidget</name>
- <message>
- <location filename="src/FileDiffWidget.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>FileHistoryWindow</name>
- <message>
- <location filename="src/FileHistoryWindow.ui" line="14"/>
- <source>File History</source>
- <translation>ファイルの履歴</translation>
- </message>
- <message>
- <location filename="src/FileHistoryWindow.ui" line="20"/>
- <location filename="src/FileHistoryWindow.ui" line="27"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/FileHistoryWindow.cpp" line="112"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
- <message>
- <location filename="src/FileHistoryWindow.cpp" line="113"/>
- <source>Date</source>
- <translation>日付</translation>
- </message>
- <message>
- <location filename="src/FileHistoryWindow.cpp" line="114"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/FileHistoryWindow.cpp" line="115"/>
- <source>Description</source>
- <translation>概要</translation>
- </message>
-</context>
-<context>
- <name>FilePropertyDialog</name>
- <message>
- <location filename="src/FilePropertyDialog.ui" line="14"/>
- <source>File Property</source>
- <oldsource>File Properties</oldsource>
- <translation>ファイルのプロパティ</translation>
- </message>
- <message>
- <location filename="src/FilePropertyDialog.ui" line="78"/>
- <source>&Close</source>
- <translation>閉じる(&C)</translation>
- </message>
-</context>
-<context>
- <name>FileViewWidget</name>
- <message>
- <location filename="src/FileViewWidget.cpp" line="31"/>
- <source>Form</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>InputNewTagDialog</name>
- <message>
- <location filename="src/InputNewTagDialog.ui" line="14"/>
- <source>Edit tag</source>
- <translation>タグの編集</translation>
- </message>
- <message>
- <location filename="src/InputNewTagDialog.ui" line="31"/>
- <source>Tag</source>
- <translation>タグ</translation>
- </message>
- <message>
- <location filename="src/InputNewTagDialog.ui" line="58"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/InputNewTagDialog.ui" line="65"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>JumpDialog</name>
- <message>
- <location filename="src/JumpDialog.ui" line="14"/>
- <source>Jump</source>
- <translation>移動</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="24"/>
- <source>Branches and Tags</source>
- <translation>ブランチとタグ</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="47"/>
- <source>&Filter</source>
- <translation>フィルタ(&F)</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="98"/>
- <source>Find</source>
- <translation>検索</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="126"/>
- <source>&Checkout</source>
- <translation>チェックアウト(&C)</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="146"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/JumpDialog.ui" line="153"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/JumpDialog.cpp" line="28"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
-</context>
-<context>
- <name>LineEditDialog</name>
- <message>
- <location filename="src/LineEditDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/LineEditDialog.ui" line="20"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/LineEditDialog.ui" line="45"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/LineEditDialog.ui" line="52"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>MainWindow</name>
- <message>
- <location filename="src/MainWindow.ui" line="14"/>
- <source>Guitar</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="96"/>
- <location filename="src/MainWindow.ui" line="1339"/>
- <location filename="src/MainWindow.ui" line="1342"/>
- <location filename="src/MainWindow.cpp" line="3569"/>
- <location filename="src/MainWindow.cpp" line="3574"/>
- <location filename="src/MainWindow.cpp" line="3591"/>
- <location filename="src/MainWindow.cpp" line="3596"/>
- <source>Clone</source>
- <translation>クローン</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="131"/>
- <source>Fetch</source>
- <translation>フェッチ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="166"/>
- <source>Pull</source>
- <translation>プル</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="201"/>
- <source>Push</source>
- <translation>プッシュ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="252"/>
- <source>Terminal</source>
- <translation>端末</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="287"/>
- <source>Explorer</source>
- <translation>エクスプローラ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="373"/>
- <source>Repository</source>
- <translation>リポジトリ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="380"/>
- <source>Branch Name</source>
- <translation>ブランチ名</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="422"/>
- <source>Offline</source>
- <translation>オフライン</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="432"/>
- <source>Online</source>
- <translation>オンライン</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="648"/>
- <source>PushButton</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="762"/>
- <location filename="src/MainWindow.cpp" line="2584"/>
- <source>Unstage</source>
- <translation>除外</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="791"/>
- <source>Select all</source>
- <translation>全て選択</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="826"/>
- <location filename="src/MainWindow.cpp" line="2454"/>
- <source>Stage</source>
- <translation>追加</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="855"/>
- <location filename="src/MainWindow.cpp" line="1331"/>
- <location filename="src/MainWindow.cpp" line="1993"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="986"/>
- <source>&File</source>
- <translation>ファイル(&F)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="998"/>
- <source>&View</source>
- <translation>表示(&V)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1004"/>
- <source>&Edit</source>
- <translation>編集(&E)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1330"/>
- <source>Settings</source>
- <translation>設定</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1352"/>
- <location filename="src/MainWindow.cpp" line="2318"/>
- <source>Edit tags...</source>
- <translation>タグの編集...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1355"/>
- <source>Edit tags</source>
- <translation>タグの編集</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1401"/>
- <source>reset HEAD~1</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1406"/>
- <source>Create a repository</source>
- <translation>リポジトリの作成</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1415"/>
- <source>Stop process</source>
- <translation>処理の停止</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1420"/>
- <source>E&xit</source>
- <translation>終了(&X)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1423"/>
- <source>Ctrl+Q</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1428"/>
- <source>Reflog...</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1433"/>
- <source>Property...</source>
- <translation>プロパティ...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1438"/>
- <location filename="src/MainWindow.ui" line="1441"/>
- <source>Set GPG signing</source>
- <translation>GPS署名の指定</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1016"/>
- <source>&Help</source>
- <translation>ヘルプ(&H)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1022"/>
- <source>&Window</source>
- <translation>ウィンドウ(&W)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1028"/>
- <source>&Repository</source>
- <translation>リポジトリ(&R)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1049"/>
- <source>Experiment</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1076"/>
- <source>Log</source>
- <translation>ログ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1243"/>
- <source>&Open existing working copy...</source>
- <translation>既存の作業コピーを開く(&O)...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1246"/>
- <location filename="src/MainWindow.cpp" line="2731"/>
- <source>Add existing working copy</source>
- <translation>既存の作業コピーを追加</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1251"/>
- <location filename="src/MainWindow.ui" line="1254"/>
- <source>Refresh</source>
- <translation>更新</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1257"/>
- <source>F5</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1266"/>
- <source>&Commit</source>
- <translation>コミット(&C)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1275"/>
- <source>&Push</source>
- <translation>プッシュ(&P)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1283"/>
- <source>test</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1286"/>
- <source>Ctrl+T</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1295"/>
- <source>Pu&ll</source>
- <translation>プル(&L)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1304"/>
- <source>&Fetch</source>
- <translation>フェッチ(&F)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1309"/>
- <location filename="src/MainWindow.ui" line="1312"/>
- <source>Edit global .gitconfig</source>
- <translation>グローバル .gitignore を編集</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1317"/>
- <source>Edit .git/config</source>
- <translation>.git/config を編集</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1322"/>
- <source>Edit .gitignore</source>
- <translation>.gitignore を編集</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1327"/>
- <source>&Settings...</source>
- <translation>設定(&S)...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1378"/>
- <source>&Jump...</source>
- <translation>移動(&J)...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1381"/>
- <source>Ctrl+J</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1386"/>
- <source>Check&out...</source>
- <translation>チェックアウト(&O)...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1391"/>
- <location filename="src/MainWindow.cpp" line="2330"/>
- <source>Delete branch...</source>
- <translation>ブランチの削除...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1396"/>
- <source>Push --set-upstream</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1446"/>
- <location filename="src/MainWindow.cpp" line="2331"/>
- <source>Delete remote branch...</source>
- <translation>リモートブランチの削除...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1451"/>
- <source>rebase onto</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1347"/>
- <source>&About</source>
- <translation>Guitarについて(&A)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1360"/>
- <source>Push all tags</source>
- <translation>全てのタグをプッシュ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1365"/>
- <source>Set config user</source>
- <translation>ユーザー情報を設定</translation>
- </message>
- <message>
- <location filename="src/MainWindow.ui" line="1373"/>
- <source>&Log</source>
- <translation>ログ(&L)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="769"/>
- <source>Unnamed</source>
- <translation>無名</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1047"/>
- <source>Default</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1330"/>
- <source>Graph</source>
- <translation>樹形図</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1332"/>
- <source>Date</source>
- <translation>日付</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1333"/>
- <source>Author</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1334"/>
- <source>Description</source>
- <translation>概要</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1516"/>
- <source>, %1 ahead</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1519"/>
- <source>, %1 behind</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1745"/>
- <location filename="src/MainWindow.cpp" line="2046"/>
- <source>Uncommited changes</source>
- <translation>コミットされていない変更があります</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1832"/>
- <source>Confirm Remove</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1832"/>
- <source>Are you sure you want to remove the repository from bookmarks ?</source>
- <translation>リポジトリをブックマークから削除してよろしいですか?</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1832"/>
- <source>(Files will NOT be deleted)</source>
- <translation>(ファルは削除されません)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1853"/>
- <location filename="src/MainWindow.cpp" line="1860"/>
- <source>Open Repository</source>
- <translation>リポジトリを開く</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1853"/>
- <source>No such folder</source>
- <translation>そのようなフォルダはありません</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1853"/>
- <source>Remove from bookmark ?</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1860"/>
- <location filename="src/MainWindow.cpp" line="2072"/>
- <source>Not a valid git repository</source>
- <translation>有効なリポジトリではありません</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="1993"/>
- <source>Commit message can not be omitted.</source>
- <translation>コミットメッセージを空にすることはできません。</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2072"/>
- <source>Repository Property</source>
- <translation>リポジトリのプロパティ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2209"/>
- <source>&Add new group</source>
- <translation>新しいグループを追加(&A)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2210"/>
- <source>&Delete group</source>
- <translation>グループを削除(&D)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2211"/>
- <source>&Rename group</source>
- <translation>グループ名の変更(&R)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2216"/>
- <source>New group</source>
- <translation>新しいグループ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2240"/>
- <source>Open &terminal</source>
- <translation>端末を開く(&T)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2241"/>
- <source>Open command promp&t</source>
- <translation>コマンドプロンプトを開く(&T)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2243"/>
- <source>&Open</source>
- <translation>開く(&O)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2252"/>
- <source>Open &folder</source>
- <translation>フォルダを開く(&F)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2254"/>
- <source>&Remove</source>
- <translation>削除(&R)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2301"/>
- <source>Copy commit id (7 letters)</source>
- <translation>コミットIDをコピー(7文字)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2302"/>
- <source>Copy commit id (completely)</source>
- <translation>コミットIDをコピー(すべて)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2312"/>
- <source>Edit comment...</source>
- <translation>コメントを編集...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2316"/>
- <location filename="src/MainWindow.cpp" line="4250"/>
- <source>Rebase</source>
- <translation>リベース</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2335"/>
- <source>Explore</source>
- <translation>探索</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2324"/>
- <source>Reset HEAD</source>
- <translation>HEADをリセット</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2410"/>
- <location filename="src/MainWindow.cpp" line="2459"/>
- <location filename="src/MainWindow.cpp" line="2585"/>
- <source>History</source>
- <translation>履歴</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4760"/>
- <source>Authentication Failed</source>
- <translation>認証が失敗しました</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2319"/>
- <source>Revert</source>
- <translation>変更を破棄する</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2008"/>
- <source>Failed to commit</source>
- <translation>コミット失敗</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2110"/>
- <source>No remote repository is registered.</source>
- <translation>リモートリポジトリが登録されていません。</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2132"/>
- <source>The current branch %1 has no upstream branch.</source>
- <translation>現在のブランチ「%1」には上流ブランチがありません。</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2135"/>
- <source>You try push --set-upstream</source>
- <translation>--set-upstream を試してください</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2141"/>
- <location filename="src/MainWindow.cpp" line="4373"/>
- <source>Connection refused.</source>
- <translation>接続が拒否されました。</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2190"/>
- <source>&Property</source>
- <translation>プロパティ(&P)</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2306"/>
- <source>Checkout/Branch...</source>
- <translation>チェックアウト/ブランチ...</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2315"/>
- <source>Merge</source>
- <translation>マージ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2317"/>
- <source>Cherry-pick</source>
- <translation>チェリーピック</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2409"/>
- <location filename="src/MainWindow.cpp" line="2458"/>
- <source>Untrack</source>
- <translation>追跡しない</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2411"/>
- <location filename="src/MainWindow.cpp" line="2460"/>
- <location filename="src/MainWindow.cpp" line="2586"/>
- <source>Blame</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2419"/>
- <source>Delete selected files.</source>
- <translation>選択されたファイルを削除します。</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2430"/>
- <source>rm --cached files</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2455"/>
- <source>Reset</source>
- <translation>リセット</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2456"/>
- <source>Ignore</source>
- <translation>無視する</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2625"/>
- <source>Reset a file</source>
- <translation>ファイルをリセットします</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4247"/>
- <source>Are you sure you want to rebase the commit ?</source>
- <translation>コミットをリベースしてよろしいですか?</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4299"/>
- <source>No repository selected</source>
- <translation>リポジトリが選択されていません</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2408"/>
- <location filename="src/MainWindow.cpp" line="2457"/>
- <source>Delete</source>
- <translation>削除</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2609"/>
- <source>Are you sure you want to run the following command ?</source>
- <translation>次のコマンドを実行してよろしいですか?</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="2640"/>
- <source>Revert all files</source>
- <translation>すべてのファイルの変更を破棄</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3278"/>
- <source>Select %1 command</source>
- <translation>%1 コマンドの選択</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3568"/>
- <source>A file with same name already exists</source>
- <translation>同じ名前のファイルが既に存在しています</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3573"/>
- <source>A folder with same name already exists</source>
- <translation>同じ名前のフォルダが既に存在しています</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3590"/>
- <source>Invalid folder</source>
- <translation>無効なフォルダ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3595"/>
- <source>No such folder. Create it now ?</source>
- <translation>このフォルダはありません。作成しますか?</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3959"/>
- <source>The URL is a valid repository</source>
- <translation>このURLは有効なリポジトリです</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3960"/>
- <source>Failed to access the URL</source>
- <translation>このURLへのアクセスに失敗しました</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="3965"/>
- <source>Remote Repository</source>
- <translation>リモートリポジトリ</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4098"/>
- <source>Jump</source>
- <translation>移動</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4098"/>
- <source>That commmit has not foud or not read yet</source>
- <translation>そのコミットは、見つからないか、まだ読み込まれていません</translation>
- </message>
- <message>
- <location filename="src/MainWindow.cpp" line="4220"/>
- <source>Failed to delete the branch '%1'
-</source>
- <translation>ブランチの削除に失敗しました : '%1'</translation>
- </message>
-</context>
-<context>
- <name>MergeBranchDialog</name>
- <message>
- <location filename="src/MergeBranchDialog.ui" line="14"/>
- <source>Merge</source>
- <translation>マージ</translation>
- </message>
- <message>
- <location filename="src/MergeBranchDialog.ui" line="26"/>
- <source>Current branch :</source>
- <translation>現在のブランチ :</translation>
- </message>
- <message>
- <location filename="src/MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MergeBranchDialog.ui" line="62"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/MergeBranchDialog.ui" line="75"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>MyImageViewWidget</name>
- <message>
- <location filename="src/MyImageViewWidget.cpp" line="35"/>
- <source>Save as...</source>
- <translation>名前を付けて保存...</translation>
- </message>
- <message>
- <location filename="src/MyImageViewWidget.cpp" line="42"/>
- <source>Save as</source>
- <translation>名前を付けて保存</translation>
- </message>
-</context>
-<context>
- <name>MyTextEditorWidget</name>
- <message>
- <location filename="src/MyTextEditorWidget.cpp" line="35"/>
- <source>Save as...</source>
- <translation>名前を付けて保存...</translation>
- </message>
- <message>
- <location filename="src/MyTextEditorWidget.cpp" line="36"/>
- <source>Copy</source>
- <translation>コピー</translation>
- </message>
- <message>
- <location filename="src/MyTextEditorWidget.cpp" line="43"/>
- <source>Save as</source>
- <translation>名前を付けて保存</translation>
- </message>
-</context>
-<context>
- <name>PushDialog</name>
- <message>
- <location filename="src/PushDialog.ui" line="14"/>
- <source>Push</source>
- <translation>プッシュ</translation>
- </message>
- <message>
- <location filename="src/PushDialog.ui" line="20"/>
- <source>push --set-upstream</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/PushDialog.ui" line="26"/>
- <source>Remote</source>
- <translation>リモート</translation>
- </message>
- <message>
- <location filename="src/PushDialog.ui" line="33"/>
- <source>Branch</source>
- <translation>ブランチ</translation>
- </message>
- <message>
- <location filename="src/PushDialog.ui" line="64"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/PushDialog.ui" line="71"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>RebaseOntoDialog</name>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="14"/>
- <source>Rebase onto</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="22"/>
- <source>New base</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="32"/>
- <source>Upstream</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="42"/>
- <source>Branch</source>
- <translation>ブランチ</translation>
- </message>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="82"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/RebaseOntoDialog.ui" line="89"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>ReflogWindow</name>
- <message>
- <location filename="src/ReflogWindow.ui" line="14"/>
- <source>Reflog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.ui" line="57"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="35"/>
- <source>Commit</source>
- <translation>コミット</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="36"/>
- <source>Head</source>
- <translation>ヘッド</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="37"/>
- <source>Command</source>
- <translation>コマンド</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="38"/>
- <source>Comment</source>
- <translation>コメント</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="98"/>
- <source>Checkout</source>
- <translation>チェックアウト</translation>
- </message>
- <message>
- <location filename="src/ReflogWindow.cpp" line="99"/>
- <source>Explorer</source>
- <translation>エクスプローラ</translation>
- </message>
-</context>
-<context>
- <name>RemoteRepositoriesTableWidget</name>
- <message>
- <location filename="src/RemoteRepositoriesTableWidget.cpp" line="27"/>
- <source>Copy URL</source>
- <translation>URLをコピー</translation>
- </message>
-</context>
-<context>
- <name>RepositoryPropertyDialog</name>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="14"/>
- <source>Repository Property</source>
- <oldsource>Repository Properties</oldsource>
- <translation>リポジトリのプロパティ</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="65"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="95"/>
- <source>Local dir :</source>
- <translation>ローカルフォルダ :</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="114"/>
- <source>Remote URLs</source>
- <translation>リモートURL</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="124"/>
- <source>Remote</source>
- <translation>リモート</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="130"/>
- <source>Add</source>
- <translation>追加</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="137"/>
- <source>Edit</source>
- <translation>編集</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="157"/>
- <source>Remove</source>
- <translation>削除</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="169"/>
- <source>&Remote menu</source>
- <translation>リモートメニュー(&R)</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.ui" line="189"/>
- <source>Close</source>
- <translation>閉じる</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.cpp" line="128"/>
- <source>Confirm Remove</source>
- <translation>削除の確認</translation>
- </message>
- <message>
- <location filename="src/RepositoryPropertyDialog.cpp" line="128"/>
- <source>Are you sure you want to remove the remote '%1' from the repository '%2' ?</source>
- <translation>リポジトリ「%2」からリモート「%1」を削除してよろしいですか?</translation>
- </message>
-</context>
-<context>
- <name>SearchFromGitHubDialog</name>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="14"/>
- <source>Search From GitHub</source>
- <translation>GitHubから検索</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="25"/>
- <source>Search</source>
- <translation>検索</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="78"/>
- <source>ssh</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="88"/>
- <source>http</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="115"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.ui" line="122"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.cpp" line="58"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.cpp" line="59"/>
- <source>Owner</source>
- <translation>オーナー</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.cpp" line="60"/>
- <source>Score</source>
- <translation>スコア</translation>
- </message>
- <message>
- <location filename="src/SearchFromGitHubDialog.cpp" line="61"/>
- <source>Description</source>
- <translation>概要</translation>
- </message>
-</context>
-<context>
- <name>SelectCommandDialog</name>
- <message>
- <location filename="src/SelectCommandDialog.ui" line="14"/>
- <source>Select git command</source>
- <translation>git コマンドの選択</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.ui" line="20"/>
- <source>TextLabel</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.ui" line="32"/>
- <source>&Browse...</source>
- <translation>参照(&B)...</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.ui" line="52"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.ui" line="59"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.cpp" line="29"/>
- <source>Please select the '%1' command you want to use.</source>
- <translation>使用したい '%1' コマンドを選択してください。</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.cpp" line="58"/>
- <location filename="src/SelectCommandDialog.cpp" line="65"/>
- <source>%1 command (%2);;</source>
- <translation>%1 コマンド (%2);;</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.cpp" line="60"/>
- <source>Executable files (*.exe)</source>
- <translation>実行可能ファイル (*.exe)</translation>
- </message>
- <message>
- <location filename="src/SelectCommandDialog.cpp" line="71"/>
- <source>%1 command</source>
- <translation>%1 コマンド</translation>
- </message>
-</context>
-<context>
- <name>SelectGpgKeyDialog</name>
- <message>
- <location filename="src/SelectGpgKeyDialog.ui" line="14"/>
- <source>Select GPG Key</source>
- <translation>GPGキーの選択</translation>
- </message>
- <message>
- <location filename="src/SelectGpgKeyDialog.ui" line="57"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectGpgKeyDialog.ui" line="64"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/SelectGpgKeyDialog.cpp" line="31"/>
- <source>ID</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectGpgKeyDialog.cpp" line="32"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SelectGpgKeyDialog.cpp" line="33"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
-</context>
-<context>
- <name>SelectItemDialog</name>
- <message>
- <location filename="src/SelectItemDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectItemDialog.ui" line="25"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SelectItemDialog.ui" line="32"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>SetGlobalUserDialog</name>
- <message>
- <location filename="src/SetGlobalUserDialog.ui" line="14"/>
- <source>Global User Setting</source>
- <translation>グローバルユーザー設定</translation>
- </message>
- <message>
- <location filename="src/SetGlobalUserDialog.ui" line="31"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SetGlobalUserDialog.ui" line="41"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/SetGlobalUserDialog.ui" line="68"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetGlobalUserDialog.ui" line="78"/>
- <source>Skip</source>
- <translation>スキップ</translation>
- </message>
-</context>
-<context>
- <name>SetGpgSigningDialog</name>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="14"/>
- <source>Set GPG Signing</source>
- <translation>GPG署名の指定</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="26"/>
- <source>Global</source>
- <translation>グローバル</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="39"/>
- <location filename="src/SetGpgSigningDialog.cpp" line="29"/>
- <source>Repository</source>
- <translation>リポジトリ</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="61"/>
- <source>ID</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="71"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="81"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="93"/>
- <source>Select</source>
- <translation>選択</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="113"/>
- <source>Clear</source>
- <translation>消去</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="127"/>
- <source>Configure...</source>
- <translation>設定...</translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="147"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetGpgSigningDialog.ui" line="154"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>SetRemoteUrlDialog</name>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="14"/>
- <source>Set Remote URL</source>
- <translation>リモートURLの設定</translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="20"/>
- <source>Current URLs</source>
- <translation>現在のURL</translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="30"/>
- <source>New URL</source>
- <translation>新しいURL</translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="36"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="91"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="98"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="43"/>
- <source>URL</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetRemoteUrlDialog.ui" line="63"/>
- <source>&Test</source>
- <translation>テスト(&T)</translation>
- </message>
-</context>
-<context>
- <name>SetUserDialog</name>
- <message>
- <location filename="src/SetUserDialog.ui" line="14"/>
- <source>Set User</source>
- <translation>ユーザーの設定</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="20"/>
- <source>Global</source>
- <translation>グローバル</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="27"/>
- <location filename="src/SetUserDialog.cpp" line="31"/>
- <source>Repository</source>
- <translation>リポジトリ</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="42"/>
- <source>Name</source>
- <translation>名前</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="52"/>
- <source>Mail</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="66"/>
- <source>Get icon from Gravatar</source>
- <translation>Gravatarからアイコンを取得</translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="122"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SetUserDialog.ui" line="132"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>SettingBehaviorForm</name>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="14"/>
- <source>Behavior</source>
- <translation>動作</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="20"/>
- <location filename="src/SettingBehaviorForm.cpp" line="77"/>
- <source>Default working folder</source>
- <translation>既定の作業フォルダ</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="29"/>
- <source>Browse...</source>
- <translation>参照...</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="39"/>
- <source>Automatically fetch when opening the repository</source>
- <translation>リポジトリを開くとき自動的にフェッチする</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="46"/>
- <source>Get committer's icon from gravatar.com</source>
- <translation>gravatar.comからアイコンを取得する</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="61"/>
- <source>Maximum number of commit item acquisitions</source>
- <translation>取得するコミット情報の最大個数</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="88"/>
- <source>Watch remote changes periodically</source>
- <oldsource>Periodically watch remote updates</oldsource>
- <translation>定期的リモートの変更を監視する</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="108"/>
- <source>interval</source>
- <oldsource>interval in min:</oldsource>
- <translation>間隔</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="128"/>
- <source>GPG signing policy</source>
- <oldsource>GPG Signing Policy</oldsource>
- <translation>GPG署名ポリシー</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.ui" line="135"/>
- <source>Configure...</source>
- <translation>設定...</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.cpp" line="38"/>
- <source>Disable</source>
- <translation>無効</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.cpp" line="40"/>
- <source>1 min</source>
- <translation>1分</translation>
- </message>
- <message>
- <location filename="src/SettingBehaviorForm.cpp" line="42"/>
- <source>%1 mins</source>
- <translation>%1分</translation>
- </message>
-</context>
-<context>
- <name>SettingExampleForm</name>
- <message>
- <location filename="src/SettingExampleForm.ui" line="14"/>
- <source>Example</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SettingExampleForm.ui" line="20"/>
- <source>Underconstruction</source>
- <translation></translation>
- </message>
-</context>
-<context>
- <name>SettingGeneralForm</name>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="14"/>
- <source>General</source>
- <translation>一般</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="20"/>
- <source>Language</source>
- <translation>言語</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="31"/>
- <source>Change Language...</source>
- <translation>言語の変更...</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="54"/>
- <source>Change Theme...</source>
- <translation>テーマの変更...</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="66"/>
- <source>Remember and restore window position</source>
- <translation>ウィンドウの位置を記憶し復元する</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="73"/>
- <source>Enable high DPI scaling</source>
- <translation>高精細画面のスケーリングを行う</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="43"/>
- <source>Theme</source>
- <translation>テーマ</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="16"/>
- <source>English</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="17"/>
- <source>Japanese</source>
- <translation>日本語</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="19"/>
- <source>Standard</source>
- <translation>標準</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="20"/>
- <source>Dark</source>
- <translation>ダーク</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="78"/>
- <source>Select Language</source>
- <translation>言語の選択</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.cpp" line="97"/>
- <source>Select Theme</source>
- <translation>テーマの選択</translation>
- </message>
- <message>
- <location filename="src/SettingGeneralForm.ui" line="93"/>
- <source>(Changes are applied at next run)</source>
- <translation>(設定は次の実行時に有効になります)</translation>
- </message>
-</context>
-<context>
- <name>SettingNetworkForm</name>
- <message>
- <location filename="src/SettingNetworkForm.ui" line="14"/>
- <source>Network</source>
- <translation>ネットワーク</translation>
- </message>
- <message>
- <location filename="src/SettingNetworkForm.ui" line="20"/>
- <source>Proxy server</source>
- <oldsource>Proxy Server</oldsource>
- <translation>プロキシサーバー</translation>
- </message>
- <message>
- <location filename="src/SettingNetworkForm.ui" line="26"/>
- <source>No proxy</source>
- <oldsource>No Proxy</oldsource>
- <translation>プロキシなし</translation>
- </message>
- <message>
- <location filename="src/SettingNetworkForm.ui" line="33"/>
- <source>Auto detect</source>
- <oldsource>Auto Detect</oldsource>
- <translation>自動検出</translation>
- </message>
- <message>
- <location filename="src/SettingNetworkForm.ui" line="40"/>
- <source>Manual</source>
- <translation>手動</translation>
- </message>
-</context>
-<context>
- <name>SettingProgramsForm</name>
- <message>
- <location filename="src/SettingProgramsForm.ui" line="14"/>
- <source>Programs</source>
- <translation>プログラム</translation>
- </message>
- <message>
- <location filename="src/SettingProgramsForm.ui" line="20"/>
- <source>Git command</source>
- <translation>Git コマンド</translation>
- </message>
- <message>
- <location filename="src/SettingProgramsForm.ui" line="29"/>
- <location filename="src/SettingProgramsForm.ui" line="48"/>
- <location filename="src/SettingProgramsForm.ui" line="67"/>
- <source>Browse...</source>
- <translation>参照...</translation>
- </message>
- <message>
- <location filename="src/SettingProgramsForm.ui" line="39"/>
- <source>File command</source>
- <translation>File コマンド</translation>
- </message>
- <message>
- <location filename="src/SettingProgramsForm.ui" line="58"/>
- <source>GPG command (option)</source>
- <translation>GPGコマンド(オプション)</translation>
- </message>
-</context>
-<context>
- <name>SettingsDialog</name>
- <message>
- <location filename="src/SettingsDialog.ui" line="14"/>
- <source>Settings</source>
- <translation>設定</translation>
- </message>
- <message>
- <location filename="src/SettingsDialog.ui" line="141"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/SettingsDialog.ui" line="148"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>TextEditDialog</name>
- <message>
- <location filename="src/TextEditDialog.ui" line="14"/>
- <source>Dialog</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/TextEditDialog.ui" line="48"/>
- <source>OK</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/TextEditDialog.ui" line="58"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
-</context>
-<context>
- <name>WelcomeWizardDialog</name>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="14"/>
- <source>Welcome to the Guitar Wizard</source>
- <translation>Guitarウィザードへようこそ</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="45"/>
- <source>Helper Tools</source>
- <translation>ヘルパープログラム</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="61"/>
- <location filename="src/WelcomeWizardDialog.ui" line="338"/>
- <source>git</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="71"/>
- <location filename="src/WelcomeWizardDialog.ui" line="88"/>
- <location filename="src/WelcomeWizardDialog.ui" line="248"/>
- <source>Browse</source>
- <translation>参照</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="78"/>
- <location filename="src/WelcomeWizardDialog.ui" line="352"/>
- <source>file</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="120"/>
- <source>Global User Information</source>
- <translation>グローバルユーザー情報</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="142"/>
- <source>git config --global user.name</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="152"/>
- <source>git config --global user.email</source>
- <translation></translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="168"/>
- <source>Get icon from Gravatar</source>
- <translation>Gravatarからアイコンを取得</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="222"/>
- <location filename="src/WelcomeWizardDialog.cpp" line="156"/>
- <source>Default Working Folder</source>
- <translation>規定の作業フォルダ</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="238"/>
- <location filename="src/WelcomeWizardDialog.ui" line="324"/>
- <source>folder</source>
- <translation>フォルダ</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="280"/>
- <source>Ready to play the Guitar !</source>
- <translation>Guitarの準備ができました!</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="296"/>
- <source>user</source>
- <translation>ユーザー</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="310"/>
- <source>email</source>
- <translation>メール</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="426"/>
- <location filename="src/WelcomeWizardDialog.cpp" line="148"/>
- <source><< Prev</source>
- <translation><< 戻る</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.ui" line="433"/>
- <location filename="src/WelcomeWizardDialog.cpp" line="149"/>
- <source>Next >></source>
- <translation>次へ >></translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.cpp" line="127"/>
- <source>Cancel</source>
- <translation>キャンセル</translation>
- </message>
- <message>
- <location filename="src/WelcomeWizardDialog.cpp" line="146"/>
- <source>Finish</source>
- <translation>完了</translation>
- </message>
-</context>
-</TS>
diff --git a/Info.plist.in b/Info.plist.in
new file mode 100644
index 0000000..eb01716
--- /dev/null
+++ b/Info.plist.in
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+ <key>CFBundleIconFile</key>
+ <string>Guitar.icns</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleGetInfoString</key>
+ <string>@CMAKE_PROJECT_VERSION@</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleExecutable</key>
+ <string>Guitar</string>
+ <key>CFBundleIdentifier</key>
+ <string>jp.soramimi.Guitar</string>
+</dict>
+</plist>
diff --git a/cmake/modules/Findzlib.cmake b/cmake/modules/Findzlib.cmake
new file mode 100644
index 0000000..7773469
--- /dev/null
+++ b/cmake/modules/Findzlib.cmake
@@ -0,0 +1,30 @@
+set(zlib_ROOT_DIR "${zlib_DIR}")
+
+find_path(zlib_INCLUDE_DIRS
+ NAMES zlib.h
+ HINTS "${zlib_ROOT_DIR}/include"
+ DOC "The zlib include directory"
+ )
+
+find_library(zlib_LIBRARIES
+ NAMES z
+ HINTS "${zlib_ROOT_DIR}/lib"
+ DOC "The zlib library"
+ )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(zlib DEFAULT_MSG
+ zlib_LIBRARIES
+ zlib_INCLUDE_DIRS
+ )
+
+mark_as_advanced(zlib_INCLUDE_DIRS zlib_LIBRARIES )
+
+if(zlib_FOUND)
+ add_library(zlib SHARED IMPORTED)
+ set_target_properties(zlib PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${zlib_INCLUDE_DIRS}"
+ )
+ set_property(TARGET zlib APPEND PROPERTY IMPORTED_LOCATION "${zlib_LIBRARIES}")
+endif()
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt
new file mode 100644
index 0000000..f21f97d
--- /dev/null
+++ b/extra/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(FileView)
diff --git a/extra/FileView/CMakeLists.txt b/extra/FileView/CMakeLists.txt
new file mode 100644
index 0000000..58071bb
--- /dev/null
+++ b/extra/FileView/CMakeLists.txt
@@ -0,0 +1,64 @@
+cmake_minimum_required(VERSION 3.2)
+
+project(FileView
+ VERSION 0.9.0
+ LANGUAGES CXX C
+)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTORCC ON)
+
+find_package(Qt5 COMPONENTS Core Widgets Network Svg REQUIRED)
+
+set(FileView_SOURCES
+ main.cpp
+ MainWindow.cpp
+ ../../src/texteditor/AbstractCharacterBasedApplication.cpp
+ ../../src/texteditor/InputMethodPopup.cpp
+ ../../src/texteditor/TextEditorTheme.cpp
+ ../../src/texteditor/TextEditorWidget.cpp
+ ../../src/texteditor/unicode.cpp
+ ../../src/texteditor/UnicodeWidth.cpp
+ ../../src/FileViewWidget.cpp
+ ../../src/common/joinpath.cpp
+ ../../src/common/misc.cpp
+ ../../src/ImageViewWidget.cpp
+ ../../src/MemoryReader.cpp
+ ../../src/Photoshop.cpp
+ ../../src/ImageViewWidget.cpp
+ )
+
+set(FileView_HEADERS
+ MainWindow.h
+ ../../src/texteditor/AbstractCharacterBasedApplication.h
+ ../../src/texteditor/InputMethodPopup.h
+ ../../src/texteditor/TextEditorTheme.h
+ ../../src/texteditor/TextEditorWidget.h
+ ../../src/texteditor/unicode.h
+ ../../src/texteditor/UnicodeWidth.h
+ ../../src/FileViewWidget.h
+ ../../src/common/joinpath.h
+ ../../src/common/misc.h
+ ../../src/ImageViewWidget.h
+ ../../src/MemoryReader.h
+ ../../src/Photoshop.h
+ ../../src/ImageViewWidget.h
+ )
+
+set(FileView_UIS
+ MainWindow.ui
+ )
+
+add_executable(${PROJECT_NAME}
+ ${FileView_SOURCES}
+ ${FileView_HEADERS}
+ ${FileView_UIS}
+ )
+
+target_link_libraries(${PROJECT_NAME}
+ Qt5::Widgets
+ Qt5::Network
+ Qt5::Svg
+)
diff --git a/winpty/winpty.h b/misc/winpty/winpty.h
similarity index 100%
rename from winpty/winpty.h
rename to misc/winpty/winpty.h
diff --git a/winpty/winpty.lib b/misc/winpty/winpty.lib
similarity index 100%
rename from winpty/winpty.lib
rename to misc/winpty/winpty.lib
diff --git a/winpty/winpty_constants.h b/misc/winpty/winpty_constants.h
similarity index 100%
rename from winpty/winpty_constants.h
rename to misc/winpty/winpty_constants.h
diff --git a/myzlib.h b/myzlib.h
deleted file mode 100644
index 213d57e..0000000
--- a/myzlib.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifdef __HAIKU__
-#include <zlib.h>
-#else
-#include "../zlib/zlib.h"
-#endif
-//#include <QtZlib/zlib.h>
diff --git a/prepare.rb b/prepare.rb
index d00ea42..15f2b8c 100755
--- a/prepare.rb
+++ b/prepare.rb
@@ -1,89 +1,89 @@
#!/usr/bin/ruby
# create the following files
# * version.c
# * win.rc
# * Info.plist
load 'version.rb'
def get_revision()
rev = ""
if Dir.exist?(".git")
hash = `git rev-parse HEAD`
if hash =~ /^[0-9A-Za-z]+/
rev = hash[0, 7]
end
end
return rev
end
-File.open("version.c", "w") {|f|
+File.open("src/version.h", "w") {|f|
f.puts <<_____
int copyright_year = #{$copyright_year};
char const product_version[] = "#{$version_a}.#{$version_b}.#{$version_c}";
char const source_revision[] = "#{get_revision()}";
_____
}
File.open("win.rc", "w") {|f|
f.puts <<_____
#include <windows.h>
-100 ICON DISCARDABLE "#{$product_name}.ico"
+100 ICON DISCARDABLE "src/resources/#{$product_name}.ico"
VS_VERSION_INFO VERSIONINFO
FILEVERSION #{$version_a},#{$version_b},#{$version_c},#{$version_d}
PRODUCTVERSION #{$version_a},#{$version_b},#{$version_c},#{$version_d}
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "041103a4"
BEGIN
VALUE "CompanyName", "S.Fuchita"
VALUE "FileDescription", "The Git GUI Client"
VALUE "FileVersion", "#{$version_a}, #{$version_b}, #{$version_c}, #{$version_d}"
VALUE "InternalName", "#{$product_name}.exe"
VALUE "LegalCopyright", "Copyright (C) #{$copyright_year} S.Fuchita (@soramimi_jp)"
VALUE "OriginalFilename","#{$product_name}.exe"
VALUE "ProductName", "#{$product_name}"
VALUE "ProductVersion", "#{$version_a}, #{$version_b}, #{$version_c}, #{$version_d}"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0411, 932
END
END
_____
}
File.open("Info.plist", "w") {|f|
f.puts <<_____
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>#{$product_name}.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>#{$version_a}.#{$version_b}.#{$version_c}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>#{$product_name}</string>
<key>CFBundleIdentifier</key>
<string>jp.soramimi.#{$product_name}</string>
</dict>
</plist>
_____
}
diff --git a/resources.qrc b/resources.qrc
deleted file mode 100644
index 3af07a0..0000000
--- a/resources.qrc
+++ /dev/null
@@ -1,43 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>image/stage.svg</file>
- <file>image/unstage.svg</file>
- <file>image/commit.svg</file>
- <file>image/push.svg</file>
- <file>image/selall.svg</file>
- <file>image/graphcolor.png</file>
- <file>image/pull.svg</file>
- <file>image/clone.svg</file>
- <file>image/fetch.svg</file>
- <file>image/digits.png</file>
- <file>image/guitar.png</file>
- <file>image/Guitar.svg</file>
- <file>image/folder.png</file>
- <file>image/repository.png</file>
- <file>image/maximize.png</file>
- <file>image/transparent.png</file>
- <file>image/file.png</file>
- <file>image/clear.png</file>
- <file>image/terminal.svg</file>
- <file>image/explorer.svg</file>
- <file>image/about.png</file>
- <file>image/redsquare.svg</file>
- <file>darktheme/button/button_normal.png</file>
- <file>darktheme/button/button_press.png</file>
- <file>darktheme/hsb/hsb_add_line.png</file>
- <file>darktheme/hsb/hsb_page_bg.png</file>
- <file>darktheme/hsb/hsb_slider.png</file>
- <file>darktheme/hsb/hsb_sub_line.png</file>
- <file>darktheme/progress/horz.png</file>
- <file>darktheme/progress/vert.png</file>
- <file>darktheme/vsb/vsb_add_line.png</file>
- <file>darktheme/vsb/vsb_page_bg.png</file>
- <file>darktheme/vsb/vsb_slider.png</file>
- <file>darktheme/vsb/vsb_sub_line.png</file>
- <file>darktheme/graphcolor.png</file>
- <file>image/menu.png</file>
- <file>image/signature-bad.png</file>
- <file>image/signature-dubious.png</file>
- <file>image/signature-good.png</file>
- </qresource>
-</RCC>
diff --git a/src/AboutDialog.cpp b/src/AboutDialog.cpp
index b20e775..653be49 100644
--- a/src/AboutDialog.cpp
+++ b/src/AboutDialog.cpp
@@ -1,67 +1,64 @@
#include "AboutDialog.h"
#include "ui_AboutDialog.h"
#include "common/misc.h"
#include <QPainter>
-// defined in 'version.c' generated by prepare.rb
-extern "C" int copyright_year;
-extern "C" char const product_version[];
-extern "C" char const source_revision[];
+#include "version.h"
AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowContextHelpButtonHint;
setWindowFlags(flags);
misc::setFixedSize(this);
QString copyright_holder = "S.Fuchita";
QString twitter_account = "soramimi_jp";
pixmap.load(":/image/about.png");
setWindowTitle(tr("About %1").arg(qApp->applicationName()));
setStyleSheet("QLabel { color: black; }");
ui->label_title->setText(appVersion());
ui->label_copyright->setText(QString("Copyright (C) %1 %2").arg(copyright_year).arg(copyright_holder));
ui->label_twitter->setText(twitter_account.isEmpty() ? QString() : QString("(@%1)").arg(twitter_account));
QString t = QString("Qt %1").arg(qVersion());
#if defined(_MSC_VER)
t += QString(", msvc=%1").arg(_MSC_VER);
#elif defined(__clang__)
t += QString(", clang=%1.%2").arg(__clang_major__).arg(__clang_minor__);
#elif defined(__GNUC__)
t += QString(", gcc=%1.%2.%3").arg(__GNUC__).arg(__GNUC_MINOR__).arg(__GNUC_PATCHLEVEL__);
#endif
ui->label_qt->setText(t);
}
AboutDialog::~AboutDialog()
{
delete ui;
}
void AboutDialog::mouseReleaseEvent(QMouseEvent *)
{
accept();
}
void AboutDialog::paintEvent(QPaintEvent *)
{
QPainter pr(this);
int w = width();
int h = height();
pr.drawPixmap(0, 0, w, h, pixmap);
}
QString AboutDialog::appVersion()
{
return QString("%1, v%2 (%3)").arg(qApp->applicationName()).arg(product_version).arg(source_revision);
}
diff --git a/src/FileViewWidget.cpp b/src/FileViewWidget.cpp
index 89065b7..ae199f8 100644
--- a/src/FileViewWidget.cpp
+++ b/src/FileViewWidget.cpp
@@ -1,171 +1,171 @@
#include "FileViewWidget.h"
#include <QMenu>
#include <QPainter>
#include <QStackedWidget>
#include <QVBoxLayout>
#include "common/misc.h"
FileViewWidget::FileViewWidget(QWidget *parent)
: QWidget(parent)
{
setObjectName(QStringLiteral("FileViewWidget"));
ui_verticalLayout = new QVBoxLayout(this);
ui_verticalLayout->setSpacing(0);
ui_verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
ui_verticalLayout->setContentsMargins(0, 0, 0, 0);
ui_stackedWidget = new QStackedWidget(this);
ui_stackedWidget->setObjectName(QStringLiteral("stackedWidget"));
ui_page_none = new QWidget();
ui_page_none->setObjectName(QStringLiteral("page_none"));
ui_stackedWidget->addWidget(ui_page_none);
ui_page_text = new X_TextEditorWidget();
ui_page_text->setObjectName(QStringLiteral("page_text"));
ui_page_text->setFocusPolicy(Qt::StrongFocus);
ui_stackedWidget->addWidget(ui_page_text);
ui_page_image = new X_ImageViewWidget();
ui_page_image->setObjectName(QStringLiteral("page_image"));
ui_page_image->setFocusPolicy(Qt::StrongFocus);
ui_stackedWidget->addWidget(ui_page_image);
ui_verticalLayout->addWidget(ui_stackedWidget);
setWindowTitle(QApplication::translate("FileViewWidget", "Form", Q_NULLPTR));
ui_stackedWidget->setCurrentIndex(1);
QMetaObject::connectSlotsByName(this);
ui_page_text->setRenderingMode(TextEditorWidget::DecoratedMode);
ui_page_text->setTheme(TextEditorTheme::Light());
ui_page_text->showHeader(false);
ui_page_text->showFooter(false);
ui_page_text->setAutoLayout(true);
ui_page_text->setReadOnly(true);
ui_page_text->setToggleSelectionAnchorEnabled(false);
ui_page_text->setFocusFrameVisible(true);
ui_stackedWidget->setCurrentWidget(ui_page_none);
}
void FileViewWidget::setTextCodec(QTextCodec *codec)
{
ui_page_text->setTextCodec(codec);
}
-void FileViewWidget::bind(BasicMainWindow *mw, FileDiffWidget *fdw, QScrollBar *vsb, QScrollBar *hsb, TextEditorThemePtr theme)
+void FileViewWidget::bind(QMainWindow *mw, FileDiffWidget *fdw, QScrollBar *vsb, QScrollBar *hsb, TextEditorThemePtr theme)
{
ui_page_text->bindScrollBar(vsb, hsb);
ui_page_image->bind(mw, fdw, vsb, hsb);
ui_page_text->setTheme(theme);
}
void FileViewWidget::setViewType(FileViewType type)
{
view_type = type;
switch (view_type) {
case FileViewType::Text:
ui_stackedWidget->setCurrentWidget(ui_page_text);
return;
case FileViewType::Image:
ui_stackedWidget->setCurrentWidget(ui_page_image);
return;
default:
ui_stackedWidget->setCurrentWidget(ui_page_none);
return;
}
}
const TextEditorTheme *FileViewWidget::theme() const
{
return ui_page_text->theme();
}
int FileViewWidget::latin1Width() const
{
return ui_page_text->latin1Width();
}
int FileViewWidget::lineHeight() const
{
return ui_page_text->lineHeight();
}
void FileViewWidget::setDiffMode(TextEditorEnginePtr editor_engine, QScrollBar *vsb, QScrollBar *hsb)
{
ui_page_text->setTextEditorEngine(editor_engine);
return ui_page_text->bindScrollBar(vsb, hsb);
}
void FileViewWidget::refrectScrollBar()
{
switch (view_type) {
case FileViewType::Text:
ui_page_text->refrectScrollBar();
return;
case FileViewType::Image:
ui_page_image->refrectScrollBar();
return;
}
}
void FileViewWidget::move(int cur_row, int cur_col, int scr_row, int scr_col, bool auto_scroll)
{
return ui_page_text->move(cur_row, cur_col, scr_row, scr_col, auto_scroll);
}
void FileViewWidget::setImage(QString mimetype, QByteArray const &ba, QString const &object_id, QString const &path)
{
setViewType(FileViewType::Image);
this->source_id = object_id;
#ifdef APP_GUITAR
ui_page_image->setImage(mimetype, ba, object_id, path);
#else
ui_page_image->setImage(mimetype, ba);
#endif
}
-void FileViewWidget::setText(const QList<Document::Line> *source, BasicMainWindow *mw, QString const &object_id, QString const &object_path)
+void FileViewWidget::setText(const QList<Document::Line> *source, QMainWindow *mw, QString const &object_id, QString const &object_path)
{
setViewType(FileViewType::Text);
this->source_id = object_id;
#ifdef APP_GUITAR
- ui_page_text->setDocument(source, mw, object_id, object_path);
+ ui_page_text->setDocument(source, qobject_cast<BasicMainWindow *>(mw), object_id, object_path);
scrollToTop();
texteditor()->moveCursorOut(); // 現在行を -1 にして、カーソルを非表示にする。
#else
ui_page_text->setDocument(source);
scrollToTop();
#endif
}
-void FileViewWidget::setText(QByteArray const &ba, BasicMainWindow *mw, QString const &object_id, QString const &object_path)
+void FileViewWidget::setText(QByteArray const &ba, QMainWindow *mw, QString const &object_id, QString const &object_path)
{
std::vector<std::string> lines;
char const *begin = ba.data();
char const *end = begin + ba.size();
misc::splitLines(begin, end, &lines, true);
QList<Document::Line> source;
source.reserve(lines.size());
int num = 0;
for (std::string const &line : lines) {
Document::Line t(line);
t.line_number = ++num;
source.push_back(t);
}
setText(&source, mw, object_id, object_path);
}
void FileViewWidget::scrollToTop()
{
ui_page_text->scrollToTop();
}
void FileViewWidget::write(QKeyEvent *e)
{
ui_page_text->write(e);
}
TextEditorWidget *FileViewWidget::texteditor()
{
return ui_page_text;
}
diff --git a/src/FileViewWidget.h b/src/FileViewWidget.h
index 67961d1..ccf7ebb 100644
--- a/src/FileViewWidget.h
+++ b/src/FileViewWidget.h
@@ -1,77 +1,77 @@
#ifndef FILEVIEWWIDGET_H
#define FILEVIEWWIDGET_H
#include <QWidget>
#include "texteditor/TextEditorWidget.h"
class QScrollBar;
struct PreEditText;
class BasicMainWindow;
class FileDiffWidget;
class QVBoxLayout;
class QStackedWidget;
enum class FileViewType {
None,
Text,
Image,
};
#ifdef APP_GUITAR
#include "MyTextEditorWidget.h"
#include "MyImageViewWidget.h"
#else
#include "ImageViewWidget.h"
#endif
class FileViewWidget : public QWidget {
private:
#ifdef APP_GUITAR
using X_TextEditorWidget = MyTextEditorWidget;
using X_ImageViewWidget = MyImageViewWidget;
#else
using X_TextEditorWidget = TextEditorWidget;
using X_ImageViewWidget = ImageViewWidget;
#endif
QVBoxLayout *ui_verticalLayout;
QStackedWidget *ui_stackedWidget;
QWidget *ui_page_none;
X_TextEditorWidget *ui_page_text;
X_ImageViewWidget *ui_page_image;
QString source_id;
FileViewType view_type = FileViewType::None;
public:
explicit FileViewWidget(QWidget *parent = 0);
~FileViewWidget()
{
}
void setTextCodec(QTextCodec *codec);
void setViewType(FileViewType type);
void setImage(QString mimetype, const QByteArray &ba, QString const &object_id, const QString &path);
- void setText(const QList<Document::Line> *source, BasicMainWindow *mw, QString const &object_id, const QString &object_path);
- void setText(const QByteArray &ba, BasicMainWindow *mw, const QString &object_id, const QString &object_path);
+ void setText(const QList<Document::Line> *source, QMainWindow *mw, QString const &object_id, const QString &object_path);
+ void setText(const QByteArray &ba, QMainWindow *mw, const QString &object_id, const QString &object_path);
void setDiffMode(TextEditorEnginePtr editor_engine, QScrollBar *vsb, QScrollBar *hsb);
int latin1Width() const;
int lineHeight() const;
TextEditorTheme const *theme() const;
void scrollToTop();
void write(QKeyEvent *e);
void refrectScrollBar();
void move(int cur_row, int cur_col, int scr_row, int scr_col, bool auto_scroll);
TextEditorWidget *texteditor();
- void bind(BasicMainWindow *mw, FileDiffWidget *fdw, QScrollBar *vsb, QScrollBar *hsb, TextEditorThemePtr theme);
+ void bind(QMainWindow *mw, FileDiffWidget *fdw, QScrollBar *vsb, QScrollBar *hsb, TextEditorThemePtr theme);
};
#endif // FILEVIEWWIDGET_H
diff --git a/src/GitPack.cpp b/src/GitPack.cpp
index c206141..e052815 100644
--- a/src/GitPack.cpp
+++ b/src/GitPack.cpp
@@ -1,252 +1,252 @@
#include "GitPack.h"
-#include "../myzlib.h"
+#include <zlib.h>
#include <QDebug>
#include <QFile>
#include "GitPackIdxV2.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)
{
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.next_in = nullptr;
d_stream.avail_in = 0;
err = inflateInit(&d_stream);
if (err != Z_OK) {
throw QString("failed: inflateInit");
}
while (1) {
if (expanded_size > 0 && (size_t)out->size() > expanded_size) {
throw QString("file too large");
}
uint8_t src[1024];
uint8_t tmp[65536];
if (d_stream.next_in != src && d_stream.avail_in > 0) {
memmove(src, d_stream.next_in, d_stream.avail_in);
}
d_stream.next_in = src;
if (d_stream.avail_in < sizeof(src)) {
int n = sizeof(src) - d_stream.avail_in;
n = in->read((char *)(src + d_stream.avail_in), n);
if (n >= 0) {
d_stream.avail_in += n;
}
}
d_stream.next_out = tmp;
size_t l = expanded_size - out->size();
if (l > sizeof(tmp)) l = sizeof(tmp);
d_stream.avail_out = l;
uLong total = d_stream.total_out;
err = ::inflate(&d_stream, Z_NO_FLUSH);
int in_len = (uint8_t *)d_stream.next_in - src;
if (consumed) *consumed += in_len;
if (crc) *crc = crc32(*crc, src, in_len);
int out_len = d_stream.total_out - total;
out->append((char const *)tmp, out_len);
if (err == Z_STREAM_END) {
break;
}
if (err != Z_OK) {
throw QString("failed: inflate");
}
}
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, const GitPackIdxItem *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, const GitPackIdxItem *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, const GitPackIdxItem *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/ImageViewWidget.cpp b/src/ImageViewWidget.cpp
index 791a14b..a4c54b2 100644
--- a/src/ImageViewWidget.cpp
+++ b/src/ImageViewWidget.cpp
@@ -1,373 +1,373 @@
#include "ImageViewWidget.h"
#include "FileDiffSliderWidget.h"
#include "FileDiffWidget.h"
#include "MainWindow.h"
#include "MemoryReader.h"
#include "Photoshop.h"
#include "charvec.h"
#include "common/joinpath.h"
#include "common/misc.h"
#include <QBuffer>
#include <QDebug>
#include <QFileDialog>
#include <QMenu>
#include <QPainter>
#include <QSvgRenderer>
#include <QWheelEvent>
#include <cmath>
#include <functional>
#include <memory>
using SvgRendererPtr = std::shared_ptr<QSvgRenderer>;
struct ImageViewWidget::Private {
- BasicMainWindow *mainwindow = nullptr;
+ QMainWindow *mainwindow = nullptr;
FileDiffWidget *filediffwidget = nullptr;
FileDiffWidget::DrawData *draw_data = nullptr;
QScrollBar *v_scroll_bar = nullptr;
QScrollBar *h_scroll_bar = nullptr;
QString mime_type;
QPixmap pixmap;
SvgRendererPtr svg;
double image_scroll_x = 0;
double image_scroll_y = 0;
double image_scale = 1;
double scroll_origin_x = 0;
double scroll_origin_y = 0;
QPoint mouse_press_pos;
int wheel_delta = 0;
QPointF interest_pos;
int top_margin = 1;
int bottom_margin = 1;
bool draw_left_border = true;
#ifndef APP_GUITAR
QPixmap transparent_pixmap;
#endif
};
ImageViewWidget::ImageViewWidget(QWidget *parent)
: QWidget(parent)
, m(new Private)
{
#if defined(Q_OS_WIN32)
setFont(QFont("MS Gothic"));
#elif defined(Q_OS_LINUX)
setFont(QFont("Monospace"));
#elif defined(Q_OS_MAC)
setFont(QFont("Menlo"));
#endif
setContextMenuPolicy(Qt::DefaultContextMenu);
}
ImageViewWidget::~ImageViewWidget()
{
delete m;
}
-void ImageViewWidget::bind(BasicMainWindow *mainwindow, FileDiffWidget *filediffwidget, QScrollBar *vsb, QScrollBar *hsb)
+void ImageViewWidget::bind(QMainWindow *mainwindow, FileDiffWidget *filediffwidget, QScrollBar *vsb, QScrollBar *hsb)
{
m->mainwindow = mainwindow;
m->filediffwidget = filediffwidget;
m->v_scroll_bar = vsb;
m->h_scroll_bar = hsb;
}
bool ImageViewWidget::hasFocus() const
{
QWidget *w = qApp->focusWidget();
return w && w != m->filediffwidget && w->isAncestorOf(this);
}
void ImageViewWidget::setLeftBorderVisible(bool f)
{
m->draw_left_border = f;
}
void ImageViewWidget::internalScrollImage(double x, double y)
{
m->image_scroll_x = x;
m->image_scroll_y = y;
QSizeF sz = imageScrollRange();
if (m->image_scroll_x < 0) m->image_scroll_x = 0;
if (m->image_scroll_y < 0) m->image_scroll_y = 0;
if (m->image_scroll_x > sz.width()) m->image_scroll_x = sz.width();
if (m->image_scroll_y > sz.height()) m->image_scroll_y = sz.height();
update();
}
void ImageViewWidget::scrollImage(double x, double y)
{
internalScrollImage(x, y);
if (m->h_scroll_bar) {
m->h_scroll_bar->blockSignals(true);
m->h_scroll_bar->setValue((int)m->image_scroll_x);
m->h_scroll_bar->blockSignals(false);
}
if (m->v_scroll_bar) {
m->v_scroll_bar->blockSignals(true);
m->v_scroll_bar->setValue((int)m->image_scroll_y);
m->v_scroll_bar->blockSignals(false);
}
}
void ImageViewWidget::refrectScrollBar()
{
double e = 0.75;
double x = m->h_scroll_bar->value();
double y = m->v_scroll_bar->value();
if (fabs(x - m->image_scroll_x) < e) x = m->image_scroll_x; // 差が小さいときは値を維持する
if (fabs(y - m->image_scroll_y) < e) y = m->image_scroll_y;
internalScrollImage(x, y);
}
void ImageViewWidget::clear()
{
m->mime_type = QString();
m->pixmap = QPixmap();
setMouseTracking(false);
update();
}
QString ImageViewWidget::formatText(Document::Line const &line)
{
QByteArray const &ba = line.text;
if (ba.isEmpty()) return QString();
std::vector<char> vec;
vec.reserve(ba.size() + 100);
char const *begin = ba.data();
char const *end = begin + ba.size();
char const *ptr = begin;
int x = 0;
while (ptr < end) {
if (*ptr == '\t') {
do {
vec.push_back(' ');
x++;
} while ((x % 4) != 0);
ptr++;
} else {
vec.push_back(*ptr);
ptr++;
x++;
}
}
return QString::fromUtf8(&vec[0], vec.size());
}
QSizeF ImageViewWidget::imageScrollRange() const
{
QSize sz = imageSize();
int w = int(sz.width() * m->image_scale);
int h = int(sz.height() * m->image_scale);
return QSize(w, h);
}
void ImageViewWidget::setScrollBarRange(QScrollBar *h, QScrollBar *v)
{
h->blockSignals(true);
v->blockSignals(true);
QSizeF sz = imageScrollRange();
h->setRange(0, (int)sz.width());
v->setRange(0, (int)sz.height());
h->setPageStep(width());
v->setPageStep(height());
h->blockSignals(false);
v->blockSignals(false);
}
void ImageViewWidget::updateScrollBarRange()
{
setScrollBarRange(m->h_scroll_bar, m->v_scroll_bar);
}
-BasicMainWindow *ImageViewWidget::mainwindow()
+QMainWindow *ImageViewWidget::mainwindow()
{
return m->mainwindow;
}
QBrush ImageViewWidget::getTransparentBackgroundBrush()
{
#ifdef APP_GUITAR
- return mainwindow()->getTransparentPixmap();
+ return qobject_cast<BasicMainWindow *>(mainwindow())->getTransparentPixmap();
#else
if (m->transparent_pixmap.isNull()) {
m->transparent_pixmap = QPixmap(":/image/transparent.png");
}
return m->transparent_pixmap;
#endif
}
bool ImageViewWidget::isValidImage() const
{
return !m->pixmap.isNull() || (m->svg && m->svg->isValid());
}
QSize ImageViewWidget::imageSize() const
{
if (!m->pixmap.isNull()) return m->pixmap.size();
if (m->svg && m->svg->isValid()) return m->svg->defaultSize();
return QSize();
}
void ImageViewWidget::paintEvent(QPaintEvent *)
{
QPainter pr(this);
QSize imagesize = imageSize();
if (imagesize.width() > 0 && imagesize.height() > 0) {
pr.save();
if (!m->draw_left_border) {
pr.setClipRect(1, 0, width() - 1, height());
}
double cx = width() / 2.0;
double cy = height() / 2.0;
double x = cx - m->image_scroll_x;
double y = cy - m->image_scroll_y;
QSizeF sz = imageScrollRange();
if (sz.width() > 0 && sz.height() > 0) {
QBrush br = getTransparentBackgroundBrush();
pr.setBrushOrigin((int)x, (int)y);
pr.fillRect((int)x, (int)y, (int)sz.width(), (int)sz.height(), br);
if (!m->pixmap.isNull()) {
pr.drawPixmap((int)x, (int)y, (int)sz.width(), (int)sz.height(), m->pixmap, 0, 0, imagesize.width(), imagesize.height());
} else if (m->svg && m->svg->isValid()) {
m->svg->render(&pr, QRectF(x, y, sz.width(), sz.height()));
}
}
misc::drawFrame(&pr, (int)x - 1, (int)y - 1, (int)sz.width() + 2, (int)sz.height() + 2, Qt::black);
pr.restore();
}
if (m->draw_left_border) {
pr.fillRect(0, 0, 1, height(), QColor(160, 160, 160));
}
if (hasFocus()) {
misc::drawFrame(&pr, 0, 0, width(), height(), QColor(0, 128, 255, 128));
misc::drawFrame(&pr, 1, 1, width() - 2, height() - 2, QColor(0, 128, 255, 64));
}
}
void ImageViewWidget::resizeEvent(QResizeEvent *)
{
updateScrollBarRange();
}
void ImageViewWidget::setImage(QString mimetype, QByteArray const &ba)
{
if (mimetype.isEmpty()) {
mimetype = "image/x-unknown";
}
setMouseTracking(true);
m->pixmap = QPixmap();
m->svg = SvgRendererPtr();
if (!ba.isEmpty()) {
if (misc::isSVG(mimetype)) {
m->svg = std::make_shared<QSvgRenderer>(ba);
} else if (misc::isPSD(mimetype)) {
if (!ba.isEmpty()) {
MemoryReader reader(ba.data(), ba.size());
if (reader.open(QIODevice::ReadOnly)) {
std::vector<char> jpeg;
photoshop::readThumbnail(&reader, &jpeg);
if (!jpeg.empty()) {
m->pixmap.loadFromData((uchar const *)&jpeg[0], jpeg.size());
}
}
}
} else {
m->pixmap.loadFromData(ba);
}
}
QSize sz = imageSize();
double sx = sz.width();
double sy = sz.height();
if (sx > 0 && sy > 0) {
sx = width() / sx;
sy = height() / sy;
m->image_scale = (sx < sy ? sx : sy) * 0.9;
}
updateScrollBarRange();
m->h_scroll_bar->blockSignals(true);
m->v_scroll_bar->blockSignals(true);
m->h_scroll_bar->setValue(m->h_scroll_bar->maximum() / 2);
m->v_scroll_bar->setValue(m->v_scroll_bar->maximum() / 2);
m->h_scroll_bar->blockSignals(false);
m->v_scroll_bar->blockSignals(false);
refrectScrollBar();
}
void ImageViewWidget::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
QPoint pos = mapFromGlobal(QCursor::pos());
m->mouse_press_pos = pos;
m->scroll_origin_x = m->image_scroll_x;
m->scroll_origin_y = m->image_scroll_y;
}
}
void ImageViewWidget::mouseMoveEvent(QMouseEvent *e)
{
if (isValidImage()) {
QPoint pos = mapFromGlobal(QCursor::pos());
if ((e->buttons() & Qt::LeftButton) && hasFocus()) {
int delta_x = pos.x() - m->mouse_press_pos.x();
int delta_y = pos.y() - m->mouse_press_pos.y();
scrollImage(m->scroll_origin_x - delta_x, m->scroll_origin_y - delta_y);
}
double cx = width() / 2.0;
double cy = height() / 2.0;
double x = (pos.x() + 0.5 - cx + m->image_scroll_x) / m->image_scale;
double y = (pos.y() + 0.5 - cy + m->image_scroll_y) / m->image_scale;
m->interest_pos = QPointF(x, y);
m->wheel_delta = 0;
}
}
void ImageViewWidget::setImageScale(double scale)
{
if (scale < 1 / 32.0) scale = 1 / 32.0;
if (scale > 32) scale = 32;
m->image_scale = scale;
}
void ImageViewWidget::wheelEvent(QWheelEvent *e)
{
if (isValidImage()) {
double scale = 1;
const double mul = 1.189207115; // sqrt(sqrt(2))
m->wheel_delta += e->delta();
while (m->wheel_delta >= 120) {
m->wheel_delta -= 120;
scale *= mul;
}
while (m->wheel_delta <= -120) {
m->wheel_delta += 120;
scale /= mul;
}
setImageScale(m->image_scale * scale);
updateScrollBarRange();
double cx = width() / 2.0;
double cy = height() / 2.0;
QPoint pos = mapFromGlobal(QCursor::pos());
double dx = m->interest_pos.x() * m->image_scale + cx - (pos.x() + 0.5);
double dy = m->interest_pos.y() * m->image_scale + cy - (pos.y() + 0.5);
scrollImage(dx, dy);
update();
}
}
diff --git a/src/ImageViewWidget.h b/src/ImageViewWidget.h
index 562fd17..5edfae9 100644
--- a/src/ImageViewWidget.h
+++ b/src/ImageViewWidget.h
@@ -1,57 +1,57 @@
#ifndef IMAGEVIEWWIDGET_H
#define IMAGEVIEWWIDGET_H
#include <QScrollBar>
#include <QWidget>
#include "Git.h"
#include "MainWindow.h"
#include "AbstractCharacterBasedApplication.h"
class FileDiffWidget;
class FileDiffSliderWidget;
class ImageViewWidget : public QWidget {
Q_OBJECT
private:
struct Private;
Private *m;
bool isValidImage() const;
QSize imageSize() const;
QSizeF imageScrollRange() const;
void internalScrollImage(double x, double y);
void scrollImage(double x, double y);
void setImageScale(double scale);
QBrush getTransparentBackgroundBrush();
bool hasFocus() const;
void setScrollBarRange(QScrollBar *h, QScrollBar *v);
void updateScrollBarRange();
protected:
- BasicMainWindow *mainwindow();
+ QMainWindow *mainwindow();
void resizeEvent(QResizeEvent *) override;
void paintEvent(QPaintEvent *) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *) override;
public:
explicit ImageViewWidget(QWidget *parent = nullptr);
~ImageViewWidget() override;
- void bind(BasicMainWindow *m, FileDiffWidget *filediffwidget, QScrollBar *vsb, QScrollBar *hsb);
+ void bind(QMainWindow *m, FileDiffWidget *filediffwidget, QScrollBar *vsb, QScrollBar *hsb);
void clear();
void setImage(QString mimetype, QByteArray const &ba);
void setLeftBorderVisible(bool f);
void refrectScrollBar();
static QString formatText(const Document::Line &line2);
signals:
void scrollByWheel(int lines);
};
#endif // IMAGEVIEWWIDGET_H
diff --git a/src/MyImageViewWidget.cpp b/src/MyImageViewWidget.cpp
index 7ed2189..8d3ca85 100644
--- a/src/MyImageViewWidget.cpp
+++ b/src/MyImageViewWidget.cpp
@@ -1,52 +1,53 @@
#include "MyImageViewWidget.h"
#include <QMenu>
#include <QFileDialog>
#include "common/misc.h"
#include "common/joinpath.h"
MyImageViewWidget::MyImageViewWidget(QWidget *parent)
: ImageViewWidget(parent)
{
}
void MyImageViewWidget::setImage(QString mimetype, QByteArray const &ba, QString const &object_id, QString const &path)
{
this->object_id_ = object_id;
this->path_ = path;
ImageViewWidget::setImage(mimetype, ba);
}
void MyImageViewWidget::contextMenuEvent(QContextMenuEvent *e)
{
QString id = object_id_;
if (id.startsWith(PATH_PREFIX)) {
// pass
} else if (Git::isValidID(id)) {
// pass
} else {
return; // invalid id
}
QMenu menu;
QAction *a_save_as = id.isEmpty() ? nullptr : menu.addAction(tr("Save as..."));
if (!menu.actions().isEmpty()) {
update();
QAction *a = menu.exec(misc::contextMenuPos(this, e));
if (a) {
if (a == a_save_as) {
- QString path = mainwindow()->currentWorkingCopyDir() / path_;
+ auto *mw = qobject_cast<MainWindow *>(mainwindow());
+ QString path = mw->currentWorkingCopyDir() / path_;
QString dstpath = QFileDialog::getSaveFileName(window(), tr("Save as"), path);
if (!dstpath.isEmpty()) {
- mainwindow()->saveAs(id, dstpath);
+ mw->saveAs(id, dstpath);
}
update();
return;
}
}
}
}
diff --git a/src/gunzip.cpp b/src/gunzip.cpp
index b68eb70..abf36f7 100644
--- a/src/gunzip.cpp
+++ b/src/gunzip.cpp
@@ -1,228 +1,228 @@
#include "gunzip.h"
-#include "myzlib.h"
+#include <zlib.h>
#include <cstdint>
#include <QFile>
void gunzip::set_header_only(bool f)
{
header_only = f;
}
void gunzip::set_maximul_size(int64_t size)
{
maxsize = size;
}
bool gunzip::decode(QIODevice *input, QIODevice *output)
{
error = QString();
try {
struct Header {
uint8_t id1;
uint8_t id2;
uint8_t cm;
uint8_t flg;
uint8_t mtime[4];
uint8_t xfl;
uint8_t os;
};
enum {
FTEXT = 0x01,
FHCRC = 0x02,
FEXTRA = 0x04,
FNAME = 0x08,
FCOMMENT = 0x10,
};
unsigned char ibuf[4096];
bool ok = true;
int n;
n = input->read((char *)ibuf, sizeof(Header));
if (n != 10) {
throw QString("failed to read the header");
}
auto *h = (Header *)ibuf;
if (h->id1 == 0x1f && h->id2 == 0x8b && h->cm == 8) {
// ok
if (header_only) {
return true;
}
} else {
throw QString("invalid input format");
}
auto ReadText = [&](){
char c;
std::vector<uint8_t> vec;
while (1) {
if (input->read(&c, 1) != 1) {
break;
}
if (c == 0) break;
vec.push_back((uint8_t)c);
}
std::string str;
if (!vec.empty()) {
str.assign((char const *)&vec[0], vec.size());
}
return str;
};
if (h->flg & FEXTRA) {
n = input->read((char *)ibuf, 2);
n = ((uint8_t)ibuf[1] << 8) | (uint8_t)ibuf[0];
input->seek(input->pos() + n);
}
if (h->flg & FNAME) {
std::string name = ReadText();
(void)name;
}
if (h->flg & FCOMMENT) {
std::string comment = ReadText();
(void)comment;
}
if (h->flg & FHCRC) {
input->read((char *)ibuf, 2);
}
z_stream stream;
uint32_t crc = 0;
int err;
stream.zalloc = nullptr;
stream.zfree = nullptr;
stream.opaque = nullptr;
stream.next_in = ibuf;
stream.avail_in = 0;
err = inflateInit2(&stream, -MAX_WBITS);
if (err != Z_OK) {
throw QString("inflateInit2 faled");
}
if (open) {
if (!open(output)) {
ok = false;
}
} else {
if (!output->open(QIODevice::WriteOnly)) {
ok = false;
}
}
if (!ok) throw QString("failed to open the output device");
int64_t inpos = input->pos();
auto Close = [&](){
if (close) {
close(output);
} else {
output->close();
}
inflateEnd(&stream);
};
try {
while (1) {
if (stream.avail_in == 0) {
stream.next_in = ibuf;
}
if (stream.avail_in < sizeof(ibuf)) {
stream.next_in = ibuf + stream.avail_in;
auto len = input->read((char *)stream.next_in, sizeof(ibuf) - stream.avail_in);
stream.avail_in += len;
}
unsigned char obuf[65536];
stream.next_out = obuf; /* discard the output */
stream.avail_out = sizeof(obuf);
if (maxsize != -1 && stream.total_out + stream.avail_out > (unsigned)maxsize && (unsigned)maxsize >= stream.total_out) {
stream.avail_out = maxsize - stream.total_out;
}
uLong total_out = stream.total_out;
err = ::inflate(&stream, Z_NO_FLUSH);
int n = stream.total_out - total_out;
if (write) {
if (!write(output, (char const *)obuf, n)) {
ok = false;
}
} else {
int w = output->write((char const *)obuf, n);
if (w != n) {
ok = false;
}
}
if (!ok) throw QString("failed to write to the output device");
crc = crc32(crc, (unsigned char const *)obuf, n);
if (err == Z_STREAM_END) {
break;
}
if (err != Z_OK) {
throw QString("inflate failed");
}
if (stream.total_out >= (unsigned)maxsize) {
break;
}
}
} catch (...) {
Close();
throw;
}
Close();
input->seek(inpos + stream.total_in);
n = input->read((char *)ibuf, 8);
auto ReadU32LE = [](void const *p)->uint32_t{
auto const *q = (uint8_t const *)p;
return (q[3] << 24) | (q[2] << 16) | (q[1] << 8) | q[0];
};
auto c = ReadU32LE(ibuf);
auto l = ReadU32LE(ibuf + 4);
if (c != crc) throw QString("crc incorrect");
if (l != stream.total_out) throw QString("length incorrect");
return true;
} catch (QString const &e) {
error = e;
}
return false;
}
bool gunzip::decode(QString const &inpath, QString const &outpath)
{
QFile infile(inpath);
QFile outfile(outpath);
if (infile.open(QFile::ReadOnly)) {
if (decode(&infile, &outfile)) {
return true;
}
}
return false;
}
bool gunzip::is_valid_gz_file(QIODevice *input)
{
gunzip z;
z.set_header_only(true);
return z.decode(input, nullptr);
}
bool gunzip::is_valid_gz_file(QString const &inpath)
{
QFile infile(inpath);
if (infile.open(QFile::ReadOnly)) {
gunzip z;
if (z.is_valid_gz_file(&infile)) {
return true;
}
}
return false;
}
diff --git a/version.h.in b/version.h.in
new file mode 100644
index 0000000..f931ac1
--- /dev/null
+++ b/version.h.in
@@ -0,0 +1,10 @@
+#ifndef GUITAR_VERSION_H
+#define GUITAR_VERSION_H
+
+// this file was autogenerated from src/version.h.in
+
+int copyright_year = @Guitar_copyright_year@;
+char const product_version[] = "@CMAKE_PROJECT_VERSION@";
+char const source_revision[] = "@Guitar_git_hash@";
+
+#endif // GUITAR_VERSION_H
diff --git a/win.rc.in b/win.rc.in
new file mode 100644
index 0000000..cbdbb9f
--- /dev/null
+++ b/win.rc.in
@@ -0,0 +1,32 @@
+#include <windows.h>
+
+100 ICON DISCARDABLE "Guitar.ico"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@,0
+ PRODUCTVERSION @CMAKE_PROJECT_VERSION_MAJOR@,@CMAKE_PROJECT_VERSION_MINOR@,@CMAKE_PROJECT_VERSION_PATCH@,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "041103a4"
+ BEGIN
+ VALUE "CompanyName", "S.Fuchita"
+ VALUE "FileDescription", "The Git GUI Client"
+ VALUE "FileVersion", "@CMAKE_PROJECT_VERSION_MAJOR@, @CMAKE_PROJECT_VERSION_MINOR@, @CMAKE_PROJECT_VERSION_PATCH@0, 0"
+ VALUE "InternalName", "Guitar.exe"
+ VALUE "LegalCopyright", "Copyright (C) @Guitar_copyright_year S.Fuchita (@soramimi_jp)"
+ VALUE "OriginalFilename","Guitar.exe"
+ VALUE "ProductName", "Guitar"
+ VALUE "ProductVersion", "@CMAKE_PROJECT_VERSION_MAJOR@, @CMAKE_PROJECT_VERSION_MINOR@, @CMAKE_PROJECT_VERSION_PATCH@0, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0411, 932
+ END
+END
diff --git a/zlib.pro b/zlib.pro
deleted file mode 100644
index 913f468..0000000
--- a/zlib.pro
+++ /dev/null
@@ -1,42 +0,0 @@
-unix:CONFIG(debug,debug|release):TARGET = zd
-unix:CONFIG(release,debug|release):TARGET = z
-win32:CONFIG(debug,debug|release):TARGET = libzd
-win32:CONFIG(release,debug|release):TARGET = libz
-
-TEMPLATE = lib
-CONFIG += console staticlib
-CONFIG -= app_bundle
-CONFIG -= qt
-
-DESTDIR = $$PWD/_bin
-
-SOURCES += \
- ../zlib/gzclose.c \
- ../zlib/uncompr.c \
- ../zlib/compress.c \
- ../zlib/adler32.c \
- ../zlib/crc32.c \
- ../zlib/gzread.c \
- ../zlib/infback.c \
- ../zlib/inflate.c \
- ../zlib/trees.c \
- ../zlib/zutil.c \
- ../zlib/inffast.c \
- ../zlib/inftrees.c \
- ../zlib/gzlib.c \
- ../zlib/gzwrite.c \
- ../zlib/deflate.c
-
-HEADERS += \
- ../zlib/trees.h \
- ../zlib/inftrees.h \
- ../zlib/inffast.h \
- ../zlib/inffixed.h \
- ../zlib/crc32.h \
- ../zlib/inflate.h \
- ../zlib/gzguts.h \
- ../zlib/zutil.h \
- ../zlib/deflate.h \
- ../zlib/zconf.h \
- ../zlib/zlib.h
-
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Jun 16, 12:15 AM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
71234
Default Alt Text
(157 KB)
Attached To
Mode
R77 Guitar
Attached
Detach File
Event Timeline