Guitar
MainWindow.h
Go to the documentation of this file.
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3 
4 #include "ApplicationGlobal.h"
5 #include "GitCommandRunner.h"
6 #include "MainWindowTypes.h"
7 #include "RepositoryInfo.h"
8 #include "RepositoryModel.h"
9 #include "RepositoryTreeWidget.h"
10 #include "StatusInfo.h"
11 #include "TextEditorTheme.h"
12 #include "UserEvent.h"
13 #include <QElapsedTimer>
14 #include <QMainWindow>
15 #include <future>
16 #include <memory>
17 #include <span>
18 
19 class AbstractGitCommand;
22 class BranchLabel;
23 class GitObjectCache;
25 class ProgressWidget;
27 class QListWidget;
28 class QListWidgetItem;
29 class QTableWidgetItem;
30 class QTreeWidgetItem;
31 struct CloneParams;
33 struct GitCloneData;
34 struct GitObjectData;
35 struct LogData;
37 struct RepositoryInfo;
38 
39 namespace Ui {
40 class MainWindow;
41 }
42 
43 
44 enum class LogChannel {
45  Default,
46  PTY,
47 };
48 
49 class MainWindow : public QMainWindow {
50  Q_OBJECT
51  friend class UserEventHandler;
52  friend class ImageViewWidget;
53  friend class FileDiffSliderWidget;
54  friend class FileHistoryWindow;
55  friend class FileDiffWidget;
56  friend class AboutDialog;
57  friend class RepositoryTreeWidget; // TODO:
58  friend class MainWindowExchangeData;
59 
60 public:
61  enum {
62  IndexRole = Qt::UserRole,
69  };
73  };
74 
78  };
79 
81  Branches = 0x0001,
82  Tags = 0x0002,
83  Remotes = 0x0100,
84  };
85 
86 private:
87  Ui::MainWindow *ui;
88 
89  struct Private;
91 
93  int row = -1;
94  };
95 
96  enum class FilterTarget {
99  };
100 
101  class GitFile {
102  public:
104  QByteArray content;
105  explicit operator bool() const
106  {
107  return type != GitObject::Type::NONE;
108  }
109  bool is(GitObject::Type t) const
110  {
111  return t == type;
112  }
113  };
114 
115  void postEvent(QObject *receiver, QEvent *event, int ms_later);
116  void postUserEvent(UserEventHandler::variant_t &&v, int ms_later);
118 
119  void updateFileList(const GitHash &id);
120  void updateFileList(const GitCommitItem *commit);
121  void updateFileListLater(int delay_ms);
122  void cancelUpdateFileList();
124 
125  void openRepositoryMain(OpenRepositoryOption const &opt);
126  void openRepository(OpenRepositoryOption const &opt);
127  void reopenRepository(bool validate, OpenRepositoryOption opt);
129  void openSelectedRepository();
130 
131  void doReopenRepository(ProcessStatus *status, const RepositoryInfo &repodata);
132 
133  QStringList selectedFiles_(QListWidget *listwidget) const;
134  QStringList selectedFiles() const;
135  void for_each_selected_files(std::function<void(QString const &)> const &fn);
136  void clearFileList();
137  void clearDiffView();
138 
139  RepositoryTreeIndex repositoryTreeIndex(const QTreeWidgetItem *item) const;
140  std::optional<RepositoryInfo> repositoryItem(const RepositoryTreeIndex &index) const;
141 
142  void reflectRepositories();
143 
144  void updateDiffView(QListWidgetItem const *item);
145  void updateDiffView();
148  void updateStatusBarText();
149  void setRepositoryInfo(QString const &reponame, QString const &brname);
150 
151  QString getIncrementalSearchText() const;
152  void setIncrementalSearchText(QString const &text, int repo_list_select_row = -1);
153  void clearFilterText(int repo_list_select_row = -1);
154  void clearAllFilters(int select_row = -1);
155  bool applyFilter();
156 public:
157  static QString appendCharToFilterText(QString filter, const QString &add);
158 private:
159  bool appendCharToFilterText(const QString &add, FilterTarget ft);
161 
162  void revertCommit();
163  void mergeBranch(QString const &commit, GitMergeFastForward ff, bool squash);
164  void mergeBranch(GitCommitItem const *commit, GitMergeFastForward ff, bool squash);
165  void rebaseBranch(GitCommitItem const *commit);
166  void cherrypick(GitCommitItem const *commit);
167  void merge(GitCommitItem commit = { });
168  void setRemoteOnline(bool f, bool save);
169  void startTimers();
170  void setNetworkingCommandsEnabled(bool enabled);
171 
172  void blame(const QListWidgetItem *item);
173  void blame();
174 
175  QListWidgetItem *currentFileItem() const;
176 
177  void execAreYouSureYouWantToContinueConnectingDialog(QString const &windowtitle);
178  void execConsiderGitRebaseQuitOrWorktreeAddDialog(QString const &windowtitle);
179 
181 
182  struct RemoteBranches {
183  QStringList branches;
184  QStringList all_branches;
185  };
187 
188  bool isGitInitialized() const;
189  void onLogCurrentItemChanged(bool update_file_list);
190  void findNext();
191  void findText(QString const &text);
192  bool locateCommitID(QString const &commit_id);
193  void showStatus();
194  void onStartEvent();
195  void showLogWindow(bool show);
196  bool isValidRemoteURL(QString const &url, QString const &sshkey);
197  QStringList whichCommand_(QString const &cmdfile1, QString const &cmdfile2 = { });
198  QString selectCommand_(QString const &cmdname, const QStringList &cmdfiles, const QStringList &list, QString path, const std::function<void(QString const &)> &callback);
199  QString selectCommand_(QString const &cmdname, QString const &cmdfile, const QStringList &list, QString const &path, const std::function<void(QString const &)> &callback);
200  const RepositoryInfo *findRegisteredRepository(QString *workdir) const;
202  void revertAllFiles();
204  void execRepositoryPropertyDialog(const RepositoryInfo &repo, bool open_repository_menu = false);
205  void execConfigUserDialog(const GitUser &global_user, const GitUser &local_user, bool enable_local_user, QString const &reponame);
206  void setGitCommand(QString const &path, bool save);
207  void setGpgCommand(QString const &path, bool save);
208  void setSshCommand(QString const &path, bool save);
209  bool checkGitCommand();
210  bool saveByteArrayAs(const QByteArray &ba, QString const &dstpath);
211  QString executableOrEmpty(QString const &path);
212  bool checkExecutable(QString const &path);
213  void internalSaveCommandPath(QString const &path, bool save, QString const &name);
214  void logGitVersion();
216  void checkUser();
217 
218  void setCurrentRepository(const RepositoryInfo &repo, bool clear_authentication);
219  std::optional<std::vector<GitDiff>> makeDiffs(GitRunner g, GitHash id, std::future<std::vector<GitSubmoduleItem>> &&async_modules);
220 
221  void updateRemoteInfo();
222 
223  void submodule_add(QString url = { }, QString const &local_dir = { });
224  const GitCommitItem &selectedCommitItem() const;
225  void commit(bool amend = false);
226  void commitAmend();
227 
228  void clone(CloneParams const &a);
229 
230  void push(bool set_upstream, QString const &remote, QString const &branch, bool force);
231  void fetch(GitRunner g, bool prune);
232  void stage(GitRunner g, const std::vector<std::string> &paths);
233  void fetch(GitRunner g);
234  void pull(GitRunner g);
235  void push_tags(GitRunner g);
236  void delete_tags(GitRunner g, const std::vector<std::string> &names);
237  void add_tag(GitRunner g, const std::string &name, GitHash const &commit_id);
238 
239  bool push();
240 
241  void deleteBranch(const GitCommitItem &commit);
242  void deleteSelectedBranch();
243  void resetFile(const QStringList &paths);
244  void clearAuthentication();
245  void clearSshAuthentication();
246  void internalDeleteTags(const std::vector<std::string> &tagnames);
247  void internalAddTag(const std::string &name);
248  void createRepository(QString const &dir);
249  void addRepository(QString const &local_dir, QString const &group = { });
251  void scanFolderAndRegister(QString const &group);
252  void doGitCommand(const std::function<void(GitRunner)> &callback);
253  void setWindowTitle_(const GitUser &user);
255  void setCurrentRemoteName(const std::string &name);
256  void deleteTags(const GitCommitItem &commit);
257  std::vector<std::string> remotes() const;
258  BranchList findBranch(const GitHash &id);
259  QString tempfileHeader() const;
260  void deleteTempFiles();
261  QString newTempFilePath();
262  int limitLogCount() const;
263  bool isThereUncommittedChanges() const;
265  const std::map<GitHash, BranchList> &branchmap() const;
266 
267  void updateWindowTitle(const GitUser &user);
269 
270  std::tuple<QString, BranchLabelList> makeCommitLabels(GitCommitItem const &commit, std::map<GitHash, BranchList> const &branch_map, std::map<GitHash, TagList> const &tag_map) const;
271  QString labelsInfoText(GitCommitItem const &commit);
272 
273  void removeRepositoryFromBookmark(RepositoryTreeIndex const &index, bool ask);
274  void openTerminal(const RepositoryInfo *repo);
275  void openExplorer(const RepositoryInfo *repo);
276  bool askAreYouSureYouWantToRun(QString const &title, QString const &command);
277  bool editFile(QString const &path, QString const &title);
279 
281 
282  void setDiffResult(std::vector<GitDiff> &&diffs);
283  const std::vector<GitSubmoduleItem> &submodules() const;
284  void setSubmodules(const std::vector<GitSubmoduleItem> &submodules);
285  bool runOnRepositoryDir(const std::function<void(QString, QString)> &callback, const RepositoryInfo *repo);
287 
288  const std::map<GitHash, TagList> &tagmap() const;
289  std::map<GitHash, TagList> queryTags(GitRunner g);
290  TagList findTag(const GitHash &id) const;
291 
292  void sshSetPassphrase(const std::string &user, const std::string &pass);
293  std::string sshPassphraseUser() const;
294  std::string sshPassphrasePass() const;
295  void httpSetAuthentication(const std::string &user, const std::string &pass);
296  std::string httpAuthenticationUser() const;
297  std::string httpAuthenticationPass() const;
298  const GitCommitItem *getLog(int index) const;
299 
301  QString getBookmarksFilePath() const;
302  void stopPtyProcess();
303  void abortPtyProcess();
305  const AbstractPtyProcess *getPtyProcess() const;
306  bool getPtyProcessOk() const;
307  bool isPtyProcessRunning() const;
308  void setCompletedHandler(std::function<void (bool, std::shared_ptr<void>)> fn, std::shared_ptr<void> userdata);
309  void setPtyProcessOk(bool pty_process_ok);
310 
311  const std::vector<RepositoryInfo> &repositoryList() const;
312  void setRepositoryList(std::vector<RepositoryInfo> &&list);
313 
314  bool interactionEnabled() const;
315  void setInteractionEnabled(bool enabled);
317  void setInteractionMode(const InteractionMode &im);
318  void setUncommittedChanges(bool uncommited_changes);
319 
320 public:
321  struct DiffResult {
322  std::vector<GitDiff> list_;
323  mutable std::vector<GitDiff const *> ptrs_;
324  DiffResult() = default;
326  : list_(r.list_)
327  {
328  ptrs_.clear();
329  }
330  void operator = (DiffResult const &r)
331  {
332  list_ = r.list_;
333  ptrs_.clear();
334  }
335  void setList(std::vector<GitDiff> &&list)
336  {
337  list_ = std::move(list);
338  ptrs_.clear();
339  }
340  std::span<GitDiff const *> items() const
341  {
342  if (ptrs_.empty()) {
343  const size_t N = list_.size();
344  ptrs_.resize(N);
345  for (size_t i = 0; i < N; i++) {
346  ptrs_[i] = &list_[i];
347  }
348  }
349  return std::span<GitDiff const *>(ptrs_.data(), ptrs_.size());
350  }
351  };
352 private:
353  std::span<const GitDiff *> diffResult() const;
354 
355  void clearLabelMap();
357  bool getForceFetch() const;
358  void setForceFetch(bool force_fetch);
359  GitHash getHeadId() const;
360  void setHeadId(const GitHash &head_id);
361  void setPtyProcessCompletionData(const QVariant &value);
362  const QVariant &getTempRepoForCloneCompleteV() const;
364  bool isRepositoryOpened() const;
365  void initRepository(QString const &path, QString const &reponame, const GitRemote &remote);
366  void updatePtyPocessLog(bool processevents);
367  void appendLogHistory(const QByteArray &str, LogChannel channel);
368  std::vector<std::string> readLogHistoryLines(LogChannel channel);
369  void clearLogHistory(LogChannel channel);
370  void updateAvatar(const GitUser &user, bool request);
371  void cleanSubModule(GitRunner g, QListWidgetItem *item);
372 
375  QString preferredRepositoryGroup() const;
376  void setPreferredRepositoryGroup(QString const &group);
377  bool _addExistingLocalRepository(QString dir, QString name, QString sshkey, bool open, bool save = true, bool msgbox_if_err = true);
378  void addExistingLocalRepositoryWithGroup(QString const &dir, QString const &group);
379  bool addExistingLocalRepository(QString const &dir, bool open);
380  QString currentFileMimeFileType() const;
381 
382  int rowFromCommitId(const GitHash &id);
383 
384  void _updateCommitLogTableView(int delay_ms);
385  void makeCommitLog(GitHash const &head, CommitLogExchangeData exdata, int scroll_pos, int select_row);
386 
387  void updateButton();
388  void runPtyGit(QString const &progress_message, GitRunner g, GitCommandRunner::variant_t var, std::function<void(ProcessStatus *, QVariant const &userdata)> callback, QVariant const &userdata);
389  CommitLogExchangeData queryCommitLog(GitRunner g, bool suppress_uncommit_changes);
390 
391  bool jump(GitRunner g, const GitHash &id);
392  void jump(GitRunner g, QString const &text);
393 
396 
397  void setRetry(std::function<void(const QVariant &)> fn, const QVariant &var);
398  void clearRetry();
399  void retry();
400  bool isRetryQueued() const;
401 
402  void clearGitCommandCache();
403  void clearGitObjectCache();
404 
405  GitCommitItemList log_all2(GitRunner g, const GitHash &id, int maxcount) const;
407  void internalShowPanel(MainWindowFileListType file_list_type);
408 
409  void showFileList(MainWindowFileListType files_list_type);
411  void setupAddFileObjectData();
412  void addFileObjectData(const MainWindowExchangeData &data);
413  void setupStatusInfoHandler();
414  void connectSetCommitLog();
415 
416  void _chooseRepository(QTreeWidgetItem *item);
417  void chooseRepository();
419  void endSession();
420  std::optional<GitCommitItem> getCommitItem(GitRunner g, const GitHash &hash) const;
421  GitHash blobID(QListWidgetItem *item) const;
423 
424 protected:
425  void closeEvent(QCloseEvent *event) override;
426  void dragEnterEvent(QDragEnterEvent *event) override;
427  void keyPressEvent(QKeyEvent *event) override;
428  bool event(QEvent *event) override;
429  bool eventFilter(QObject *watched, QEvent *event) override;
430  std::optional<RepositoryInfo> selectedRepositoryItem() const;
432 
433 protected slots:
434  void onLogIdle();
435 
436 private slots:
437  void updateUI();
438  void onLogVisibilityChanged();
440  void onInterval10ms();
441  void onAvatarReady();
443  void onPtyProcessCompleted(bool ok, PtyProcessCompleted const &data);
444  void onSetCommitLog(const CommitLogExchangeData &log);
445  void onCommitLogCurrentRowChanged(int row);
446 
498  void on_action_window_log_triggered(bool checked);
499  void on_listWidget_files_currentRowChanged(int currentRow);
500  void on_listWidget_files_customContextMenuRequested(const QPoint &pos);
501  void on_listWidget_files_itemDoubleClicked(QListWidgetItem *item);
502  void on_listWidget_staged_currentRowChanged(int currentRow);
503  void on_listWidget_staged_customContextMenuRequested(const QPoint &pos);
504  void on_listWidget_staged_itemDoubleClicked(QListWidgetItem *item);
505  void on_listWidget_unstaged_currentRowChanged(int currentRow);
507  void on_listWidget_unstaged_itemDoubleClicked(QListWidgetItem *item);
510  void on_tableWidget_log_customContextMenuRequested(const QPoint &pos);
511  void on_tableWidget_log_doubleClicked(const QModelIndex &index);
523  void on_treeWidget_repos_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
524  void on_treeWidget_repos_customContextMenuRequested(const QPoint &pos);
525  void on_treeWidget_repos_itemDoubleClicked(QTreeWidgetItem *item, int column);
527 
528  void test();
529  void toggleMaximized();
530 
531  void onRemoteInfoChanged();
532  void onShowStatusInfo(StatusInfo const &info);
533 
535  {
537 
538  clearDiffView();
539 
540  internalShowPanel(panel_type);
541  }
543 
545 
547 
549 
553 
554 signals:
556  void signalSetProgress(float progress);
557  void signalShowStatusInfo(StatusInfo const &info);
559  void sigWriteLog(LogData const &logdata, LogChannel channel);
563  void sigPtyCloneCompleted(bool ok, QVariant const &userdata);
564  void sigPtyFetchCompleted(bool ok, QVariant const &userdata);
565  void sigPtyProcessCompleted(bool ok, PtyProcessCompleted const &data);
567 
568 public:
569  explicit MainWindow(QWidget *parent = nullptr);
570  ~MainWindow() override;
571 
572  QColor color(int i);
573  bool isOnlineMode() const;
574  void updateCurrentFileList();
576  void updateRepositoryList(RepositoryTreeWidget::RepositoryListStyle style = RepositoryTreeWidget::RepositoryListStyle::_Keep, int select_row = -1, QString const &search_text = { });
577 
579 
580  static int indexOfLog(const QListWidgetItem *item);
581  static int indexOfDiff(const QListWidgetItem *item);
582  static std::vector<GitSubmoduleItem> updateSubmodules(GitRunner g, const GitHash &id);
583  static void updateCommitGraph(GitCommitItemList *logs);
584  static TagList findTag(std::map<GitHash, TagList> const &tagmap, GitHash const &id);
585  static QString makeRepositoryName(QString const &loc);
586  static void addDiffItems(std::span<const GitDiff *> diff_list, const std::function<void(const GitObjectData &)> &add_item);
587  static GitHash getObjectID(const QListWidgetItem *item);
588  static QString getFilePath(const QListWidgetItem *item);
589  static QString getSubmodulePath(const QListWidgetItem *item);
590  static QString getSubmoduleCommitId(const QListWidgetItem *item);
591  static std::pair<QString, QString> makeFileItemText(const GitObjectData &data);
592  static QListWidgetItem *newListWidgetFileItem(const GitObjectData &data);
593  static std::string parseDetectedDubiousOwnershipInRepositoryAt(const std::vector<std::string> &lines);
594  static QString abbrevCommitID(const GitCommitItem &commit);
595  static bool isValidWorkingCopy(GitRunner g);
596  bool isValidWorkingCopy(QString const &local_dir);
597 
598  static constexpr int DIGIT_WIDTH = 5;
599  static constexpr int DIGIT_HEIGHT = 7;
600  static void drawDigit(QPainter *pr, int x, int y, int n);
601 
602  void setStatusInfo(StatusInfo const &info);
603  void clearStatusInfo();
604  bool setCurrentLogRow(int row);
605  bool shown();
606  void deleteTags(const std::vector<std::string> &tagnames);
607  void addTag(const std::string &name);
608  int selectedLogIndex() const;
610  bool isAncestorCommit(GitHash const &id) const;
611  void postStartEvent(int ms_later);
612  void setShowLabels(bool show, bool save);
613  void setShowGraph(bool show, bool save);
614  void setShowAvatars(bool show, bool save);
615  bool isLabelsVisible() const;
616  bool isGraphVisible() const;
617  bool isAvatarsVisible() const;
618  bool isAvatarEnabled() const;
619  DiffResult makeDiffList(const GitHash &id, QListWidget *listwidget);
621  void execCommitPropertyDialog(QWidget *parent, const GitCommitItem &commit);
622  void execCommitExploreWindow(QWidget *parent, const GitCommitItem *commit);
623  void execFileHistory(QString const &path);
624  void execFileHistory(const QListWidgetItem *item);
625  void showObjectProperty(const QListWidgetItem *item);
626  bool testRemoteRepositoryValidity(QString const &url, QString const &sshkey);
627  QString selectGitCommand(bool save);
628  QString selectGpgCommand(bool save);
629  QString selectSshCommand(bool save);
630  const GitBranch &currentBranch() const;
631  void setCurrentBranch(const GitBranch &b);
632  const RepositoryInfo &currentRepository() const;
633  QString currentRepositoryName() const;
634  std::string currentRemoteName() const;
635  std::string currentBranchName() const;
636  GitRunner _git(const QString &dir, const QString &submodpath, const QString &sshkey) const;
638  GitRunner new_git_runner(const QString &dir, const QString &sshkey);
640  GitRunner git();
641  static GitRunner git_for_submodule(GitRunner g, GitSubmoduleItem const &submod);
642  bool isValidWorkingCopy(QString const &dir) const;
643  void autoOpenRepository(QString dir, QString const &commit_id = { });
644  std::optional<GitCommitItem> queryCommit(const GitHash &id);
645  bool checkoutLocalBranch(const std::string &name);
646  void checkout(QWidget *parent, const GitCommitItem &commit, std::function<void()> accepted_callback = { });
647  void checkout();
648 
649  bool jumpToCommit(const GitHash &id);
650  bool jumpToCommitWithRevParse(const std::string &id);
651  bool jumpToHEAD();
652 
654  void emitWriteLog(LogData const &logdata, LogChannel channel);
655  QString findFileID(const GitHash &commit_id, QString const &file);
656  const GitCommitItem &commitItem(int row) const;
657  const GitCommitItem &commitItem(GitHash const &id) const;
658  QImage committerIcon(int row, QSize size) const;
659  void changeSshKey(QString const &local_dir, QString const &ssh_key, bool save);
661  const ApplicationSettings *appsettings() const;
662  QString defaultWorkingDir() const;
663  QIcon signatureVerificationIcon(const GitHash &id) const;
664  QAction *addMenuActionProperty(QMenu *menu);
665  QString currentWorkingCopyDir() const;
666 
667  void refresh();
668  bool cloneRepository(const GitCloneData &clonedata, const RepositoryInfo &repodata);
669  GitUser currentGitUser() const;
670  void setupExternalPrograms();
673  void changeRepositoryBookmarkName(RepositoryInfo item, QString new_name);
674  BranchLabelList rowLabels(int row, bool sorted = true) const;
675  void setProgress(float progress);
676  void showProgress(QString const &text, float progress = -1.0f);
677  void hideProgress();
678  void internalAfterFetch();
679  void onRepositoryTreeSortRecent(bool f);
680 
681 private:
682  const GitCommitItemList &commitlog() const;
684 public:
685  std::span<GitCommitItem const *const> commitlogItems() const;
686 
688  void clearLogContents();
689  void updateLogTableView();
690  void setFocusToLogTable();
691  void selectLogTableRow(int row);
692 
694  const RepositoryData *currentRepositoryData() const;
695 
696  void setCommitLog(CommitLogExchangeData &&exdata);
697  bool saveFileAs(QString const &srcpath, QString const &dstpath);
698  bool saveBlobAs(const GitHash &id, QString const &dstpath);
699 
700  bool isIncrementalSearching() const;
701 
702  static void openTerminal(QString const &dir, QString const &ssh_key);
703  static void openExplorer(QString const &dir, QString const &ssh_key);
704  static void openNewGuitar(QString const &path, QString const &commit_id);
705 public slots:
706  void internalWriteLog(const LogData &logdata, LogChannel channel);
707 };
708 
709 #endif // MAINWINDOW_H
#define ASSERT_MAIN_THREAD()
Definition: ApplicationGlobal.h:150
GitMergeFastForward
Definition: GitTypes.h:207
std::vector< NamedCommitItem > NamedCommitList
Definition: Git.h:267
MainWindowFileListType
Definition: MainWindowTypes.h:4
LogChannel
Definition: MainWindow.h:44
QList< BranchLabel > BranchLabelList
Definition: RepositoryModel.h:10
QList< GitBranch > BranchList
Definition: RepositoryModel.h:9
std::vector< GitTag > TagList
Definition: RepositoryModel.h:8
std::shared_ptr< TextEditorTheme > TextEditorThemePtr
Definition: TextEditorTheme.h:9
Definition: AboutDialog.h:10
Definition: AbstractProcess.h:71
Definition: AddRepositoryDialog.h:15
Definition: ApplicationSettings.h:53
ログテーブルウィジェットのブランチ名ラベル
Definition: BranchLabel.h:9
Definition: FileDiffSliderWidget.h:20
The FileDiffWidget class サイドバイサイドで2つのファイルのdiffを表示するウィジェット
Definition: FileDiffWidget.h:41
Definition: FileHistoryWindow.h:13
std::variant< Git_clone, Git_fetch, Git_stage, Git_push, Git_pull, Git_push_tags, Git_delete_tag, Git_delete_tags, Git_add_tag, Git_submodule_add > variant_t
Definition: GitCommandRunner.h:134
Definition: GitTypes.h:30
Definition: GitHash.h:9
Definition: GitObjectManager.h:42
Definition: GitRunner.h:21
Definition: ImageViewWidget.h:13
Definition: GitObjectData.h:23
Definition: MainWindow.h:101
QByteArray content
Definition: MainWindow.h:104
bool is(GitObject::Type t) const
Definition: MainWindow.h:109
GitObject::Type type
Definition: MainWindow.h:103
Definition: MainWindow.h:49
void on_action_fetch_triggered()
Definition: MainWindow.cpp:4796
void on_listWidget_staged_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6262
void onAvatarReady()
Definition: MainWindow.cpp:3367
QStringList selectedFiles() const
Definition: MainWindow.cpp:5473
void setupShowFileListHandler()
Definition: MainWindow.cpp:4284
void autoOpenRepository(QString dir, QString const &commit_id={ })
Definition: MainWindow.cpp:5716
QString selectGitCommand(bool save)
Definition: MainWindow.cpp:5569
QString tempfileHeader() const
Definition: MainWindow.cpp:3445
void on_action_submodule_add_triggered()
Definition: MainWindow.cpp:7440
void closeEvent(QCloseEvent *event) override
Definition: MainWindow.cpp:861
void on_toolButton_terminal_clicked()
Definition: MainWindow.cpp:6729
void clearSshAuthentication()
MainWindow::clearSshAuthentication.
Definition: MainWindow.cpp:1386
bool editFile(QString const &path, QString const &title)
テキストファイルを編集する
Definition: MainWindow.cpp:4080
void on_action_view_refresh_triggered()
Definition: MainWindow.cpp:6106
void on_listWidget_files_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5236
void internalSaveCommandPath(QString const &path, bool save, QString const &name)
MainWindow::internalSaveCommandPath.
Definition: MainWindow.cpp:2412
void on_action_find_next_triggered()
Definition: MainWindow.cpp:7296
bool testRemoteRepositoryValidity(QString const &url, QString const &sshkey)
Definition: MainWindow.cpp:5544
bool isIncrementalSearching() const
Definition: MainWindow.cpp:687
void selectLogTableRow(int row)
Definition: MainWindow.cpp:7488
void openTerminal(const RepositoryInfo *repo)
コマンドプロンプトを開く
Definition: MainWindow.cpp:4040
void updateAvatar(const GitUser &user, bool request)
Definition: MainWindow.cpp:3356
bool isAncestorCommit(GitHash const &id) const
Definition: MainWindow.cpp:6035
QColor color(int i)
MainWindow::color.
Definition: MainWindow.cpp:1236
std::span< GitCommitItem const *const > commitlogItems() const
Definition: MainWindow.cpp:7468
void setProgress(float progress)
Definition: MainWindow.cpp:1044
void on_action_pull_triggered()
Definition: MainWindow.cpp:4818
void doReopenRepository(ProcessStatus *status, const RepositoryInfo &repodata)
MainWindow::doReopenRepository.
Definition: MainWindow.cpp:2609
const GitCommitItem & selectedCommitItem() const
MainWindow::selectedCommitItem.
Definition: MainWindow.cpp:2801
bool locateCommitID(QString const &commit_id)
Definition: MainWindow.cpp:6009
void on_toolButton_pull_clicked()
Definition: MainWindow.cpp:4825
void revertCommit()
Definition: MainWindow.cpp:6468
bool applyFilter()
Definition: MainWindow.cpp:6417
const GitCommitItem * currentCommitItem()
Definition: MainWindow.cpp:4289
const GitBranch & currentBranch() const
Definition: MainWindow.cpp:402
void openSelectedRepository()
MainWindow::openSelectedRepository.
Definition: MainWindow.cpp:1934
static constexpr int DIGIT_WIDTH
Definition: MainWindow.h:598
void reopenRepositoryAsNewSession()
Definition: MainWindow.cpp:1922
void updateCommitLogTableViewLater()
Definition: MainWindow.cpp:3324
void fetch(GitRunner g, bool prune)
Definition: MainWindow.cpp:2939
void changeRepositoryBookmarkName(RepositoryInfo item, QString new_name)
Definition: MainWindow.cpp:3644
std::optional< RepositoryInfo > selectedRepositoryItem() const
Definition: MainWindow.cpp:3509
void msgNoRepositorySelected()
Definition: MainWindow.cpp:3776
TagList findTag(const GitHash &id) const
Definition: MainWindow.cpp:1080
void reflectRepositories()
MainWindow::reflectRepositories()
Definition: MainWindow.cpp:1118
std::string sshPassphraseUser() const
Definition: MainWindow.cpp:1422
void postStartEvent(int ms_later)
開始イベントをポストする
Definition: MainWindow.cpp:496
void on_action_edit_global_gitconfig_triggered()
Definition: MainWindow.cpp:6164
void setShowGraph(bool show, bool save)
Definition: MainWindow.cpp:7352
void on_toolButton_status_clicked()
Definition: MainWindow.cpp:4830
void on_action_sidebar_triggered()
Definition: MainWindow.cpp:7330
void on_action_edit_settings_triggered()
Definition: MainWindow.cpp:6320
RemoteBranches remoteBranches(const GitHash &id)
Definition: MainWindow.cpp:6924
QString executableOrEmpty(QString const &path)
MainWindow::checkExecutable.
Definition: MainWindow.cpp:2378
void startTimers()
インターバルタイマを開始する
Definition: MainWindow.cpp:504
void retry()
Definition: MainWindow.cpp:2692
int selectedLogIndex() const
Definition: MainWindow.cpp:6187
const GitCommitItem & commitItem(int row) const
Definition: MainWindow.cpp:5882
void on_action_explorer_triggered()
Definition: MainWindow.cpp:7213
void createRepository(QString const &dir)
MainWindow::createRepository.
Definition: MainWindow.cpp:3157
bool isRepositoryOpened() const
Definition: MainWindow.cpp:3781
GitRunner new_git_runner()
Definition: MainWindow.cpp:5687
void on_action_stop_process_triggered()
Definition: MainWindow.cpp:6795
~MainWindow() override
Definition: MainWindow.cpp:371
void on_action_edit_git_config_triggered()
Definition: MainWindow.cpp:6171
void internalAfterFetch()
Definition: MainWindow.cpp:2524
void onInterval10ms()
10ms間隔のインターバルタイマ
Definition: MainWindow.cpp:531
void openExplorer(const RepositoryInfo *repo)
ファイルマネージャを開く
Definition: MainWindow.cpp:4052
static QString getSubmoduleCommitId(const QListWidgetItem *item)
Definition: MainWindow.cpp:4197
void stopPtyProcess()
Definition: MainWindow.cpp:3678
void on_listWidget_files_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6267
void on_action_repo_merge_triggered()
Definition: MainWindow.cpp:7310
void setDiffResult(std::vector< GitDiff > &&diffs)
Definition: MainWindow.cpp:4101
bool getPtyProcessOk() const
Definition: MainWindow.cpp:3701
void on_action_expand_commit_log_triggered()
Definition: MainWindow.cpp:7315
void on_action_window_log_triggered(bool checked)
Definition: MainWindow.cpp:6680
void onRepositoryTreeSortRecent(bool f)
Definition: MainWindow.cpp:3546
void doGitCommand(const std::function< void(GitRunner)> &callback)
MainWindow::doGitCommand.
Definition: MainWindow.cpp:3295
void onPtyProcessCompleted(bool ok, PtyProcessCompleted const &data)
Definition: MainWindow.cpp:2582
TagList queryCurrentCommitTagList() const
Definition: MainWindow.cpp:1085
bool isValidRemoteURL(QString const &url, QString const &sshkey)
Definition: MainWindow.cpp:6573
void signalShowStatusInfo(StatusInfo const &info)
void on_action_edit_tags_triggered()
Definition: MainWindow.cpp:7191
void clearGitCommandCache()
Definition: MainWindow.cpp:5651
void signalSetProgress(float progress)
void commit(bool amend=false)
MainWindow::commit.
Definition: MainWindow.cpp:2813
std::vector< std::string > readLogHistoryLines(LogChannel channel)
Definition: MainWindow.cpp:927
@ FilePathRole
Definition: MainWindow.h:63
@ DiffIndexRole
Definition: MainWindow.h:64
@ HeaderRole
Definition: MainWindow.h:66
@ ObjectIdRole
Definition: MainWindow.h:65
@ SubmoduleCommitIdRole
Definition: MainWindow.h:68
@ IndexRole
Definition: MainWindow.h:62
@ SubmodulePathRole
Definition: MainWindow.h:67
GitObjectCache * getObjCache()
Definition: MainWindow.cpp:5646
TextEditorThemePtr themeForTextEditor()
Definition: MainWindow.cpp:5856
void setCurrentRemoteName(const std::string &name)
Definition: MainWindow.cpp:3401
void onCommitDetailGetterReady()
Definition: MainWindow.cpp:3373
ApplicationSettings * appsettings()
Definition: MainWindow.cpp:1448
GitUser currentGitUser() const
Definition: MainWindow.cpp:5711
void removeRepositoryFromBookmark(RepositoryTreeIndex const &index, bool ask)
リポジトリをブックマークから消去
Definition: MainWindow.cpp:3958
QString preferredRepositoryGroup() const
Definition: MainWindow.cpp:1310
void onRemoteInfoChanged()
Definition: MainWindow.cpp:2144
GitCommitItemList log_all2(GitRunner g, const GitHash &id, int maxcount) const
Definition: MainWindow.cpp:1529
void setForceFetch(bool force_fetch)
void updateFileListLater(int delay_ms)
Definition: MainWindow.cpp:4458
Ui::MainWindow * ui
Definition: MainWindow.h:87
void showStatus()
Definition: MainWindow.cpp:4777
void on_tableWidget_log_doubleClicked(const QModelIndex &index)
Definition: MainWindow.cpp:6494
void setShowLabels(bool show, bool save)
Definition: MainWindow.cpp:7338
const RepositoryInfo * findRegisteredRepository(QString *workdir) const
MainWindow::findRegisteredRepository.
Definition: MainWindow.cpp:1256
QImage committerIcon(int row, QSize size) const
Definition: MainWindow.cpp:5899
void on_action_rebase_continue_triggered()
Definition: MainWindow.cpp:4672
void on_action_repo_jump_to_head_triggered()
Definition: MainWindow.cpp:7305
void setRetry(std::function< void(const QVariant &)> fn, const QVariant &var)
Definition: MainWindow.cpp:2680
void clearGitObjectCache()
Definition: MainWindow.cpp:5657
Private * m
Definition: MainWindow.h:89
int limitLogCount() const
Definition: MainWindow.cpp:3475
void onLogVisibilityChanged()
Definition: MainWindow.cpp:916
void on_toolButton_stage_clicked()
Definition: MainWindow.cpp:6111
void on_toolButton_addrepo_clicked()
Definition: MainWindow.cpp:6336
QString selectCommand_(QString const &cmdname, const QStringList &cmdfiles, const QStringList &list, QString path, const std::function< void(QString const &)> &callback)
Definition: MainWindow.cpp:6654
void setupExternalPrograms()
Definition: MainWindow.cpp:613
void stage(GitRunner g, const std::vector< std::string > &paths)
Definition: MainWindow.cpp:2946
static QString getFilePath(const QListWidgetItem *item)
Definition: MainWindow.cpp:4185
static void drawDigit(QPainter *pr, int x, int y, int n)
MainWindow::drawDigit.
Definition: MainWindow.cpp:1172
bool setCurrentLogRow(int row)
Definition: MainWindow.cpp:648
void on_action_edit_gitignore_triggered()
Definition: MainWindow.cpp:6178
void setSshCommand(QString const &path, bool save)
MainWindow::setSshCommand.
Definition: MainWindow.cpp:2257
void addFileObjectData(const MainWindowExchangeData &data)
Definition: MainWindow.cpp:4279
void setFocusToLogTable()
Definition: MainWindow.cpp:7483
void setInteractionMode(const InteractionMode &im)
Definition: MainWindow.cpp:3736
std::tuple< QString, BranchLabelList > makeCommitLabels(GitCommitItem const &commit, std::map< GitHash, BranchList > const &branch_map, std::map< GitHash, TagList > const &tag_map) const
Definition: MainWindow.cpp:3890
bool jumpToCommitWithRevParse(const std::string &id)
Definition: MainWindow.cpp:673
void on_action_restart_trace_logger_triggered()
Definition: MainWindow.cpp:7550
void execCommitExploreWindow(QWidget *parent, const GitCommitItem *commit)
Definition: MainWindow.cpp:4878
std::span< const GitDiff * > diffResult() const
Definition: MainWindow.cpp:3746
void _chooseRepository(QTreeWidgetItem *item)
Definition: MainWindow.cpp:4848
std::map< GitHash, TagList > queryTags(GitRunner g)
Definition: MainWindow.cpp:1501
void on_action_push_all_tags_triggered()
Definition: MainWindow.cpp:6489
void setupStatusInfoHandler()
Definition: MainWindow.cpp:1009
static GitRunner git_for_submodule(GitRunner g, GitSubmoduleItem const &submod)
Definition: MainWindow.cpp:5698
std::optional< RepositoryInfo > repositoryItem(const RepositoryTreeIndex &index) const
Definition: MainWindow.cpp:3500
bool isAvatarEnabled() const
Definition: MainWindow.cpp:3420
MainWindow::FilterTarget filtertarget() const
Definition: MainWindow.cpp:6387
void setUncommittedChanges(bool uncommited_changes)
Definition: MainWindow.cpp:3741
void on_action_exit_triggered()
Definition: MainWindow.cpp:6800
void clearLabelMap()
Definition: MainWindow.cpp:3751
GitRunner git()
Definition: MainWindow.cpp:5693
void sshSetPassphrase(const std::string &user, const std::string &pass)
Definition: MainWindow.cpp:1416
DiffResult makeDiffList(const GitHash &id, QListWidget *listwidget)
Definition: MainWindow.cpp:4478
void clearFilterText(int repo_list_select_row=-1)
フィルタの文字列をクリアする
Definition: MainWindow.cpp:6395
void on_action_repository_property_triggered()
Definition: MainWindow.cpp:6814
void onRepositoriesTreeDropped()
Definition: MainWindow.cpp:1155
void httpSetAuthentication(const std::string &user, const std::string &pass)
Definition: MainWindow.cpp:1432
void on_toolButton_commit_clicked()
Definition: MainWindow.cpp:6159
void updateDiffView()
Definition: MainWindow.cpp:6242
const std::map< GitHash, TagList > & tagmap() const
Definition: MainWindow.cpp:1066
static void openNewGuitar(QString const &path, QString const &commit_id)
Definition: MainWindow.cpp:4031
bool execWelcomeWizardDialog()
MainWindow::execWelcomeWizardDialog.
Definition: MainWindow.cpp:2105
void saveRepositoryBookmark(RepositoryInfo item)
MainWindow::saveRepositoryBookmark.
Definition: MainWindow.cpp:1332
static QString abbrevCommitID(const GitCommitItem &commit)
Definition: MainWindow.cpp:5952
bool saveBlobAs(const GitHash &id, QString const &dstpath)
MainWindow::saveBlobAs.
Definition: MainWindow.cpp:2356
void clearStatusInfo()
Definition: MainWindow.cpp:1039
void revertAllFiles()
MainWindow::revertAllFiles.
Definition: MainWindow.cpp:1280
void emitWriteLog(LogData const &logdata, LogChannel channel)
Definition: MainWindow.cpp:5872
void setCurrentGitRunner(GitRunner g)
Definition: MainWindow.cpp:5641
InteractionMode
Definition: MainWindow.h:75
@ None
Definition: MainWindow.h:76
@ Busy
Definition: MainWindow.h:77
void clearDiffView()
差分ビューを消去
Definition: MainWindow.cpp:3569
void on_action_submodules_triggered()
Definition: MainWindow.cpp:7416
void on_tableWidget_log_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5043
void updateRepositoryList(RepositoryTreeWidget::RepositoryListStyle style=RepositoryTreeWidget::RepositoryListStyle::_Keep, int select_row=-1, QString const &search_text={ })
リポジトリリストを更新
Definition: MainWindow.cpp:3524
void on_action_commit_triggered()
Definition: MainWindow.cpp:4791
void setPreferredRepositoryGroup(QString const &group)
MainWindow::setPreferredRepositoryGroup.
Definition: MainWindow.cpp:1321
void changeSshKey(QString const &local_dir, QString const &ssh_key, bool save)
Definition: MainWindow.cpp:5920
void on_action_add_repository_triggered()
Definition: MainWindow.cpp:6331
void dragEnterEvent(QDragEnterEvent *event) override
Definition: MainWindow.cpp:6272
void updatePtyPocessLog(bool processevents)
PTYプロセスの出力をログに書き込む
Definition: MainWindow.cpp:515
void on_toolButton_fetch_clicked()
Definition: MainWindow.cpp:6347
GitRunner unassosiated_git_runner() const
Definition: MainWindow.cpp:5674
CommitLogExchangeData queryCommitLog(GitRunner g, bool suppress_uncommit_changes)
MainWindow::queryCommitLog.
Definition: MainWindow.cpp:1600
void on_toolButton_explorer_clicked()
Definition: MainWindow.cpp:6734
void internalDeleteTags(const std::vector< std::string > &tagnames)
MainWindow::internalDeleteTags.
Definition: MainWindow.cpp:3121
void on_action_show_avatars_triggered()
Definition: MainWindow.cpp:7409
void addRepositoryAccepted(const AddRepositoryDialog &dlg)
Definition: MainWindow.cpp:3234
static void updateCommitGraph(GitCommitItemList *logs)
Definition: MainWindow.cpp:4502
QListWidgetItem * currentFileItem() const
Definition: MainWindow.cpp:6528
void on_action_push_triggered()
Definition: MainWindow.cpp:4808
void keyPressEvent(QKeyEvent *event) override
Definition: MainWindow.cpp:6282
std::optional< std::vector< GitDiff > > makeDiffs(GitRunner g, GitHash id, std::future< std::vector< GitSubmoduleItem >> &&async_modules)
MainWindow::makeDiffs.
Definition: MainWindow.cpp:2474
const QVariant & getTempRepoForCloneCompleteV() const
Definition: MainWindow.cpp:3771
void setCommitLog(CommitLogExchangeData &&exdata)
Definition: MainWindow.cpp:1482
void on_action_repo_jump_triggered()
Definition: MainWindow.cpp:6700
const GitCommitItem * getLog(int index) const
Definition: MainWindow.cpp:1458
void deleteTempFiles()
MainWindow::deleteTempFiles.
Definition: MainWindow.cpp:3456
void setRepositoryList(std::vector< RepositoryInfo > &&list)
Definition: MainWindow.cpp:1096
void updateUnstagedFileCurrentItem()
Definition: MainWindow.cpp:6247
void sigShowFileList(MainWindowFileListType files_list_type)
void onCommitLogCurrentRowChanged(int row)
Definition: MainWindow.cpp:7493
void on_action_stash_triggered()
Definition: MainWindow.cpp:7233
void signalHideProgress()
void setGitCommand(QString const &path, bool save)
MainWindow::setGitCommand.
Definition: MainWindow.cpp:2225
bool runOnRepositoryDir(const std::function< void(QString, QString)> &callback, const RepositoryInfo *repo)
Definition: MainWindow.cpp:4116
QString getBookmarksFilePath() const
Definition: MainWindow.cpp:3650
bool isOnlineMode() const
Definition: MainWindow.cpp:6748
static GitHash getObjectID(const QListWidgetItem *item)
Definition: MainWindow.cpp:4179
void on_listWidget_unstaged_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6513
int rowFromCommitId(const GitHash &id)
Definition: MainWindow.cpp:658
void connectPtyProcessCompleted()
Definition: MainWindow.cpp:2597
QString findFileID(const GitHash &commit_id, QString const &file)
Definition: MainWindow.cpp:5877
const RepositoryInfo & currentRepository() const
Definition: MainWindow.cpp:412
void onShowStatusInfo(StatusInfo const &info)
Definition: MainWindow.cpp:1014
NamedCommitFlag
Definition: MainWindow.h:80
@ Branches
Definition: MainWindow.h:81
@ Tags
Definition: MainWindow.h:82
@ Remotes
Definition: MainWindow.h:83
void toggleMaximized()
Definition: MainWindow.cpp:909
bool _addExistingLocalRepository(QString dir, QString name, QString sshkey, bool open, bool save=true, bool msgbox_if_err=true)
MainWindow::addExistingLocalRepository.
Definition: MainWindow.cpp:1956
void resetFile(const QStringList &paths)
MainWindow::resetFile.
Definition: MainWindow.cpp:3096
void deleteRemoteBranch(const GitCommitItem &commit)
Definition: MainWindow.cpp:6899
void updateStagedFileCurrentItem()
Definition: MainWindow.cpp:6252
const GitCommitItemList & commitlog() const
Definition: MainWindow.cpp:7463
void on_action_repositories_panel_triggered()
Definition: MainWindow.cpp:7264
void on_toolButton_unstage_clicked()
Definition: MainWindow.cpp:6132
void on_action_delete_branch_triggered()
Definition: MainWindow.cpp:6724
bool saveFileAs(QString const &srcpath, QString const &dstpath)
MainWindow::saveFileAs.
Definition: MainWindow.cpp:2333
void on_listWidget_unstaged_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5305
void on_action_view_sort_by_time_changed()
Definition: MainWindow.cpp:7501
void setSubmodules(const std::vector< GitSubmoduleItem > &submodules)
Definition: MainWindow.cpp:4111
bool askAreYouSureYouWantToRun(QString const &title, QString const &command)
コマンドを実行していいか、ユーザーに尋ねる
Definition: MainWindow.cpp:4066
void setCurrentBranch(const GitBranch &b)
Definition: MainWindow.cpp:407
void execAreYouSureYouWantToContinueConnectingDialog(QString const &windowtitle)
Definition: MainWindow.cpp:6833
InteractionMode interactionMode() const
Definition: MainWindow.cpp:3731
void on_action_find_triggered()
Definition: MainWindow.cpp:7280
void sigPtyFetchCompleted(bool ok, QVariant const &userdata)
void addRepository(QString const &local_dir, QString const &group={ })
MainWindow::addRepository.
Definition: MainWindow.cpp:3224
void on_listWidget_staged_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5428
void blame()
Definition: MainWindow.cpp:4667
QString currentFileMimeFileType() const
NamedCommitList namedCommitItems(int flags)
Definition: MainWindow.cpp:4131
GitHash getHeadId() const
Definition: MainWindow.cpp:3756
std::string httpAuthenticationUser() const
Definition: MainWindow.cpp:1438
bool interactionEnabled() const
Definition: MainWindow.cpp:3721
void setAppSettings(const ApplicationSettings &appsettings)
Definition: MainWindow.cpp:4085
void on_action_expand_file_list_triggered()
Definition: MainWindow.cpp:7320
void cleanSubModule(GitRunner g, QListWidgetItem *item)
Definition: MainWindow.cpp:5522
const std::map< GitHash, BranchList > & branchmap() const
Definition: MainWindow.cpp:3867
void setNetworkingCommandsEnabled(bool enabled)
ネットワークを使用するコマンドの可否をUIに反映する
Definition: MainWindow.cpp:4511
void _updateCommitLogTableView(int delay_ms)
MainWindow::_updateCommitLogTableView.
Definition: MainWindow.cpp:3314
void connectSetCommitLog()
Definition: MainWindow.cpp:1487
void setPtyProcessOk(bool pty_process_ok)
Definition: MainWindow.cpp:3716
void on_action_terminal_triggered()
Definition: MainWindow.cpp:7207
void on_toolButton_select_all_clicked()
Definition: MainWindow.cpp:6148
QString selectGpgCommand(bool save)
Definition: MainWindow.cpp:5610
void abortPtyProcess()
Definition: MainWindow.cpp:3684
std::string sshPassphrasePass() const
Definition: MainWindow.cpp:1427
void on_listWidget_staged_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6518
bool isPtyProcessRunning() const
Definition: MainWindow.cpp:3706
void internalAddTag(const std::string &name)
MainWindow::internalAddTag.
Definition: MainWindow.cpp:3138
QString defaultWorkingDir() const
MainWindow::defaultWorkingDir.
Definition: MainWindow.cpp:448
void on_action_about_triggered()
Definition: MainWindow.cpp:6341
AbstractPtyProcess * getPtyProcess()
Definition: MainWindow.cpp:3691
void on_listWidget_unstaged_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6257
void setStatusInfo(StatusInfo const &info)
Definition: MainWindow.cpp:1061
void reopenRepository(bool validate, OpenRepositoryOption opt)
Definition: MainWindow.cpp:1915
void onLogCurrentItemChanged(bool update_file_list)
コミットログの選択が変化した
Definition: MainWindow.cpp:5960
void submodule_add(QString url={ }, QString const &local_dir={ })
MainWindow::submodule_add.
Definition: MainWindow.cpp:2765
bool cloneRepository(const GitCloneData &clonedata, const RepositoryInfo &repodata)
Definition: MainWindow.cpp:2704
void cancelUpdateFileList()
Definition: MainWindow.cpp:4467
QAction * addMenuActionProperty(QMenu *menu)
MainWindow::addMenuActionProperty.
Definition: MainWindow.cpp:1224
void on_radioButton_remote_offline_clicked()
Definition: MainWindow.cpp:6785
void on_action_fetch_prune_triggered()
Definition: MainWindow.cpp:4801
static int indexOfDiff(const QListWidgetItem *item)
Definition: MainWindow.cpp:4209
void findNext()
Definition: MainWindow.cpp:5973
void setInteractionEnabled(bool enabled)
Definition: MainWindow.cpp:3726
void on_action_reset_HEAD_1_triggered()
Definition: MainWindow.cpp:6739
RepositoryTreeIndex repositoryTreeIndex(const QTreeWidgetItem *item) const
Definition: MainWindow.cpp:3486
void on_action_set_gpg_signing_triggered()
Definition: MainWindow.cpp:6819
void setCompletedHandler(std::function< void(bool, std::shared_ptr< void >)> fn, std::shared_ptr< void > userdata)
Definition: MainWindow.cpp:3711
GitHash blobID(QListWidgetItem *item) const
Definition: MainWindow.cpp:6199
void setWindowTitle_(const GitUser &user)
Definition: MainWindow.cpp:3378
void updateWindowTitle(const GitUser &user)
Definition: MainWindow.cpp:3872
std::string currentRemoteName() const
Definition: MainWindow.cpp:422
bool jumpToCommit(const GitHash &id)
Definition: MainWindow.cpp:667
std::optional< GitCommitItem > getCommitItem(GitRunner g, const GitHash &hash) const
Definition: MainWindow.cpp:1516
GitCommitItemList retrieveCommitLog(GitRunner g) const
Definition: MainWindow.cpp:1584
bool jump(GitRunner g, const GitHash &id)
Definition: MainWindow.cpp:6685
bool shown()
Definition: MainWindow.cpp:572
QStringList selectedFiles_(QListWidget *listwidget) const
Definition: MainWindow.cpp:5462
void execFileHistory(QString const &path)
Definition: MainWindow.cpp:4886
std::vector< std::string > remotes() const
Definition: MainWindow.cpp:3425
void scanFolderAndRegister(QString const &group)
Definition: MainWindow.cpp:3253
void clearLogContents()
Definition: MainWindow.cpp:7473
bool isAvatarsVisible() const
Definition: MainWindow.cpp:7390
MainWindow(QWidget *parent=nullptr)
Definition: MainWindow.cpp:241
QString currentWorkingCopyDir() const
MainWindow::currentWorkingCopyDir.
Definition: MainWindow.cpp:438
QString currentRepositoryName() const
Definition: MainWindow.cpp:417
bool push()
MainWindow::push.
Definition: MainWindow.cpp:2992
void on_action_clean_df_triggered()
Definition: MainWindow.cpp:7226
void sigPtyCloneCompleted(bool ok, QVariant const &userdata)
std::string currentBranchName() const
Definition: MainWindow.cpp:427
bool checkoutLocalBranch(const std::string &name)
Definition: MainWindow.cpp:5764
bool checkGitCommand()
MainWindow::checkGitCommand.
Definition: MainWindow.cpp:2269
static QListWidgetItem * newListWidgetFileItem(const GitObjectData &data)
リストウィジェット用ファイルアイテムを作成する
Definition: MainWindow.cpp:3791
void on_action_create_desktop_launcher_file_triggered()
Definition: MainWindow.cpp:7458
void clearRetry()
Definition: MainWindow.cpp:2686
bool isThereUncommittedChanges() const
Definition: MainWindow.cpp:3481
void execConfigUserDialog(const GitUser &global_user, const GitUser &local_user, bool enable_local_user, QString const &reponame)
MainWindow::execConfigUserDialog.
Definition: MainWindow.cpp:2187
void logGitVersion()
MainWindow::logGitVersion.
Definition: MainWindow.cpp:2427
GitRunner _git(const QString &dir, const QString &submodpath, const QString &sshkey) const
Definition: MainWindow.cpp:5662
void onSetCommitLog(const CommitLogExchangeData &log)
Definition: MainWindow.cpp:1464
RepositoryTreeWidget::RepositoryListStyle repositoriesListStyle() const
Definition: MainWindow.cpp:3516
bool checkExecutable(QString const &path)
MainWindow::checkExecutable.
Definition: MainWindow.cpp:2393
std::string httpAuthenticationPass() const
Definition: MainWindow.cpp:1443
void checkout()
Definition: MainWindow.cpp:5851
void runPtyGit(QString const &progress_message, GitRunner g, GitCommandRunner::variant_t var, std::function< void(ProcessStatus *, QVariant const &userdata)> callback, QVariant const &userdata)
Definition: MainWindow.cpp:2542
void setShowAvatars(bool show, bool save)
Definition: MainWindow.cpp:7366
CloneOperation
Definition: MainWindow.h:70
@ SubmoduleAdd
Definition: MainWindow.h:72
@ Clone
Definition: MainWindow.h:71
void on_action_reflog_triggered()
Definition: MainWindow.cpp:6805
static QString makeRepositoryName(QString const &loc)
MainWindow::makeRepositoryName.
Definition: MainWindow.cpp:2310
void openRepositoryMain(OpenRepositoryOption const &opt)
Definition: MainWindow.cpp:1761
void enableDragAndDropOnRepositoryTree(bool enabled)
void onStartEvent()
Definition: MainWindow.cpp:620
void deleteSelectedBranch()
MainWindow::deleteBranch.
Definition: MainWindow.cpp:3085
static QString appendCharToFilterText(QString filter, const QString &add)
bool getForceFetch() const
void on_toolButton_push_clicked()
Definition: MainWindow.cpp:4813
void updateCurrentFileList()
Definition: MainWindow.cpp:4451
static bool isValidWorkingCopy(GitRunner g)
Definition: MainWindow.cpp:5861
static QString getSubmodulePath(const QListWidgetItem *item)
Definition: MainWindow.cpp:4191
void refresh()
Definition: MainWindow.cpp:6100
bool saveByteArrayAs(const QByteArray &ba, QString const &dstpath)
MainWindow::saveByteArrayAs.
Definition: MainWindow.cpp:2290
void sigWriteLog(LogData const &logdata, LogChannel channel)
void signalAddFileObjectData(const MainWindowExchangeData &data)
void internalClearRepositoryInfo()
MainWindow::internalClearRepositoryInfo.
Definition: MainWindow.cpp:2443
void setRepositoryInfo(QString const &reponame, QString const &brname)
Definition: MainWindow.cpp:3576
void showProgress(QString const &text, float progress=-1.0f)
Definition: MainWindow.cpp:1050
void on_action_show_labels_triggered()
Definition: MainWindow.cpp:7395
void signalUpdateCommitLog()
void deleteTags(const GitCommitItem &commit)
Definition: MainWindow.cpp:3406
void setGpgCommand(QString const &path, bool save)
MainWindow::setGpgCommand.
Definition: MainWindow.cpp:2239
bool isGraphVisible() const
Definition: MainWindow.cpp:7385
void updateUI()
Definition: MainWindow.cpp:4540
void onShowFileList(MainWindowFileListType panel_type)
Definition: MainWindow.h:534
void updateUncommittedChanges(GitRunner g)
Definition: MainWindow.cpp:1492
void setRemoteOnline(bool f, bool save)
Definition: MainWindow.cpp:6753
QIcon signatureVerificationIcon(const GitHash &id) const
MainWindow::signatureVerificationIcon.
Definition: MainWindow.cpp:1185
void cancelPendingUserEvents()
未送信のイベントをすべて削除する
Definition: MainWindow.cpp:485
void onAddFileObjectData(const MainWindowExchangeData &data)
Definition: MainWindow.cpp:4245
void on_toolButton_stop_process_clicked()
Definition: MainWindow.cpp:6790
void commitAmend()
MainWindow::commitAmend.
Definition: MainWindow.cpp:2905
void findText(QString const &text)
Definition: MainWindow.cpp:6030
void addExistingLocalRepositoryWithGroup(QString const &dir, QString const &group)
MainWindow::addExistingLocalRepositoryWithGroup.
Definition: MainWindow.cpp:2080
ProgressWidget * progress_widget() const
Definition: MainWindow.cpp:387
void on_listWidget_files_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6523
void execCommitPropertyDialog(QWidget *parent, const GitCommitItem &commit)
Definition: MainWindow.cpp:4870
void updateAncestorCommitMap()
選択されたコミットを起点として、視認可能な範囲にあるすべての先祖コミットを探索し、 太線描画用の先祖コミット集合を更新する。
Definition: MainWindow.cpp:6050
void on_action_expand_diff_view_triggered()
Definition: MainWindow.cpp:7325
bool execSetGlobalUserDialog()
MainWindow::execSetGlobalUserDialog.
Definition: MainWindow.cpp:1297
void setHeadId(const GitHash &head_id)
Definition: MainWindow.cpp:3761
bool addExistingLocalRepository(QString const &dir, bool open)
Definition: MainWindow.cpp:2095
bool isLabelsVisible() const
Definition: MainWindow.cpp:7380
void on_action_show_graph_triggered()
Definition: MainWindow.cpp:7402
void checkUser()
MainWindow::checkUser.
Definition: MainWindow.cpp:2454
void updateLogTableView()
Definition: MainWindow.cpp:7478
BranchList findBranch(const GitHash &id)
MainWindow::findBranch.
Definition: MainWindow.cpp:3436
void connectShowFileListHandler()
bool saveRepositoryBookmarks()
MainWindow::saveRepositoryBookmarks.
Definition: MainWindow.cpp:1106
static int indexOfLog(const QListWidgetItem *item)
Definition: MainWindow.cpp:4203
void mergeBranch(QString const &commit, GitMergeFastForward ff, bool squash)
Definition: MainWindow.cpp:4614
void initRepository(QString const &path, QString const &reponame, const GitRemote &remote)
MainWindow::initRepository.
Definition: MainWindow.cpp:3199
bool event(QEvent *event) override
Definition: MainWindow.cpp:841
void execRepositoryPropertyDialog(const RepositoryInfo &repo, bool open_repository_menu=false)
MainWindow::execRepositoryPropertyDialog.
Definition: MainWindow.cpp:2156
void sigPtyProcessCompleted(bool ok, PtyProcessCompleted const &data)
void showObjectProperty(const QListWidgetItem *item)
オブジェクトプロパティ
Definition: MainWindow.cpp:5503
void initUpdateFileListTimer()
Definition: MainWindow.cpp:4472
void clearAllFilters(int select_row=-1)
すべてのフィルタの文字列をクリアし、ステータスバーを更新する
Definition: MainWindow.cpp:6409
const std::vector< GitSubmoduleItem > & submodules() const
Definition: MainWindow.cpp:4106
void on_treeWidget_repos_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:4898
bool copyWorkingCopyDirToClipboard()
Definition: MainWindow.cpp:893
void on_action_ssh_triggered()
Definition: MainWindow.cpp:7507
FilterTarget
Definition: MainWindow.h:96
void on_action_configure_user_triggered()
Definition: MainWindow.cpp:6547
BranchLabelList rowLabels(int row, bool sorted=true) const
Definition: MainWindow.cpp:3329
void postUserEvent(UserEventHandler::variant_t &&v, int ms_later)
ユーザーイベントをポストする
Definition: MainWindow.cpp:477
void on_action_repository_status_triggered()
Definition: MainWindow.cpp:4835
bool isRetryQueued() const
Definition: MainWindow.cpp:2699
void remoteInfoChanged()
void setupAddFileObjectData()
ファイルリストを更新
Definition: MainWindow.cpp:4220
void on_action_repo_checkout_triggered()
Definition: MainWindow.cpp:6719
bool jumpToHEAD()
Definition: MainWindow.cpp:680
void on_action_rebase_quit_triggered()
Definition: MainWindow.cpp:4677
void setupConsoleBackend(const ApplicationSettings *as)
Definition: MainWindow.cpp:3655
void showFileList(MainWindowFileListType files_list_type)
Definition: MainWindow.cpp:4240
void clone(CloneParams const &a)
MainWindow::cloneRepository.
Definition: MainWindow.cpp:2667
void on_action_stash_apply_triggered()
Definition: MainWindow.cpp:7240
void on_action_offline_triggered()
Definition: MainWindow.cpp:7259
void cherrypick(GitCommitItem const *commit)
Definition: MainWindow.cpp:4687
QString newTempFilePath()
Definition: MainWindow.cpp:3467
void deleteBranch(const GitCommitItem &commit)
MainWindow::deleteBranch.
Definition: MainWindow.cpp:3040
void removeSelectedRepositoryFromBookmark(bool ask)
リポジトリをブックマークから消去
Definition: MainWindow.cpp:3977
void showLogWindow(bool show)
Definition: MainWindow.cpp:6568
void endSession()
Definition: MainWindow.cpp:1409
void on_action_online_triggered()
Definition: MainWindow.cpp:7254
void internalShowPanel(MainWindowFileListType file_list_type)
Definition: MainWindow.cpp:4225
void on_action_stash_drop_triggered()
Definition: MainWindow.cpp:7247
void setCurrentRepository(const RepositoryInfo &repo, bool clear_authentication)
MainWindow::setCurrentRepository.
Definition: MainWindow.cpp:1399
QString labelsInfoText(GitCommitItem const &commit)
MainWindow::labelsInfoText.
Definition: MainWindow.cpp:3947
void for_each_selected_files(std::function< void(QString const &)> const &fn)
Definition: MainWindow.cpp:5481
QString selectSshCommand(bool save)
Definition: MainWindow.cpp:5626
void setPtyProcessCompletionData(const QVariant &value)
Definition: MainWindow.cpp:3766
void rebaseBranch(GitCommitItem const *commit)
Definition: MainWindow.cpp:4631
bool eventFilter(QObject *watched, QEvent *event) override
Definition: MainWindow.cpp:694
void on_treeWidget_repos_itemDoubleClicked(QTreeWidgetItem *item, int column)
Definition: MainWindow.cpp:4861
void test()
Definition: MainWindow.cpp:7555
void chooseRepository()
Definition: MainWindow.cpp:4855
void saveApplicationSettings()
Definition: MainWindow.cpp:4096
static void addDiffItems(std::span< const GitDiff * > diff_list, const std::function< void(const GitObjectData &)> &add_item)
差分リスト情報をもとにリストウィジェットへアイテムを追加する
Definition: MainWindow.cpp:3826
const std::vector< RepositoryInfo > & repositoryList() const
Definition: MainWindow.cpp:1091
void makeCommitLog(GitHash const &head, CommitLogExchangeData exdata, int scroll_pos, int select_row)
コミットログテーブルウィジェットを構築
Definition: MainWindow.cpp:1650
QStringList whichCommand_(QString const &cmdfile1, QString const &cmdfile2={ })
Definition: MainWindow.cpp:6632
void pull(GitRunner g)
Definition: MainWindow.cpp:2958
void merge(GitCommitItem commit={ })
Definition: MainWindow.cpp:4723
void clearFileList()
ファイルリストを消去
Definition: MainWindow.cpp:3558
void setCurrentRepositoryData(RepositoryData &&data)
Definition: MainWindow.cpp:392
void onLogIdle()
Definition: MainWindow.cpp:6951
void clearLogHistory(LogChannel channel)
Definition: MainWindow.cpp:962
void setUnknownRepositoryInfo()
Definition: MainWindow.cpp:3392
void internalWriteLog(const LogData &logdata, LogChannel channel)
Definition: MainWindow.cpp:968
void delete_tags(GitRunner g, const std::vector< std::string > &names)
Definition: MainWindow.cpp:2972
void clearAuthentication()
MainWindow::clearAuthentication.
Definition: MainWindow.cpp:1374
void on_radioButton_remote_online_clicked()
Definition: MainWindow.cpp:6780
void postEvent(QObject *receiver, QEvent *event, int ms_later)
イベントをポストする
Definition: MainWindow.cpp:459
void on_action_delete_remote_branch_triggered()
Definition: MainWindow.cpp:7202
void add_tag(GitRunner g, const std::string &name, GitHash const &commit_id)
Definition: MainWindow.cpp:2979
void addTag(const std::string &name)
Definition: MainWindow.cpp:6480
void on_action_rebase_abort_triggered()
Definition: MainWindow.cpp:4682
void appendLogHistory(const QByteArray &str, LogChannel channel)
Definition: MainWindow.cpp:921
void on_treeWidget_repos_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
Definition: MainWindow.cpp:4840
void updateButton()
void setIncrementalSearchText(QString const &text, int repo_list_select_row=-1)
フィルタ文字列を設定する
Definition: MainWindow.cpp:6365
static std::vector< GitSubmoduleItem > updateSubmodules(GitRunner g, const GitHash &id)
指定のコミットにおけるサブモジュールリストを取得
Definition: MainWindow.cpp:3590
void on_action_reset_hard_triggered()
Definition: MainWindow.cpp:7219
void push_tags(GitRunner g)
Definition: MainWindow.cpp:2965
void execCommitViewWindow(const GitCommitItem *commit)
Definition: MainWindow.cpp:4496
const RepositoryData * currentRepositoryData() const
Definition: MainWindow.cpp:397
static constexpr int DIGIT_HEIGHT
Definition: MainWindow.h:599
std::optional< GitCommitItem > queryCommit(const GitHash &id)
Definition: MainWindow.cpp:5759
void updateRemoteInfo()
MainWindow::updateRemoteInfo.
Definition: MainWindow.cpp:2500
void execConsiderGitRebaseQuitOrWorktreeAddDialog(QString const &windowtitle)
Definition: MainWindow.cpp:6861
void updateStatusBarText()
Definition: MainWindow.cpp:4562
bool isGitInitialized() const
初期化されていないか
Definition: MainWindow.cpp:607
void updateFileList(const GitHash &id)
Definition: MainWindow.cpp:4299
static std::pair< QString, QString > makeFileItemText(const GitObjectData &data)
void on_action_submodule_update_triggered()
Definition: MainWindow.cpp:7445
static std::string parseDetectedDubiousOwnershipInRepositoryAt(const std::vector< std::string > &lines)
MainWindow::parseDetectedDubiousOwnershipInRepositoryAt.
Definition: MainWindow.cpp:2626
void hideProgress()
Definition: MainWindow.cpp:1056
void openRepository(OpenRepositoryOption const &opt)
MainWindow::openRepository.
Definition: MainWindow.cpp:1880
QString getIncrementalSearchText() const
フィルタ文字列を取得する
Definition: MainWindow.cpp:6356
void sigSetCommitLog(CommitLogExchangeData const &log)
Definition: ProcessStatus.h:9
Definition: ProgressWidget.h:10
Definition: main.h:42
Definition: RepositoryTreeWidget.h:20
RepositoryListStyle
Definition: RepositoryTreeWidget.h:24
Definition: StatusInfo.h:8
Definition: UserEvent.h:31
std::variant< StartEventData, CloneRepositoryEventData > variant_t
Definition: UserEvent.h:36
Definition: AboutDialog.h:6
static Variant var(jstream::Reader const &reader)
Definition: jstream.h:1739
Definition: main.h:36
Definition: RepositoryModel.h:19
Definition: GitTypes.h:73
Definition: GitCloneData.h:7
Definition: GitCommitItem.h:21
Definition: GitObjectData.h:8
Type
Definition: GitObject.h:8
Definition: GitRemote.h:7
Definition: GitSubmodule.h:7
Definition: GitUser.h:7
Definition: main.h:14
Definition: MainWindow.h:321
std::vector< GitDiff > list_
Definition: MainWindow.h:322
std::vector< GitDiff const * > ptrs_
Definition: MainWindow.h:323
void operator=(DiffResult const &r)
Definition: MainWindow.h:330
DiffResult(DiffResult const &r)
Definition: MainWindow.h:325
void setList(std::vector< GitDiff > &&list)
Definition: MainWindow.h:335
std::span< GitDiff const * > items() const
Definition: MainWindow.h:340
Definition: MainWindow.cpp:138
Definition: MainWindow.h:182
QStringList branches
Definition: MainWindow.h:183
QStringList all_branches
Definition: MainWindow.h:184
Definition: MainWindow.h:92
int row
Definition: MainWindow.h:93
Definition: main.h:56
Definition: RepositoryModel.h:12
Definition: RepositoryInfo.h:7