mirror of
https://github.com/Artikash/Textractor.git
synced 2024-12-24 01:14:12 +08:00
add drag'n'drop for extensions
This commit is contained in:
parent
4b82d545bf
commit
ee0a8c4887
@ -1,7 +1,10 @@
|
|||||||
#include "extenwindow.h"
|
#include "extenwindow.h"
|
||||||
#include "ui_extenwindow.h"
|
#include "ui_extenwindow.h"
|
||||||
|
#include "defs.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
#include <QMimeData>
|
||||||
|
#include <QUrl>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@ -19,6 +22,7 @@ namespace
|
|||||||
|
|
||||||
void Load(QString extenName)
|
void Load(QString extenName)
|
||||||
{
|
{
|
||||||
|
if (extenName == ITH_DLL) return;
|
||||||
// Extension is dll and exports "OnNewSentence"
|
// Extension is dll and exports "OnNewSentence"
|
||||||
HMODULE module = GetModuleHandleW(extenName.toStdWString().c_str());
|
HMODULE module = GetModuleHandleW(extenName.toStdWString().c_str());
|
||||||
if (!module) module = LoadLibraryW(extenName.toStdWString().c_str());
|
if (!module) module = LoadLibraryW(extenName.toStdWString().c_str());
|
||||||
@ -91,19 +95,25 @@ ExtenWindow::~ExtenWindow()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtenWindow::on_addButton_clicked()
|
void ExtenWindow::Sync()
|
||||||
{
|
{
|
||||||
QString extenFileName = QFileDialog::getOpenFileName(this, "Select Extension", "C:\\", "Extensions (*.dll)");
|
extenList->clear();
|
||||||
if (!extenFileName.size()) return;
|
extenSaveFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
|
||||||
QString extenName = extenFileName.mid(extenFileName.lastIndexOf("/") + 1);
|
std::shared_lock sharedLock(extenMutex);
|
||||||
QFile::copy(extenFileName, extenName);
|
for (auto extenName : extenNames)
|
||||||
Load(extenName.left(extenName.lastIndexOf(".dll")));
|
{
|
||||||
Sync();
|
extenList->addItem(extenName);
|
||||||
|
extenSaveFile.write((extenName + ">").toUtf8());
|
||||||
|
}
|
||||||
|
extenSaveFile.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtenWindow::on_rmvButton_clicked()
|
void ExtenWindow::Add(QString fileName)
|
||||||
{
|
{
|
||||||
if (auto extenName = extenList->currentItem()) Unload(extenName->text());
|
if (!fileName.endsWith(".dll")) return;
|
||||||
|
QString extenName = fileName.mid(fileName.lastIndexOf("/") + 1);
|
||||||
|
QFile::copy(fileName, extenName);
|
||||||
|
Load(extenName.split(".dll")[0]);
|
||||||
Sync();
|
Sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,15 +130,23 @@ bool ExtenWindow::eventFilter(QObject* target, QEvent* event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtenWindow::Sync()
|
void ExtenWindow::dragEnterEvent(QDragEnterEvent* event)
|
||||||
{
|
{
|
||||||
extenList->clear();
|
event->acceptProposedAction();
|
||||||
extenSaveFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
|
}
|
||||||
std::shared_lock sharedLock(extenMutex);
|
|
||||||
for (auto extenName : extenNames)
|
void ExtenWindow::dropEvent(QDropEvent* event)
|
||||||
{
|
{
|
||||||
extenList->addItem(extenName);
|
for (auto file : event->mimeData()->urls()) Add(file.toLocalFile());
|
||||||
extenSaveFile.write((extenName + ">").toUtf8());
|
|
||||||
}
|
}
|
||||||
extenSaveFile.close();
|
|
||||||
|
void ExtenWindow::on_addButton_clicked()
|
||||||
|
{
|
||||||
|
Add(QFileDialog::getOpenFileName(this, "Select Extension", "C:\\", "Extensions (*.dll)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtenWindow::on_rmvButton_clicked()
|
||||||
|
{
|
||||||
|
if (auto extenName = extenList->currentItem()) Unload(extenName->text());
|
||||||
|
Sync();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
#include "qtcommon.h"
|
#include "qtcommon.h"
|
||||||
#include <shared_mutex>
|
#include <shared_mutex>
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
|
#include <QDragEnterEvent>
|
||||||
|
#include <QDropEvent>
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
@ -25,8 +27,11 @@ private slots:
|
|||||||
void on_rmvButton_clicked();
|
void on_rmvButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool eventFilter(QObject* target, QEvent* event);
|
void Add(QString fileName);
|
||||||
void Sync();
|
void Sync();
|
||||||
|
bool eventFilter(QObject* target, QEvent* event);
|
||||||
|
void dragEnterEvent(QDragEnterEvent* event);
|
||||||
|
void dropEvent(QDropEvent* event);
|
||||||
|
|
||||||
Ui::ExtenWindow* ui;
|
Ui::ExtenWindow* ui;
|
||||||
QFile extenSaveFile = QFile("Extensions.txt");
|
QFile extenSaveFile = QFile("Extensions.txt");
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
<height>300</height>
|
<height>300</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="acceptDrops">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Extensions</string>
|
<string>Extensions</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// vnrhook/defs.h
|
// vnrhook/defs.h
|
||||||
// 8/23/2013 jichi
|
// 8/23/2013 jichi
|
||||||
|
|
||||||
#define ITH_DLL L"vnrhook.dll"
|
#define ITH_DLL L"vnrhook"
|
||||||
|
|
||||||
// Pipes
|
// Pipes
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user