Windows: the qt GUI builds with Qt/MinGW. No link.
This commit is contained in:
parent
bca286836e
commit
e981394808
12 changed files with 322 additions and 15 deletions
|
@ -90,7 +90,6 @@ src/qtgui/Makefile
|
||||||
src/qtgui/qrc_recoll.cpp
|
src/qtgui/qrc_recoll.cpp
|
||||||
src/qtgui/recoll
|
src/qtgui/recoll
|
||||||
src/qtgui/recoll.app
|
src/qtgui/recoll.app
|
||||||
src/qtgui/recoll.pro
|
|
||||||
src/query/alldeps
|
src/query/alldeps
|
||||||
src/query/recollq
|
src/query/recollq
|
||||||
src/sampleconf/rclmon.sh
|
src/sampleconf/rclmon.sh
|
||||||
|
|
|
@ -42,6 +42,9 @@ inline int readlink(const char *cp, void *buf, int cnt) {
|
||||||
#define PATH_MAX MAX_PATH
|
#define PATH_MAX MAX_PATH
|
||||||
#define MAXPATHLEN PATH_MAX
|
#define MAXPATHLEN PATH_MAX
|
||||||
typedef int mode_t;
|
typedef int mode_t;
|
||||||
|
#define fseeko _fseeki64
|
||||||
|
#define ftello (off_t)_ftelli64
|
||||||
|
#define ftruncate _chsize_s
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef DWORD32 u_int32_t;
|
typedef DWORD32 u_int32_t;
|
||||||
|
@ -50,7 +53,6 @@ typedef unsigned __int8 u_int8_t;
|
||||||
typedef int ssize_t;
|
typedef int ssize_t;
|
||||||
#define strncasecmp _strnicmp
|
#define strncasecmp _strnicmp
|
||||||
#define strcasecmp _stricmp
|
#define strcasecmp _stricmp
|
||||||
#define ftruncate _chsize_s
|
|
||||||
#define chdir _chdir
|
#define chdir _chdir
|
||||||
|
|
||||||
#define R_OK 4
|
#define R_OK 4
|
||||||
|
@ -59,8 +61,6 @@ typedef int ssize_t;
|
||||||
#define RECOLL_DATADIR "C:\\recoll\\"
|
#define RECOLL_DATADIR "C:\\recoll\\"
|
||||||
#define S_ISLNK(X) false
|
#define S_ISLNK(X) false
|
||||||
#define lstat stat
|
#define lstat stat
|
||||||
#define fseeko _fseeki64
|
|
||||||
#define ftello (off_t)_ftelli64
|
|
||||||
#define timegm _mkgmtime
|
#define timegm _mkgmtime
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include "Filter.h"
|
#include "Filter.h"
|
||||||
#include "cstr.h"
|
#include "cstr.h"
|
||||||
|
#include "smallut.h"
|
||||||
|
|
||||||
class RclConfig;
|
class RclConfig;
|
||||||
|
|
||||||
|
@ -93,9 +94,7 @@ public:
|
||||||
|
|
||||||
virtual void set_docsize(off_t size)
|
virtual void set_docsize(off_t size)
|
||||||
{
|
{
|
||||||
char csize[30];
|
m_metaData[cstr_dj_keydocsize] = ulltodecstr(size);
|
||||||
sprintf(csize, "%lld", (long long)size);
|
|
||||||
m_metaData[cstr_dj_keydocsize] = csize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool has_documents() const {return m_havedoc;}
|
virtual bool has_documents() const {return m_havedoc;}
|
||||||
|
|
|
@ -175,15 +175,21 @@ void RclMain::toggleIndexing()
|
||||||
if (m_idxproc) {
|
if (m_idxproc) {
|
||||||
// Indexing was in progress, request stop. Let the periodic
|
// Indexing was in progress, request stop. Let the periodic
|
||||||
// routine check for the results.
|
// routine check for the results.
|
||||||
int pid = m_idxproc->getChildPid();
|
if (m_idxproc->requestChildExit()) {
|
||||||
if (pid > 0) {
|
|
||||||
kill(pid, SIGTERM);
|
|
||||||
m_idxkilled = true;
|
m_idxkilled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IXST_RUNNINGNOTMINE:
|
case IXST_RUNNINGNOTMINE:
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
QMessageBox::warning(0, tr("Warning"),
|
||||||
|
tr("The current indexing process "
|
||||||
|
"was not started from this "
|
||||||
|
"interface, can't kill it"),
|
||||||
|
QMessageBox::Ok,
|
||||||
|
QMessageBox::NoButton);
|
||||||
|
#else
|
||||||
int rep =
|
int rep =
|
||||||
QMessageBox::information(0, tr("Warning"),
|
QMessageBox::information(0, tr("Warning"),
|
||||||
tr("The current indexing process "
|
tr("The current indexing process "
|
||||||
|
@ -199,7 +205,8 @@ void RclMain::toggleIndexing()
|
||||||
if (pid > 0)
|
if (pid > 0)
|
||||||
kill(pid, SIGTERM);
|
kill(pid, SIGTERM);
|
||||||
}
|
}
|
||||||
}
|
#endif
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case IXST_NOTRUNNING:
|
case IXST_NOTRUNNING:
|
||||||
{
|
{
|
||||||
|
|
188
src/qtgui/recoll.pro
Normal file
188
src/qtgui/recoll.pro
Normal file
|
@ -0,0 +1,188 @@
|
||||||
|
# Note this is generated by configure on Linux (see recoll.pro.in).
|
||||||
|
# recoll.pro is under version control anyway and used on Windows
|
||||||
|
|
||||||
|
TEMPLATE = app
|
||||||
|
LANGUAGE = C++
|
||||||
|
|
||||||
|
QT += webkit
|
||||||
|
|
||||||
|
# QT += dbus
|
||||||
|
# QMAKE_CXXFLAGS += -DUSE_ZEITGEIST
|
||||||
|
|
||||||
|
QT += xml
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets webkitwidgets printsupport
|
||||||
|
|
||||||
|
CONFIG += qt warn_on thread release
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
advsearch_w.h \
|
||||||
|
advshist.h \
|
||||||
|
confgui/confgui.h \
|
||||||
|
confgui/confguiindex.h \
|
||||||
|
crontool.h \
|
||||||
|
editdialog.h \
|
||||||
|
firstidx.h \
|
||||||
|
fragbuts.h \
|
||||||
|
idxsched.h \
|
||||||
|
listdialog.h \
|
||||||
|
preview_w.h \
|
||||||
|
ptrans_w.h \
|
||||||
|
rclhelp.h \
|
||||||
|
rclmain_w.h \
|
||||||
|
reslist.h \
|
||||||
|
restable.h \
|
||||||
|
rtitool.h \
|
||||||
|
searchclause_w.h \
|
||||||
|
snippets_w.h \
|
||||||
|
specialindex.h \
|
||||||
|
spell_w.h \
|
||||||
|
ssearch_w.h \
|
||||||
|
systray.h \
|
||||||
|
uiprefs_w.h \
|
||||||
|
viewaction_w.h \
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
advsearch_w.cpp \
|
||||||
|
advshist.cpp \
|
||||||
|
confgui/confgui.cpp \
|
||||||
|
confgui/confguiindex.cpp \
|
||||||
|
crontool.cpp \
|
||||||
|
fragbuts.cpp \
|
||||||
|
guiutils.cpp \
|
||||||
|
main.cpp \
|
||||||
|
multisave.cpp \
|
||||||
|
preview_w.cpp \
|
||||||
|
ptrans_w.cpp \
|
||||||
|
rclhelp.cpp \
|
||||||
|
rclmain_w.cpp \
|
||||||
|
rclm_idx.cpp \
|
||||||
|
rclm_preview.cpp \
|
||||||
|
rclm_saveload.cpp \
|
||||||
|
rclm_view.cpp \
|
||||||
|
rclm_wins.cpp \
|
||||||
|
rclzg.cpp \
|
||||||
|
respopup.cpp \
|
||||||
|
reslist.cpp \
|
||||||
|
restable.cpp \
|
||||||
|
rtitool.cpp \
|
||||||
|
searchclause_w.cpp \
|
||||||
|
snippets_w.cpp \
|
||||||
|
spell_w.cpp \
|
||||||
|
ssearch_w.cpp \
|
||||||
|
systray.cpp \
|
||||||
|
uiprefs_w.cpp \
|
||||||
|
viewaction_w.cpp \
|
||||||
|
xmltosd.cpp
|
||||||
|
|
||||||
|
FORMS = \
|
||||||
|
advsearch.ui \
|
||||||
|
crontool.ui \
|
||||||
|
editdialog.ui \
|
||||||
|
firstidx.ui \
|
||||||
|
idxsched.ui \
|
||||||
|
listdialog.ui \
|
||||||
|
ptrans.ui \
|
||||||
|
rclmain.ui \
|
||||||
|
restable.ui \
|
||||||
|
rtitool.ui \
|
||||||
|
specialindex.ui \
|
||||||
|
spell.ui \
|
||||||
|
snippets.ui \
|
||||||
|
ssearchb.ui \
|
||||||
|
uiprefs.ui \
|
||||||
|
viewaction.ui \
|
||||||
|
|
||||||
|
RESOURCES = recoll.qrc
|
||||||
|
|
||||||
|
INCLUDEPATH += ../common ../index ../internfile ../query ../unac \
|
||||||
|
../utils ../aspell ../rcldb ../qtgui ../xaposix \
|
||||||
|
confgui
|
||||||
|
windows{
|
||||||
|
contains(QMAKE_CC, gcc){
|
||||||
|
# MingW
|
||||||
|
QMAKE_CXXFLAGS += -std=c++0x -Wno-unused-parameter
|
||||||
|
}
|
||||||
|
contains(QMAKE_CC, cl){
|
||||||
|
# Visual Studio
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unix {
|
||||||
|
UI_DIR = .ui
|
||||||
|
MOC_DIR = .moc
|
||||||
|
OBJECTS_DIR = .obj
|
||||||
|
LIBS += -L../.libs -lrecoll
|
||||||
|
|
||||||
|
!macx {
|
||||||
|
# Note: libdir may be substituted with sthing like $(exec_prefix)/lib
|
||||||
|
# at this point and will go as such in the Makefile. Expansion will be
|
||||||
|
# completed at make time.
|
||||||
|
LIBS += -Wl,-rpath=@libdir@/recoll
|
||||||
|
}
|
||||||
|
|
||||||
|
LIBS += @LIBXAPIAN@ $(LIBXAPIANSTATICEXTRA) \
|
||||||
|
@LIBICONV@ $(BDYNAMIC) @LIBQZEITGEIST@ -lz
|
||||||
|
|
||||||
|
|
||||||
|
DEPENDPATH += $$INCLUDEPATH
|
||||||
|
}
|
||||||
|
|
||||||
|
UNAME = $$system(uname -s)
|
||||||
|
contains( UNAME, [lL]inux ) {
|
||||||
|
LIBS += -ldl -lX11
|
||||||
|
}
|
||||||
|
|
||||||
|
contains( UNAME, SunOS ) {
|
||||||
|
LIBS += -ldl
|
||||||
|
}
|
||||||
|
|
||||||
|
macx {
|
||||||
|
ICON = images/recoll.icns
|
||||||
|
}
|
||||||
|
|
||||||
|
TRANSLATIONS = \
|
||||||
|
i18n/recoll_cs.ts \
|
||||||
|
i18n/recoll_da.ts \
|
||||||
|
i18n/recoll_de.ts \
|
||||||
|
i18n/recoll_el.ts \
|
||||||
|
i18n/recoll_es.ts \
|
||||||
|
i18n/recoll_fr.ts \
|
||||||
|
i18n/recoll_it.ts \
|
||||||
|
i18n/recoll_lt.ts \
|
||||||
|
i18n/recoll_ru.ts \
|
||||||
|
i18n/recoll_tr.ts \
|
||||||
|
i18n/recoll_uk.ts \
|
||||||
|
i18n/recoll_xx.ts \
|
||||||
|
i18n/recoll_zh_CN.ts \
|
||||||
|
i18n/recoll_zh.ts \
|
||||||
|
|
||||||
|
unix {
|
||||||
|
isEmpty(PREFIX) {
|
||||||
|
PREFIX = /usr/local
|
||||||
|
}
|
||||||
|
message("Prefix is $$PREFIX")
|
||||||
|
DEFINES += PREFIX=\\\"$$PREFIX\\\"
|
||||||
|
|
||||||
|
# Installation stuff
|
||||||
|
target.path = "$$PREFIX/bin"
|
||||||
|
|
||||||
|
imdata.files = mtpics/*.png
|
||||||
|
imdata.path = $$PREFIX/share/recoll/images
|
||||||
|
trdata.files = i18n/*.qm
|
||||||
|
trdata.path = $$PREFIX/share/recoll/translations
|
||||||
|
desktop.files += ../desktop/recoll-searchgui.desktop
|
||||||
|
desktop.path = $$PREFIX/share/applications/
|
||||||
|
icona.files += ../desktop/recoll.png
|
||||||
|
icona.path = $$PREFIX/share/icons/hicolor/48x48/apps/
|
||||||
|
iconb.files += ../desktop/recoll.png
|
||||||
|
iconb.path = $$PREFIX/share/pixmaps/
|
||||||
|
appdata.files = ../desktop/recoll.appdata.xml
|
||||||
|
appdata.path = $$PREFIX/share/appdata/
|
||||||
|
INSTALLS += target imdata trdata desktop icona iconb appdata
|
||||||
|
|
||||||
|
# The recollinstall script used to do the following to install zh_CN as
|
||||||
|
# zh. Is this still needed?
|
||||||
|
#${INSTALL} -m 0444 ${I18N}/recoll_zh_CN.qm \
|
||||||
|
# ${datadir}/recoll/translations/recoll_zh.qm || exit 1
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
#ifndef _WIN32
|
||||||
/* Copyright (C) 2005 J.F.Dockes
|
/* Copyright (C) 2005 J.F.Dockes
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -174,3 +175,4 @@ out:
|
||||||
if (exitdial)
|
if (exitdial)
|
||||||
QDialog::accept();
|
QDialog::accept();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -31,10 +31,17 @@ class RTIToolW : public QDialog, public Ui::RTIToolW {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
public slots:
|
public slots:
|
||||||
|
#ifdef _WIN32
|
||||||
|
void sesclicked(bool) {}
|
||||||
|
void accept() {}
|
||||||
|
private:
|
||||||
|
void init() {}
|
||||||
|
#else
|
||||||
void sesclicked(bool);
|
void sesclicked(bool);
|
||||||
void accept();
|
void accept();
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -190,6 +190,14 @@ void ExecCmd::zapChild()
|
||||||
(void)wait();
|
(void)wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExecCmd::requestChildExit()
|
||||||
|
{
|
||||||
|
if (m->m_pid > 0) {
|
||||||
|
if (kill(m->m_pid, SIGTERM) == 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* From FreeBSD's which command */
|
/* From FreeBSD's which command */
|
||||||
static bool exec_is_there(const char *candidate)
|
static bool exec_is_there(const char *candidate)
|
||||||
|
|
|
@ -157,17 +157,26 @@ class ExecCmd {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancel/kill command. This can be called from another thread or
|
* Cancel/kill command. This can be called from another thread or
|
||||||
* from the advise callback, which could also raise an exception to
|
* from the advise callback, which could also raise an exception
|
||||||
* accomplish the same thing
|
* to accomplish the same thing. In the owner thread, any I/O loop
|
||||||
|
* will exit at the next iteration, and the process will be waited for.
|
||||||
*/
|
*/
|
||||||
void setKill();
|
void setKill();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get rid of current process (become ready for start).
|
* Get rid of current process (become ready for start). This will signal
|
||||||
|
* politely the process to stop, wait a moment, then terminate it. This
|
||||||
|
* is a blocking call.
|
||||||
*/
|
*/
|
||||||
void zapChild();
|
void zapChild();
|
||||||
|
|
||||||
ExecCmd();
|
/**
|
||||||
|
* Request process termination (SIGTERM or equivalent). This returns
|
||||||
|
* immediately
|
||||||
|
*/
|
||||||
|
bool requestChildExit();
|
||||||
|
|
||||||
|
ExecCmd();
|
||||||
~ExecCmd();
|
~ExecCmd();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -616,6 +616,77 @@ bool pcSubst(const string& in, string& out, const map<string, string>& subs)
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
inline static int ulltorbuf(unsigned long long val, char *rbuf)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
for (idx = 0; val; idx++) {
|
||||||
|
rbuf[idx] = '0' + val % 10;
|
||||||
|
val /= 10;
|
||||||
|
} while (val);
|
||||||
|
rbuf[idx] = 0;
|
||||||
|
return idx;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void ullcopyreverse(const char *rbuf, string& buf, int idx)
|
||||||
|
{
|
||||||
|
buf.reserve(idx+1);
|
||||||
|
for (int i = idx - 1; i >= 0; i--) {
|
||||||
|
buf.push_back(rbuf[i]);
|
||||||
|
}
|
||||||
|
buf.push_back(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ulltodecstr(unsigned long long val, string& buf)
|
||||||
|
{
|
||||||
|
buf.clear();
|
||||||
|
if (val == 0) {
|
||||||
|
buf = "0";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char rbuf[30];
|
||||||
|
int idx = ulltorbuf(val, rbuf);
|
||||||
|
|
||||||
|
ullcopyreverse(rbuf, buf, idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lltodecstr(long long val, string& buf)
|
||||||
|
{
|
||||||
|
buf.clear();
|
||||||
|
if (val == 0) {
|
||||||
|
buf = "0";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool neg = val < 0;
|
||||||
|
if (neg)
|
||||||
|
val = -val;
|
||||||
|
|
||||||
|
char rbuf[30];
|
||||||
|
int idx = ulltorbuf(val, rbuf);
|
||||||
|
|
||||||
|
if (neg)
|
||||||
|
rbuf[idx++] = '-';
|
||||||
|
rbuf[idx] = 0;
|
||||||
|
|
||||||
|
ullcopyreverse(rbuf, buf, idx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string lltodecstr(long long val)
|
||||||
|
{
|
||||||
|
string buf;
|
||||||
|
lltodecstr(val, buf);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
string ulltodecstr(unsigned long long val)
|
||||||
|
{
|
||||||
|
string buf;
|
||||||
|
ulltodecstr(val, buf);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
// Convert byte count into unit (KB/MB...) appropriate for display
|
// Convert byte count into unit (KB/MB...) appropriate for display
|
||||||
string displayableBytes(off_t size)
|
string displayableBytes(off_t size)
|
||||||
|
|
|
@ -134,6 +134,11 @@ extern string truncate_to_word(const string &input, string::size_type maxlen);
|
||||||
/** Truncate in place in an utf8-legal way */
|
/** Truncate in place in an utf8-legal way */
|
||||||
extern void utf8truncate(string &s, int maxlen);
|
extern void utf8truncate(string &s, int maxlen);
|
||||||
|
|
||||||
|
void ulltodecstr(unsigned long long val, string& buf);
|
||||||
|
void lltodecstr(long long val, string& buf);
|
||||||
|
string lltodecstr(long long val);
|
||||||
|
string ulltodecstr(unsigned long long val);
|
||||||
|
|
||||||
/** Convert byte count into unit (KB/MB...) appropriate for display */
|
/** Convert byte count into unit (KB/MB...) appropriate for display */
|
||||||
string displayableBytes(off_t size);
|
string displayableBytes(off_t size);
|
||||||
|
|
||||||
|
|
|
@ -427,6 +427,18 @@ void ExecCmd::zapChild()
|
||||||
setKill();
|
setKill();
|
||||||
(void)wait();
|
(void)wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExecCmd::requestChildExit()
|
||||||
|
{
|
||||||
|
if (m_piProcInfo.hProcess) {
|
||||||
|
LOGDEB(("ExecCmd: GenerateConsoleCtrlEvent -> %d\n",
|
||||||
|
m_piProcInfo.dwProcessId));
|
||||||
|
return GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT,
|
||||||
|
m_piProcInfo.dwProcessId);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void ExecCmd::putenv(const string &envassign)
|
void ExecCmd::putenv(const string &envassign)
|
||||||
{
|
{
|
||||||
vector<string> v;
|
vector<string> v;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue