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 internalAfterFetch();
678  void onRepositoryTreeSortRecent(bool f);
679 
680 private:
681  const GitCommitItemList &commitlog() const;
683 public:
684  std::span<GitCommitItem const *const> commitlogItems() const;
685 
687  void clearLogContents();
688  void updateLogTableView();
689  void setFocusToLogTable();
690  void selectLogTableRow(int row);
691 
693  const RepositoryData *currentRepositoryData() const;
694 
695  void setCommitLog(CommitLogExchangeData &&exdata);
696  bool saveFileAs(QString const &srcpath, QString const &dstpath);
697  bool saveBlobAs(const GitHash &id, QString const &dstpath);
698 
699  bool isIncrementalSearching() const;
700 
701  static void openTerminal(QString const &dir, QString const &ssh_key);
702  static void openExplorer(QString const &dir, QString const &ssh_key);
703  static void openNewGuitar(QString const &path, QString const &commit_id);
704 public slots:
705  void internalWriteLog(const LogData &logdata, LogChannel channel);
706 };
707 
708 #endif // MAINWINDOW_H
#define ASSERT_MAIN_THREAD()
Definition: ApplicationGlobal.h:154
GitMergeFastForward
Definition: GitTypes.h:207
std::vector< NamedCommitItem > NamedCommitList
Definition: Git.h:268
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:4810
void on_listWidget_staged_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6276
void onAvatarReady()
Definition: MainWindow.cpp:3380
QStringList selectedFiles() const
Definition: MainWindow.cpp:5487
void setupShowFileListHandler()
Definition: MainWindow.cpp:4298
void autoOpenRepository(QString dir, QString const &commit_id={ })
Definition: MainWindow.cpp:5730
QString selectGitCommand(bool save)
Definition: MainWindow.cpp:5583
QString tempfileHeader() const
Definition: MainWindow.cpp:3458
void on_action_submodule_add_triggered()
Definition: MainWindow.cpp:7440
void closeEvent(QCloseEvent *event) override
Definition: MainWindow.cpp:876
void on_toolButton_terminal_clicked()
Definition: MainWindow.cpp:6743
void clearSshAuthentication()
MainWindow::clearSshAuthentication.
Definition: MainWindow.cpp:1396
bool editFile(QString const &path, QString const &title)
テキストファイルを編集する
Definition: MainWindow.cpp:4094
void on_action_view_refresh_triggered()
Definition: MainWindow.cpp:6120
void on_listWidget_files_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5250
void internalSaveCommandPath(QString const &path, bool save, QString const &name)
MainWindow::internalSaveCommandPath.
Definition: MainWindow.cpp:2425
void on_action_find_next_triggered()
Definition: MainWindow.cpp:7296
bool testRemoteRepositoryValidity(QString const &url, QString const &sshkey)
Definition: MainWindow.cpp:5558
bool isIncrementalSearching() const
Definition: MainWindow.cpp:687
void selectLogTableRow(int row)
Definition: MainWindow.cpp:7488
void openTerminal(const RepositoryInfo *repo)
コマンドプロンプトを開く
Definition: MainWindow.cpp:4054
void updateAvatar(const GitUser &user, bool request)
Definition: MainWindow.cpp:3369
bool isAncestorCommit(GitHash const &id) const
Definition: MainWindow.cpp:6049
QColor color(int i)
MainWindow::color.
Definition: MainWindow.cpp:1246
std::span< GitCommitItem const *const > commitlogItems() const
Definition: MainWindow.cpp:7468
void setProgress(float progress)
Definition: MainWindow.cpp:1059
void on_action_pull_triggered()
Definition: MainWindow.cpp:4832
void doReopenRepository(ProcessStatus *status, const RepositoryInfo &repodata)
MainWindow::doReopenRepository.
Definition: MainWindow.cpp:2622
const GitCommitItem & selectedCommitItem() const
MainWindow::selectedCommitItem.
Definition: MainWindow.cpp:2814
bool locateCommitID(QString const &commit_id)
Definition: MainWindow.cpp:6023
void on_toolButton_pull_clicked()
Definition: MainWindow.cpp:4839
void revertCommit()
Definition: MainWindow.cpp:6482
bool applyFilter()
Definition: MainWindow.cpp:6431
const GitCommitItem * currentCommitItem()
Definition: MainWindow.cpp:4303
const GitBranch & currentBranch() const
Definition: MainWindow.cpp:402
void openSelectedRepository()
MainWindow::openSelectedRepository.
Definition: MainWindow.cpp:1944
static constexpr int DIGIT_WIDTH
Definition: MainWindow.h:598
void reopenRepositoryAsNewSession()
Definition: MainWindow.cpp:1932
void updateCommitLogTableViewLater()
Definition: MainWindow.cpp:3337
void fetch(GitRunner g, bool prune)
Definition: MainWindow.cpp:2952
void changeRepositoryBookmarkName(RepositoryInfo item, QString new_name)
Definition: MainWindow.cpp:3657
std::optional< RepositoryInfo > selectedRepositoryItem() const
Definition: MainWindow.cpp:3522
void msgNoRepositorySelected()
Definition: MainWindow.cpp:3790
TagList findTag(const GitHash &id) const
Definition: MainWindow.cpp:1090
void reflectRepositories()
MainWindow::reflectRepositories()
Definition: MainWindow.cpp:1128
std::string sshPassphraseUser() const
Definition: MainWindow.cpp:1432
void postStartEvent(int ms_later)
開始イベントをポストする
Definition: MainWindow.cpp:496
void on_action_edit_global_gitconfig_triggered()
Definition: MainWindow.cpp:6178
void setShowGraph(bool show, bool save)
Definition: MainWindow.cpp:7352
void on_toolButton_status_clicked()
Definition: MainWindow.cpp:4844
void on_action_sidebar_triggered()
Definition: MainWindow.cpp:7330
void on_action_edit_settings_triggered()
Definition: MainWindow.cpp:6334
RemoteBranches remoteBranches(const GitHash &id)
Definition: MainWindow.cpp:6938
QString executableOrEmpty(QString const &path)
MainWindow::checkExecutable.
Definition: MainWindow.cpp:2391
void startTimers()
インターバルタイマを開始する
Definition: MainWindow.cpp:504
void retry()
Definition: MainWindow.cpp:2705
int selectedLogIndex() const
Definition: MainWindow.cpp:6201
const GitCommitItem & commitItem(int row) const
Definition: MainWindow.cpp:5896
void on_action_explorer_triggered()
Definition: MainWindow.cpp:7213
void createRepository(QString const &dir)
MainWindow::createRepository.
Definition: MainWindow.cpp:3170
bool isRepositoryOpened() const
Definition: MainWindow.cpp:3795
GitRunner new_git_runner()
Definition: MainWindow.cpp:5701
void on_action_stop_process_triggered()
Definition: MainWindow.cpp:6809
~MainWindow() override
Definition: MainWindow.cpp:371
void on_action_edit_git_config_triggered()
Definition: MainWindow.cpp:6185
void internalAfterFetch()
Definition: MainWindow.cpp:2537
void onInterval10ms()
10ms間隔のインターバルタイマ
Definition: MainWindow.cpp:531
void openExplorer(const RepositoryInfo *repo)
ファイルマネージャを開く
Definition: MainWindow.cpp:4066
static QString getSubmoduleCommitId(const QListWidgetItem *item)
Definition: MainWindow.cpp:4211
void stopPtyProcess()
Definition: MainWindow.cpp:3691
void on_listWidget_files_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6281
void on_action_repo_merge_triggered()
Definition: MainWindow.cpp:7310
void setDiffResult(std::vector< GitDiff > &&diffs)
Definition: MainWindow.cpp:4115
bool getPtyProcessOk() const
Definition: MainWindow.cpp:3715
void on_action_expand_commit_log_triggered()
Definition: MainWindow.cpp:7315
void on_action_window_log_triggered(bool checked)
Definition: MainWindow.cpp:6694
void onRepositoryTreeSortRecent(bool f)
Definition: MainWindow.cpp:3559
void doGitCommand(const std::function< void(GitRunner)> &callback)
MainWindow::doGitCommand.
Definition: MainWindow.cpp:3308
void onPtyProcessCompleted(bool ok, PtyProcessCompleted const &data)
Definition: MainWindow.cpp:2595
TagList queryCurrentCommitTagList() const
Definition: MainWindow.cpp:1095
bool isValidRemoteURL(QString const &url, QString const &sshkey)
Definition: MainWindow.cpp:6587
void signalShowStatusInfo(StatusInfo const &info)
void on_action_edit_tags_triggered()
Definition: MainWindow.cpp:7191
void clearGitCommandCache()
Definition: MainWindow.cpp:5665
void signalSetProgress(float progress)
void commit(bool amend=false)
MainWindow::commit.
Definition: MainWindow.cpp:2826
std::vector< std::string > readLogHistoryLines(LogChannel channel)
Definition: MainWindow.cpp:942
@ 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:5660
TextEditorThemePtr themeForTextEditor()
Definition: MainWindow.cpp:5870
void setCurrentRemoteName(const std::string &name)
Definition: MainWindow.cpp:3414
void onCommitDetailGetterReady()
Definition: MainWindow.cpp:3386
ApplicationSettings * appsettings()
Definition: MainWindow.cpp:1458
GitUser currentGitUser() const
Definition: MainWindow.cpp:5725
void removeRepositoryFromBookmark(RepositoryTreeIndex const &index, bool ask)
リポジトリをブックマークから消去
Definition: MainWindow.cpp:3972
QString preferredRepositoryGroup() const
Definition: MainWindow.cpp:1320
void onRemoteInfoChanged()
Definition: MainWindow.cpp:2157
GitCommitItemList log_all2(GitRunner g, const GitHash &id, int maxcount) const
Definition: MainWindow.cpp:1539
void setForceFetch(bool force_fetch)
void updateFileListLater(int delay_ms)
Definition: MainWindow.cpp:4472
Ui::MainWindow * ui
Definition: MainWindow.h:87
void showStatus()
Definition: MainWindow.cpp:4791
void on_tableWidget_log_doubleClicked(const QModelIndex &index)
Definition: MainWindow.cpp:6508
void setShowLabels(bool show, bool save)
Definition: MainWindow.cpp:7338
const RepositoryInfo * findRegisteredRepository(QString *workdir) const
MainWindow::findRegisteredRepository.
Definition: MainWindow.cpp:1266
QImage committerIcon(int row, QSize size) const
Definition: MainWindow.cpp:5913
void on_action_rebase_continue_triggered()
Definition: MainWindow.cpp:4686
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:2693
void clearGitObjectCache()
Definition: MainWindow.cpp:5671
Private * m
Definition: MainWindow.h:89
int limitLogCount() const
Definition: MainWindow.cpp:3488
void onLogVisibilityChanged()
Definition: MainWindow.cpp:931
void on_toolButton_stage_clicked()
Definition: MainWindow.cpp:6125
void on_toolButton_addrepo_clicked()
Definition: MainWindow.cpp:6350
QString selectCommand_(QString const &cmdname, const QStringList &cmdfiles, const QStringList &list, QString path, const std::function< void(QString const &)> &callback)
Definition: MainWindow.cpp:6668
void setupExternalPrograms()
Definition: MainWindow.cpp:613
void stage(GitRunner g, const std::vector< std::string > &paths)
Definition: MainWindow.cpp:2959
static QString getFilePath(const QListWidgetItem *item)
Definition: MainWindow.cpp:4199
static void drawDigit(QPainter *pr, int x, int y, int n)
MainWindow::drawDigit.
Definition: MainWindow.cpp:1182
bool setCurrentLogRow(int row)
Definition: MainWindow.cpp:648
void on_action_edit_gitignore_triggered()
Definition: MainWindow.cpp:6192
void setSshCommand(QString const &path, bool save)
MainWindow::setSshCommand.
Definition: MainWindow.cpp:2270
void addFileObjectData(const MainWindowExchangeData &data)
Definition: MainWindow.cpp:4293
void setFocusToLogTable()
Definition: MainWindow.cpp:7483
void setInteractionMode(const InteractionMode &im)
Definition: MainWindow.cpp:3750
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:3904
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:4892
std::span< const GitDiff * > diffResult() const
Definition: MainWindow.cpp:3760
void _chooseRepository(QTreeWidgetItem *item)
Definition: MainWindow.cpp:4862
std::map< GitHash, TagList > queryTags(GitRunner g)
Definition: MainWindow.cpp:1511
void on_action_push_all_tags_triggered()
Definition: MainWindow.cpp:6503
void setupStatusInfoHandler()
Definition: MainWindow.cpp:1024
static GitRunner git_for_submodule(GitRunner g, GitSubmoduleItem const &submod)
Definition: MainWindow.cpp:5712
std::optional< RepositoryInfo > repositoryItem(const RepositoryTreeIndex &index) const
Definition: MainWindow.cpp:3513
bool isAvatarEnabled() const
Definition: MainWindow.cpp:3433
MainWindow::FilterTarget filtertarget() const
Definition: MainWindow.cpp:6401
void setUncommittedChanges(bool uncommited_changes)
Definition: MainWindow.cpp:3755
void on_action_exit_triggered()
Definition: MainWindow.cpp:6814
void clearLabelMap()
Definition: MainWindow.cpp:3765
GitRunner git()
Definition: MainWindow.cpp:5707
void sshSetPassphrase(const std::string &user, const std::string &pass)
Definition: MainWindow.cpp:1426
DiffResult makeDiffList(const GitHash &id, QListWidget *listwidget)
Definition: MainWindow.cpp:4492
void clearFilterText(int repo_list_select_row=-1)
フィルタの文字列をクリアする
Definition: MainWindow.cpp:6409
void on_action_repository_property_triggered()
Definition: MainWindow.cpp:6828
void onRepositoriesTreeDropped()
Definition: MainWindow.cpp:1165
void httpSetAuthentication(const std::string &user, const std::string &pass)
Definition: MainWindow.cpp:1442
void on_toolButton_commit_clicked()
Definition: MainWindow.cpp:6173
void updateDiffView()
Definition: MainWindow.cpp:6256
const std::map< GitHash, TagList > & tagmap() const
Definition: MainWindow.cpp:1076
static void openNewGuitar(QString const &path, QString const &commit_id)
Definition: MainWindow.cpp:4045
bool execWelcomeWizardDialog()
MainWindow::execWelcomeWizardDialog.
Definition: MainWindow.cpp:2118
void saveRepositoryBookmark(RepositoryInfo item)
MainWindow::saveRepositoryBookmark.
Definition: MainWindow.cpp:1342
static QString abbrevCommitID(const GitCommitItem &commit)
Definition: MainWindow.cpp:5966
bool saveBlobAs(const GitHash &id, QString const &dstpath)
MainWindow::saveBlobAs.
Definition: MainWindow.cpp:2369
void clearStatusInfo()
Definition: MainWindow.cpp:1054
void revertAllFiles()
MainWindow::revertAllFiles.
Definition: MainWindow.cpp:1290
void emitWriteLog(LogData const &logdata, LogChannel channel)
Definition: MainWindow.cpp:5886
void setCurrentGitRunner(GitRunner g)
Definition: MainWindow.cpp:5655
InteractionMode
Definition: MainWindow.h:75
@ None
Definition: MainWindow.h:76
@ Busy
Definition: MainWindow.h:77
void clearDiffView()
差分ビューを消去
Definition: MainWindow.cpp:3582
void on_action_submodules_triggered()
Definition: MainWindow.cpp:7416
void on_tableWidget_log_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5057
void updateRepositoryList(RepositoryTreeWidget::RepositoryListStyle style=RepositoryTreeWidget::RepositoryListStyle::_Keep, int select_row=-1, QString const &search_text={ })
リポジトリリストを更新
Definition: MainWindow.cpp:3537
void on_action_commit_triggered()
Definition: MainWindow.cpp:4805
void setPreferredRepositoryGroup(QString const &group)
MainWindow::setPreferredRepositoryGroup.
Definition: MainWindow.cpp:1331
void changeSshKey(QString const &local_dir, QString const &ssh_key, bool save)
Definition: MainWindow.cpp:5934
void on_action_add_repository_triggered()
Definition: MainWindow.cpp:6345
void dragEnterEvent(QDragEnterEvent *event) override
Definition: MainWindow.cpp:6286
void updatePtyPocessLog(bool processevents)
PTYプロセスの出力をログに書き込む
Definition: MainWindow.cpp:515
void on_toolButton_fetch_clicked()
Definition: MainWindow.cpp:6361
GitRunner unassosiated_git_runner() const
Definition: MainWindow.cpp:5688
CommitLogExchangeData queryCommitLog(GitRunner g, bool suppress_uncommit_changes)
MainWindow::queryCommitLog.
Definition: MainWindow.cpp:1610
void on_toolButton_explorer_clicked()
Definition: MainWindow.cpp:6748
void internalDeleteTags(const std::vector< std::string > &tagnames)
MainWindow::internalDeleteTags.
Definition: MainWindow.cpp:3134
void on_action_show_avatars_triggered()
Definition: MainWindow.cpp:7409
void addRepositoryAccepted(const AddRepositoryDialog &dlg)
Definition: MainWindow.cpp:3247
static void updateCommitGraph(GitCommitItemList *logs)
Definition: MainWindow.cpp:4516
QListWidgetItem * currentFileItem() const
Definition: MainWindow.cpp:6542
void on_action_push_triggered()
Definition: MainWindow.cpp:4822
void keyPressEvent(QKeyEvent *event) override
Definition: MainWindow.cpp:6296
std::optional< std::vector< GitDiff > > makeDiffs(GitRunner g, GitHash id, std::future< std::vector< GitSubmoduleItem >> &&async_modules)
MainWindow::makeDiffs.
Definition: MainWindow.cpp:2487
const QVariant & getTempRepoForCloneCompleteV() const
Definition: MainWindow.cpp:3785
void setCommitLog(CommitLogExchangeData &&exdata)
Definition: MainWindow.cpp:1492
void on_action_repo_jump_triggered()
Definition: MainWindow.cpp:6714
const GitCommitItem * getLog(int index) const
Definition: MainWindow.cpp:1468
void deleteTempFiles()
MainWindow::deleteTempFiles.
Definition: MainWindow.cpp:3469
void setRepositoryList(std::vector< RepositoryInfo > &&list)
Definition: MainWindow.cpp:1106
void updateUnstagedFileCurrentItem()
Definition: MainWindow.cpp:6261
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:2238
bool runOnRepositoryDir(const std::function< void(QString, QString)> &callback, const RepositoryInfo *repo)
Definition: MainWindow.cpp:4130
QString getBookmarksFilePath() const
Definition: MainWindow.cpp:3663
bool isOnlineMode() const
Definition: MainWindow.cpp:6762
static GitHash getObjectID(const QListWidgetItem *item)
Definition: MainWindow.cpp:4193
void on_listWidget_unstaged_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6527
int rowFromCommitId(const GitHash &id)
Definition: MainWindow.cpp:658
void connectPtyProcessCompleted()
Definition: MainWindow.cpp:2610
QString findFileID(const GitHash &commit_id, QString const &file)
Definition: MainWindow.cpp:5891
const RepositoryInfo & currentRepository() const
Definition: MainWindow.cpp:412
void onShowStatusInfo(StatusInfo const &info)
Definition: MainWindow.cpp:1029
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:924
bool _addExistingLocalRepository(QString dir, QString name, QString sshkey, bool open, bool save=true, bool msgbox_if_err=true)
MainWindow::addExistingLocalRepository.
Definition: MainWindow.cpp:1969
void resetFile(const QStringList &paths)
MainWindow::resetFile.
Definition: MainWindow.cpp:3109
void deleteRemoteBranch(const GitCommitItem &commit)
Definition: MainWindow.cpp:6913
void updateStagedFileCurrentItem()
Definition: MainWindow.cpp:6266
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:6146
void on_action_delete_branch_triggered()
Definition: MainWindow.cpp:6738
bool saveFileAs(QString const &srcpath, QString const &dstpath)
MainWindow::saveFileAs.
Definition: MainWindow.cpp:2346
void on_listWidget_unstaged_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5319
void on_action_view_sort_by_time_changed()
Definition: MainWindow.cpp:7501
void setSubmodules(const std::vector< GitSubmoduleItem > &submodules)
Definition: MainWindow.cpp:4125
bool askAreYouSureYouWantToRun(QString const &title, QString const &command)
コマンドを実行していいか、ユーザーに尋ねる
Definition: MainWindow.cpp:4080
void setCurrentBranch(const GitBranch &b)
Definition: MainWindow.cpp:407
void execAreYouSureYouWantToContinueConnectingDialog(QString const &windowtitle)
Definition: MainWindow.cpp:6847
InteractionMode interactionMode() const
Definition: MainWindow.cpp:3745
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:3237
void on_listWidget_staged_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:5442
void blame()
Definition: MainWindow.cpp:4681
QString currentFileMimeFileType() const
NamedCommitList namedCommitItems(int flags)
Definition: MainWindow.cpp:4145
GitHash getHeadId() const
Definition: MainWindow.cpp:3770
std::string httpAuthenticationUser() const
Definition: MainWindow.cpp:1448
bool interactionEnabled() const
Definition: MainWindow.cpp:3735
void setAppSettings(const ApplicationSettings &appsettings)
Definition: MainWindow.cpp:4099
void on_action_expand_file_list_triggered()
Definition: MainWindow.cpp:7320
void cleanSubModule(GitRunner g, QListWidgetItem *item)
Definition: MainWindow.cpp:5536
const std::map< GitHash, BranchList > & branchmap() const
Definition: MainWindow.cpp:3881
void setNetworkingCommandsEnabled(bool enabled)
ネットワークを使用するコマンドの可否をUIに反映する
Definition: MainWindow.cpp:4525
void _updateCommitLogTableView(int delay_ms)
MainWindow::_updateCommitLogTableView.
Definition: MainWindow.cpp:3327
void connectSetCommitLog()
Definition: MainWindow.cpp:1497
void setPtyProcessOk(bool pty_process_ok)
Definition: MainWindow.cpp:3730
void on_action_terminal_triggered()
Definition: MainWindow.cpp:7207
void on_toolButton_select_all_clicked()
Definition: MainWindow.cpp:6162
QString selectGpgCommand(bool save)
Definition: MainWindow.cpp:5624
void abortPtyProcess()
Definition: MainWindow.cpp:3697
std::string sshPassphrasePass() const
Definition: MainWindow.cpp:1437
void on_listWidget_staged_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6532
bool isPtyProcessRunning() const
Definition: MainWindow.cpp:3720
void internalAddTag(const std::string &name)
MainWindow::internalAddTag.
Definition: MainWindow.cpp:3151
QString defaultWorkingDir() const
MainWindow::defaultWorkingDir.
Definition: MainWindow.cpp:448
void on_action_about_triggered()
Definition: MainWindow.cpp:6355
AbstractPtyProcess * getPtyProcess()
Definition: MainWindow.cpp:3705
void on_listWidget_unstaged_currentRowChanged(int currentRow)
Definition: MainWindow.cpp:6271
void setStatusInfo(StatusInfo const &info)
Definition: MainWindow.cpp:1071
void reopenRepository(bool validate, OpenRepositoryOption opt)
Definition: MainWindow.cpp:1925
void onLogCurrentItemChanged(bool update_file_list)
コミットログの選択が変化した
Definition: MainWindow.cpp:5974
void submodule_add(QString url={ }, QString const &local_dir={ })
MainWindow::submodule_add.
Definition: MainWindow.cpp:2778
bool cloneRepository(const GitCloneData &clonedata, const RepositoryInfo &repodata)
Definition: MainWindow.cpp:2717
void cancelUpdateFileList()
Definition: MainWindow.cpp:4481
QAction * addMenuActionProperty(QMenu *menu)
MainWindow::addMenuActionProperty.
Definition: MainWindow.cpp:1234
void on_radioButton_remote_offline_clicked()
Definition: MainWindow.cpp:6799
void on_action_fetch_prune_triggered()
Definition: MainWindow.cpp:4815
static int indexOfDiff(const QListWidgetItem *item)
Definition: MainWindow.cpp:4223
void findNext()
Definition: MainWindow.cpp:5987
void setInteractionEnabled(bool enabled)
Definition: MainWindow.cpp:3740
void on_action_reset_HEAD_1_triggered()
Definition: MainWindow.cpp:6753
RepositoryTreeIndex repositoryTreeIndex(const QTreeWidgetItem *item) const
Definition: MainWindow.cpp:3499
void on_action_set_gpg_signing_triggered()
Definition: MainWindow.cpp:6833
void setCompletedHandler(std::function< void(bool, std::shared_ptr< void >)> fn, std::shared_ptr< void > userdata)
Definition: MainWindow.cpp:3725
GitHash blobID(QListWidgetItem *item) const
Definition: MainWindow.cpp:6213
void setWindowTitle_(const GitUser &user)
Definition: MainWindow.cpp:3391
void updateWindowTitle(const GitUser &user)
Definition: MainWindow.cpp:3886
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:1526
GitCommitItemList retrieveCommitLog(GitRunner g) const
Definition: MainWindow.cpp:1594
bool jump(GitRunner g, const GitHash &id)
Definition: MainWindow.cpp:6699
bool shown()
Definition: MainWindow.cpp:572
QStringList selectedFiles_(QListWidget *listwidget) const
Definition: MainWindow.cpp:5476
void execFileHistory(QString const &path)
Definition: MainWindow.cpp:4900
std::vector< std::string > remotes() const
Definition: MainWindow.cpp:3438
void scanFolderAndRegister(QString const &group)
Definition: MainWindow.cpp:3266
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:3005
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:5778
bool checkGitCommand()
MainWindow::checkGitCommand.
Definition: MainWindow.cpp:2282
static QListWidgetItem * newListWidgetFileItem(const GitObjectData &data)
リストウィジェット用ファイルアイテムを作成する
Definition: MainWindow.cpp:3805
void on_action_create_desktop_launcher_file_triggered()
Definition: MainWindow.cpp:7458
void clearRetry()
Definition: MainWindow.cpp:2699
bool isThereUncommittedChanges() const
Definition: MainWindow.cpp:3494
void execConfigUserDialog(const GitUser &global_user, const GitUser &local_user, bool enable_local_user, QString const &reponame)
MainWindow::execConfigUserDialog.
Definition: MainWindow.cpp:2200
void logGitVersion()
MainWindow::logGitVersion.
Definition: MainWindow.cpp:2440
GitRunner _git(const QString &dir, const QString &submodpath, const QString &sshkey) const
Definition: MainWindow.cpp:5676
void onSetCommitLog(const CommitLogExchangeData &log)
Definition: MainWindow.cpp:1474
RepositoryTreeWidget::RepositoryListStyle repositoriesListStyle() const
Definition: MainWindow.cpp:3529
bool checkExecutable(QString const &path)
MainWindow::checkExecutable.
Definition: MainWindow.cpp:2406
std::string httpAuthenticationPass() const
Definition: MainWindow.cpp:1453
void checkout()
Definition: MainWindow.cpp:5865
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:2555
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:6819
static QString makeRepositoryName(QString const &loc)
MainWindow::makeRepositoryName.
Definition: MainWindow.cpp:2323
void openRepositoryMain(OpenRepositoryOption const &opt)
Definition: MainWindow.cpp:1771
void enableDragAndDropOnRepositoryTree(bool enabled)
void onStartEvent()
Definition: MainWindow.cpp:620
void deleteSelectedBranch()
MainWindow::deleteBranch.
Definition: MainWindow.cpp:3098
static QString appendCharToFilterText(QString filter, const QString &add)
bool getForceFetch() const
void on_toolButton_push_clicked()
Definition: MainWindow.cpp:4827
void updateCurrentFileList()
Definition: MainWindow.cpp:4465
static bool isValidWorkingCopy(GitRunner g)
Definition: MainWindow.cpp:5875
static QString getSubmodulePath(const QListWidgetItem *item)
Definition: MainWindow.cpp:4205
void refresh()
Definition: MainWindow.cpp:6114
bool saveByteArrayAs(const QByteArray &ba, QString const &dstpath)
MainWindow::saveByteArrayAs.
Definition: MainWindow.cpp:2303
void sigWriteLog(LogData const &logdata, LogChannel channel)
void signalAddFileObjectData(const MainWindowExchangeData &data)
void internalClearRepositoryInfo()
MainWindow::internalClearRepositoryInfo.
Definition: MainWindow.cpp:2456
void setRepositoryInfo(QString const &reponame, QString const &brname)
Definition: MainWindow.cpp:3589
void showProgress(QString const &text, float progress=-1.0f)
Definition: MainWindow.cpp:1065
void on_action_show_labels_triggered()
Definition: MainWindow.cpp:7395
void signalUpdateCommitLog()
void deleteTags(const GitCommitItem &commit)
Definition: MainWindow.cpp:3419
void setGpgCommand(QString const &path, bool save)
MainWindow::setGpgCommand.
Definition: MainWindow.cpp:2252
bool isGraphVisible() const
Definition: MainWindow.cpp:7385
void updateUI()
Definition: MainWindow.cpp:4554
void onShowFileList(MainWindowFileListType panel_type)
Definition: MainWindow.h:534
void updateUncommittedChanges(GitRunner g)
Definition: MainWindow.cpp:1502
void setRemoteOnline(bool f, bool save)
Definition: MainWindow.cpp:6767
QIcon signatureVerificationIcon(const GitHash &id) const
MainWindow::signatureVerificationIcon.
Definition: MainWindow.cpp:1195
void cancelPendingUserEvents()
未送信のイベントをすべて削除する
Definition: MainWindow.cpp:485
void onAddFileObjectData(const MainWindowExchangeData &data)
Definition: MainWindow.cpp:4259
void on_toolButton_stop_process_clicked()
Definition: MainWindow.cpp:6804
void commitAmend()
MainWindow::commitAmend.
Definition: MainWindow.cpp:2918
void findText(QString const &text)
Definition: MainWindow.cpp:6044
void addExistingLocalRepositoryWithGroup(QString const &dir, QString const &group)
MainWindow::addExistingLocalRepositoryWithGroup.
Definition: MainWindow.cpp:2093
ProgressWidget * progress_widget() const
Definition: MainWindow.cpp:387
void on_listWidget_files_itemDoubleClicked(QListWidgetItem *item)
Definition: MainWindow.cpp:6537
void execCommitPropertyDialog(QWidget *parent, const GitCommitItem &commit)
Definition: MainWindow.cpp:4884
void updateAncestorCommitMap()
選択されたコミットを起点として、視認可能な範囲にあるすべての先祖コミットを探索し、 太線描画用の先祖コミット集合を更新する。
Definition: MainWindow.cpp:6064
void on_action_expand_diff_view_triggered()
Definition: MainWindow.cpp:7325
bool execSetGlobalUserDialog()
MainWindow::execSetGlobalUserDialog.
Definition: MainWindow.cpp:1307
void setHeadId(const GitHash &head_id)
Definition: MainWindow.cpp:3775
bool addExistingLocalRepository(QString const &dir, bool open)
Definition: MainWindow.cpp:2108
bool isLabelsVisible() const
Definition: MainWindow.cpp:7380
void on_action_show_graph_triggered()
Definition: MainWindow.cpp:7402
void checkUser()
MainWindow::checkUser.
Definition: MainWindow.cpp:2467
void updateLogTableView()
Definition: MainWindow.cpp:7478
BranchList findBranch(const GitHash &id)
MainWindow::findBranch.
Definition: MainWindow.cpp:3449
void connectShowFileListHandler()
bool saveRepositoryBookmarks()
MainWindow::saveRepositoryBookmarks.
Definition: MainWindow.cpp:1116
static int indexOfLog(const QListWidgetItem *item)
Definition: MainWindow.cpp:4217
void mergeBranch(QString const &commit, GitMergeFastForward ff, bool squash)
Definition: MainWindow.cpp:4628
void initRepository(QString const &path, QString const &reponame, const GitRemote &remote)
MainWindow::initRepository.
Definition: MainWindow.cpp:3212
bool event(QEvent *event) override
Definition: MainWindow.cpp:856
void execRepositoryPropertyDialog(const RepositoryInfo &repo, bool open_repository_menu=false)
MainWindow::execRepositoryPropertyDialog.
Definition: MainWindow.cpp:2169
void sigPtyProcessCompleted(bool ok, PtyProcessCompleted const &data)
void showObjectProperty(const QListWidgetItem *item)
オブジェクトプロパティ
Definition: MainWindow.cpp:5517
void initUpdateFileListTimer()
Definition: MainWindow.cpp:4486
void clearAllFilters(int select_row=-1)
すべてのフィルタの文字列をクリアし、ステータスバーを更新する
Definition: MainWindow.cpp:6423
const std::vector< GitSubmoduleItem > & submodules() const
Definition: MainWindow.cpp:4120
void on_treeWidget_repos_customContextMenuRequested(const QPoint &pos)
Definition: MainWindow.cpp:4912
bool copyWorkingCopyDirToClipboard()
Definition: MainWindow.cpp:908
void on_action_ssh_triggered()
Definition: MainWindow.cpp:7507
FilterTarget
Definition: MainWindow.h:96
void on_action_configure_user_triggered()
Definition: MainWindow.cpp:6561
BranchLabelList rowLabels(int row, bool sorted=true) const
Definition: MainWindow.cpp:3342
void postUserEvent(UserEventHandler::variant_t &&v, int ms_later)
ユーザーイベントをポストする
Definition: MainWindow.cpp:477
void on_action_repository_status_triggered()
Definition: MainWindow.cpp:4849
bool isRetryQueued() const
Definition: MainWindow.cpp:2712
void remoteInfoChanged()
void setupAddFileObjectData()
ファイルリストを更新
Definition: MainWindow.cpp:4234
void on_action_repo_checkout_triggered()
Definition: MainWindow.cpp:6733
bool jumpToHEAD()
Definition: MainWindow.cpp:680
void on_action_rebase_quit_triggered()
Definition: MainWindow.cpp:4691
void setupConsoleBackend(const ApplicationSettings *as)
Definition: MainWindow.cpp:3668
void showFileList(MainWindowFileListType files_list_type)
Definition: MainWindow.cpp:4254
void clone(CloneParams const &a)
MainWindow::cloneRepository.
Definition: MainWindow.cpp:2680
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:4701
QString newTempFilePath()
Definition: MainWindow.cpp:3480
void deleteBranch(const GitCommitItem &commit)
MainWindow::deleteBranch.
Definition: MainWindow.cpp:3053
void removeSelectedRepositoryFromBookmark(bool ask)
リポジトリをブックマークから消去
Definition: MainWindow.cpp:3991
void showLogWindow(bool show)
Definition: MainWindow.cpp:6582
void endSession()
Definition: MainWindow.cpp:1419
void on_action_online_triggered()
Definition: MainWindow.cpp:7254
void internalShowPanel(MainWindowFileListType file_list_type)
Definition: MainWindow.cpp:4239
void on_action_stash_drop_triggered()
Definition: MainWindow.cpp:7247
void setCurrentRepository(const RepositoryInfo &repo, bool clear_authentication)
MainWindow::setCurrentRepository.
Definition: MainWindow.cpp:1409
QString labelsInfoText(GitCommitItem const &commit)
MainWindow::labelsInfoText.
Definition: MainWindow.cpp:3961
void for_each_selected_files(std::function< void(QString const &)> const &fn)
Definition: MainWindow.cpp:5495
QString selectSshCommand(bool save)
Definition: MainWindow.cpp:5640
void setPtyProcessCompletionData(const QVariant &value)
Definition: MainWindow.cpp:3780
void rebaseBranch(GitCommitItem const *commit)
Definition: MainWindow.cpp:4645
bool eventFilter(QObject *watched, QEvent *event) override
Definition: MainWindow.cpp:694
void on_treeWidget_repos_itemDoubleClicked(QTreeWidgetItem *item, int column)
Definition: MainWindow.cpp:4875
void test()
Definition: MainWindow.cpp:7555
void chooseRepository()
Definition: MainWindow.cpp:4869
void saveApplicationSettings()
Definition: MainWindow.cpp:4110
static void addDiffItems(std::span< const GitDiff * > diff_list, const std::function< void(const GitObjectData &)> &add_item)
差分リスト情報をもとにリストウィジェットへアイテムを追加する
Definition: MainWindow.cpp:3840
const std::vector< RepositoryInfo > & repositoryList() const
Definition: MainWindow.cpp:1101
void makeCommitLog(GitHash const &head, CommitLogExchangeData exdata, int scroll_pos, int select_row)
コミットログテーブルウィジェットを構築
Definition: MainWindow.cpp:1660
QStringList whichCommand_(QString const &cmdfile1, QString const &cmdfile2={ })
Definition: MainWindow.cpp:6646
void pull(GitRunner g)
Definition: MainWindow.cpp:2971
void merge(GitCommitItem commit={ })
Definition: MainWindow.cpp:4737
void clearFileList()
ファイルリストを消去
Definition: MainWindow.cpp:3571
void setCurrentRepositoryData(RepositoryData &&data)
Definition: MainWindow.cpp:392
void onLogIdle()
Definition: MainWindow.cpp:6965
void clearLogHistory(LogChannel channel)
Definition: MainWindow.cpp:977
void setUnknownRepositoryInfo()
Definition: MainWindow.cpp:3405
void internalWriteLog(const LogData &logdata, LogChannel channel)
Definition: MainWindow.cpp:983
void delete_tags(GitRunner g, const std::vector< std::string > &names)
Definition: MainWindow.cpp:2985
void clearAuthentication()
MainWindow::clearAuthentication.
Definition: MainWindow.cpp:1384
void on_radioButton_remote_online_clicked()
Definition: MainWindow.cpp:6794
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:2992
void addTag(const std::string &name)
Definition: MainWindow.cpp:6494
void on_action_rebase_abort_triggered()
Definition: MainWindow.cpp:4696
void appendLogHistory(const QByteArray &str, LogChannel channel)
Definition: MainWindow.cpp:936
void on_treeWidget_repos_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
Definition: MainWindow.cpp:4854
void updateButton()
void setIncrementalSearchText(QString const &text, int repo_list_select_row=-1)
フィルタ文字列を設定する
Definition: MainWindow.cpp:6379
static std::vector< GitSubmoduleItem > updateSubmodules(GitRunner g, const GitHash &id)
指定のコミットにおけるサブモジュールリストを取得
Definition: MainWindow.cpp:3603
void on_action_reset_hard_triggered()
Definition: MainWindow.cpp:7219
void push_tags(GitRunner g)
Definition: MainWindow.cpp:2978
void execCommitViewWindow(const GitCommitItem *commit)
Definition: MainWindow.cpp:4510
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:5773
void updateRemoteInfo()
MainWindow::updateRemoteInfo.
Definition: MainWindow.cpp:2513
void execConsiderGitRebaseQuitOrWorktreeAddDialog(QString const &windowtitle)
Definition: MainWindow.cpp:6875
void updateStatusBarText()
Definition: MainWindow.cpp:4576
bool isGitInitialized() const
初期化されていないか
Definition: MainWindow.cpp:607
void updateFileList(const GitHash &id)
Definition: MainWindow.cpp:4313
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:2639
void openRepository(OpenRepositoryOption const &opt)
MainWindow::openRepository.
Definition: MainWindow.cpp:1890
QString getIncrementalSearchText() const
フィルタ文字列を取得する
Definition: MainWindow.cpp:6370
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