summaryrefslogtreecommitdiff
path: root/src/modinfodialogfiletree.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-27 11:30:46 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:19 -0400
commita818954ee5d02b8723f5b48f458a0c76f9ba1935 (patch)
tree86a892d029f463827f67f1d5a59061ade895aa86 /src/modinfodialogfiletree.cpp
parent4b958d9efed3834ceaa57f6c50a1e8288eff01b0 (diff)
added explore menu item to conflict lists and filetree
changed filetree context menu to always show all items added mnemonics to conflicts context menu
Diffstat (limited to 'src/modinfodialogfiletree.cpp')
-rw-r--r--src/modinfodialogfiletree.cpp178
1 files changed, 103 insertions, 75 deletions
diff --git a/src/modinfodialogfiletree.cpp b/src/modinfodialogfiletree.cpp
index 24faec5e..6690dd2f 100644
--- a/src/modinfodialogfiletree.cpp
+++ b/src/modinfodialogfiletree.cpp
@@ -24,8 +24,9 @@ FileTreeTab::FileTreeTab(
ui->filetree->setColumnWidth(0, 300);
m_actions.newFolder = new QAction(tr("&New Folder"), ui->filetree);
- m_actions.open = new QAction(tr("&Open"), ui->filetree);
+ m_actions.open = new QAction(tr("&Open/Execute"), ui->filetree);
m_actions.preview = new QAction(tr("&Preview"), ui->filetree);
+ m_actions.explore = new QAction(tr("Open in &Explorer"), ui->filetree);
m_actions.rename = new QAction(tr("&Rename"), ui->filetree);
m_actions.del = new QAction(tr("&Delete"), ui->filetree);
m_actions.hide = new QAction(tr("&Hide"), ui->filetree);
@@ -34,6 +35,7 @@ FileTreeTab::FileTreeTab(
connect(m_actions.newFolder, &QAction::triggered, [&]{ onCreateDirectory(); });
connect(m_actions.open, &QAction::triggered, [&]{ onOpen(); });
connect(m_actions.preview, &QAction::triggered, [&]{ onPreview(); });
+ connect(m_actions.explore, &QAction::triggered, [&]{ onExplore(); });
connect(m_actions.rename, &QAction::triggered, [&]{ onRename(); });
connect(m_actions.del, &QAction::triggered, [&]{ onDelete(); });
connect(m_actions.hide, &QAction::triggered, [&]{ onHide(); });
@@ -140,6 +142,17 @@ void FileTreeTab::onPreview()
core().previewFile(parentWidget(), mod()->name(), m_fs->filePath(selection));
}
+void FileTreeTab::onExplore()
+{
+ auto selection = singleSelection();
+
+ if (selection.isValid()) {
+ shell::ExploreFile(m_fs->filePath(selection));
+ } else {
+ shell::ExploreFile(mod()->absolutePath());
+ }
+}
+
void FileTreeTab::onRename()
{
auto selection = singleSelection();
@@ -316,103 +329,118 @@ void FileTreeTab::onContextMenu(const QPoint &pos)
QMenu menu(ui->filetree);
- menu.addAction(m_actions.newFolder);
-
- if (selection.size() > 0) {
- bool enableOpen = true;
- bool enablePreview = true;
- bool enableRename = true;
- bool enableDelete = true;
- bool enableHide = true;
- bool enableUnhide = true;
+ bool enableNewFolder = true;
+ bool enableOpen = true;
+ bool enablePreview = true;
+ bool enableExplore = true;
+ bool enableRename = true;
+ bool enableDelete = true;
+ bool enableHide = true;
+ bool enableUnhide = true;
- if (selection.size() == 1) {
- // single selection
+ if (selection.size() == 0) {
+ // no selection, only new folder and explore
+ enableOpen = false;
+ enablePreview = false;
+ enableRename = false;
+ enableDelete = false;
+ enableHide = false;
+ enableUnhide = false;
+ } else if (selection.size() == 1) {
+ // single selection
- // only enable open action if a file is selected
- bool hasFiles = false;
+ // only enable open action if a file is selected
+ bool hasFiles = false;
- for (auto index : selection) {
- if (m_fs->fileInfo(index).isFile()) {
- hasFiles = true;
- break;
- }
+ for (auto index : selection) {
+ if (m_fs->fileInfo(index).isFile()) {
+ hasFiles = true;
+ break;
}
+ }
- if (!hasFiles) {
- enableOpen = false;
- enablePreview = false;
- }
+ if (!hasFiles) {
+ enableOpen = false;
+ enablePreview = false;
+ }
- const QString fileName = m_fs->fileName(selection[0]);
+ const QString fileName = m_fs->fileName(selection[0]);
- if (!canPreviewFile(plugin(), false, fileName)) {
- enablePreview = false;
- }
+ if (!canPreviewFile(plugin(), false, fileName)) {
+ enablePreview = false;
+ }
- if (!canHideFile(false, fileName)) {
- enableHide = false;
- }
+ if (!canExploreFile(false, fileName)) {
+ enableExplore = false;
+ }
- if (!canUnhideFile(false, fileName)) {
- enableUnhide = false;
- }
- } else {
- // this is a multiple selection, don't show open action so users don't open
- // a thousand files
- enableOpen = false;
- enablePreview = false;
- enableRename = false;
+ if (!canHideFile(false, fileName)) {
+ enableHide = false;
+ }
+
+ if (!canUnhideFile(false, fileName)) {
+ enableUnhide = false;
+ }
+ } else {
+ // this is a multiple selection, don't show open action so users don't open
+ // a thousand files
+ enableOpen = false;
+ enablePreview = false;
+
+ // can't explore multiple files
+ enableExplore = false;
+
+ // can't rename multiple files
+ enableRename = false;
- if (selection.size() < max_scan_for_context_menu) {
- // if the number of selected items is low, checking them to accurately
- // show the menu items is worth it
- enableHide = false;
- enableUnhide = false;
+ if (selection.size() < max_scan_for_context_menu) {
+ // if the number of selected items is low, checking them to accurately
+ // show the menu items is worth it
+ enableHide = false;
+ enableUnhide = false;
- for (const auto& index : selection) {
- const QString fileName = m_fs->fileName(index);
+ for (const auto& index : selection) {
+ const QString fileName = m_fs->fileName(index);
- if (canHideFile(false, fileName)) {
- enableHide = true;
- }
+ if (canHideFile(false, fileName)) {
+ enableHide = true;
+ }
- if (canUnhideFile(false, fileName)) {
- enableUnhide = true;
- }
+ if (canUnhideFile(false, fileName)) {
+ enableUnhide = true;
+ }
- if (enableHide && enableUnhide) {
- // found both, no need to check more
- break;
- }
+ if (enableHide && enableUnhide) {
+ // found both, no need to check more
+ break;
}
}
}
+ }
- if (enableOpen) {
- menu.addAction(m_actions.open);
- }
+ menu.addAction(m_actions.newFolder);
+ m_actions.newFolder->setEnabled(enableNewFolder);
- if (enablePreview) {
- menu.addAction(m_actions.preview);
- }
+ menu.addAction(m_actions.open);
+ m_actions.open->setEnabled(enableOpen);
- if (enableRename) {
- menu.addAction(m_actions.rename);
- }
+ menu.addAction(m_actions.preview);
+ m_actions.preview->setEnabled(enablePreview);
- if (enableDelete) {
- menu.addAction(m_actions.del);
- }
+ menu.addAction(m_actions.explore);
+ m_actions.explore->setEnabled(enableExplore);
- if (enableHide) {
- menu.addAction(m_actions.hide);
- }
+ menu.addAction(m_actions.rename);
+ m_actions.rename->setEnabled(enableRename);
- if (enableUnhide) {
- menu.addAction(m_actions.unhide);
- }
- }
+ menu.addAction(m_actions.del);
+ m_actions.del->setEnabled(enableDelete);
+
+ menu.addAction(m_actions.hide);
+ m_actions.hide->setEnabled(enableHide);
+
+ menu.addAction(m_actions.unhide);
+ m_actions.unhide->setEnabled(enableUnhide);
menu.exec(ui->filetree->viewport()->mapToGlobal(pos));
}