Browse Source

allow to open directory from context menu

Laserlicht 9 months ago
parent
commit
7b73c20229
2 changed files with 22 additions and 0 deletions
  1. 19 0
      launcher/modManager/cmodlistview_moc.cpp
  2. 3 0
      launcher/modManager/cmodlistview_moc.h

+ 19 - 0
launcher/modManager/cmodlistview_moc.cpp

@@ -477,6 +477,13 @@ void CModListView::onCustomContextMenu(const QPoint &point)
 			tr("Update"),
 			[this](ModState mod){ doUpdateMod(mod.getID()); }
 		);
+#ifndef VCMI_MOBILE
+		addContextEntry(
+			mod.isInstalled(),
+			tr("Open directory"),
+			[this](ModState mod){ openModDictionary(mod.getID()); }
+		);
+#endif
 
 		contextMenu->exec(ui->allModsView->viewport()->mapToGlobal(point));
 	}
@@ -667,6 +674,18 @@ void CModListView::doUpdateMod(const QString & modName)
 	}
 }
 
+void CModListView::openModDictionary(const QString & modName)
+{
+	QString tmp = modName;
+	tmp.replace(".", "/Mods/");
+	
+	ResourcePath resID(std::string("Mods/") + tmp.toStdString(), EResType::DIRECTORY);
+	// Get location of the mod, in case-insensitive way
+	QString modDir = pathToQString(*CResourceHandler::get()->getResourceName(resID));
+
+	Helper::revealDirectoryInFileBrowser(modDir);
+}
+
 void CModListView::on_uninstallButton_clicked()
 {
 	QString modName = ui->allModsView->currentIndex().data(ModRoles::ModNameRole).toString();

+ 3 - 0
launcher/modManager/cmodlistview_moc.h

@@ -85,6 +85,9 @@ public:
 	/// update mod by name
 	void doUpdateMod(const QString & modName);
 
+	/// open mod dictionary by name
+	void openModDictionary(const QString & modName);
+
 	/// returns true if mod is available in repository and can be installed
 	bool isModAvailable(const QString & modName);