mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-12-18 03:14:06 +00:00
Win-specific: Select in Explorer the main dictionary file when opening the dictionary folder
This commit is contained in:
parent
fa4c0821eb
commit
ebff287219
|
@ -3464,10 +3464,47 @@ void MainWindow::openDictionaryFolder( const QString & id )
|
||||||
if( dictionaries[ x ]->getDictionaryFilenames().size() > 0 )
|
if( dictionaries[ x ]->getDictionaryFilenames().size() > 0 )
|
||||||
{
|
{
|
||||||
QString fileName = FsEncoding::decode( dictionaries[ x ]->getDictionaryFilenames()[ 0 ].c_str() );
|
QString fileName = FsEncoding::decode( dictionaries[ x ]->getDictionaryFilenames()[ 0 ].c_str() );
|
||||||
|
bool explorerLaunched = false;
|
||||||
|
|
||||||
|
// Platform-dependent way to launch a file explorer and to select a file,
|
||||||
|
// currently only on Windows.
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
if ( !QFileInfo( fileName ).isDir() )
|
||||||
|
{
|
||||||
|
QString param = QLatin1String("explorer.exe ")
|
||||||
|
+ QLatin1String("/select, \"") + QDir::toNativeSeparators( fileName ) + QLatin1String("\"");
|
||||||
|
|
||||||
|
qDebug() << "Launching" << param;
|
||||||
|
|
||||||
|
// We use CreateProcess() directly instead of QProcess::startDetached() since
|
||||||
|
// startDetached() does some evil things with quotes breaking explorer arguments.
|
||||||
|
// E.g., the following file cannot be properly selected via startDetached(), due to equals sign,
|
||||||
|
// which explorer considers as separator:
|
||||||
|
// Z:\GoldenDict\content\-=MDict=-\Test.mdx
|
||||||
|
PROCESS_INFORMATION pinfo;
|
||||||
|
STARTUPINFOW startupInfo = { sizeof( STARTUPINFO ), 0, 0, 0,
|
||||||
|
(ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
|
||||||
|
(ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
};
|
||||||
|
explorerLaunched = CreateProcess(0, (wchar_t*) param.utf16(),
|
||||||
|
0, 0, FALSE, CREATE_UNICODE_ENVIRONMENT | CREATE_NEW_CONSOLE, 0,
|
||||||
|
0, &startupInfo, &pinfo);
|
||||||
|
|
||||||
|
if ( explorerLaunched ) {
|
||||||
|
CloseHandle( pinfo.hThread );
|
||||||
|
CloseHandle( pinfo.hProcess );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ( !explorerLaunched )
|
||||||
|
{
|
||||||
QString folder = QFileInfo( fileName ).absoluteDir().absolutePath();
|
QString folder = QFileInfo( fileName ).absoluteDir().absolutePath();
|
||||||
if( !folder.isEmpty() )
|
if( !folder.isEmpty() )
|
||||||
QDesktopServices::openUrl( folder );
|
QDesktopServices::openUrl( folder );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue