diff options
author | Timothy Pearson <[email protected]> | 2011-11-24 17:41:52 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2011-11-24 17:41:52 -0600 |
commit | a27251c64504953fe17ab797e978f2f4928806d0 (patch) | |
tree | 8951b14ec9e4066ede1b1d75524f60eb032136fb /qt3 | |
parent | 64385ab9a4a3c84fd8b66a14889d1cb01d2c47a0 (diff) | |
download | kgtk-qt3-a27251c64504953fe17ab797e978f2f4928806d0.tar.gz kgtk-qt3-a27251c64504953fe17ab797e978f2f4928806d0.zip |
Cleanup
Diffstat (limited to 'qt3')
-rw-r--r-- | qt3/CMakeLists.txt | 39 | ||||
-rwxr-xr-x | qt3/kqt3-wrapper.cmake | 29 | ||||
-rw-r--r-- | qt3/kqt3.cpp | 671 |
3 files changed, 0 insertions, 739 deletions
diff --git a/qt3/CMakeLists.txt b/qt3/CMakeLists.txt deleted file mode 100644 index 7dfc840..0000000 --- a/qt3/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -################################################# -# -# (C) 2011 Timothy Pearson -# kb9vqf (AT) pearsoncomputing.net -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -include_directories( - ${TQT_INCLUDE_DIRS} - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/common - ${CMAKE_CURRENT_BINARY_DIR} -) - -link_directories( - ${TQT_LIBRARY_DIRS} -) - -message("** INFORMATION: Qt3 LD_PRELOAD library will be built.") - -# set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) -set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) - -ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mangled.h - COMMAND ${CMAKE_SOURCE_DIR}/mangled.sh ${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_BINARY_DIR}/mangled.h) - -set(kqt3_SRCS kqt3.cpp mangled.h) -add_definitions(${QT_DEFINITIONS} -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT) -add_library(kqt3 SHARED ${kqt3_SRCS}) -target_link_libraries(kqt3 ${TQT_LIBRARIES} -lc -ldl) -install(TARGETS kqt3 LIBRARY DESTINATION ${LIB_INSTALL_DIR}/kgtk) - -configure_file (kqt3-wrapper.cmake ${CMAKE_CURRENT_BINARY_DIR}/kqt3-wrapper @ONLY) -install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kqt3-wrapper DESTINATION ${BIN_INSTALL_DIR})
\ No newline at end of file diff --git a/qt3/kqt3-wrapper.cmake b/qt3/kqt3-wrapper.cmake deleted file mode 100755 index e8ba648..0000000 --- a/qt3/kqt3-wrapper.cmake +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# -# This script is part of the KGtk package. -# -# (C) Craig Drummond, 2007 -# -# -# -- -# Released under the GPL v2 or later -# -- -# - -app=`basename $0` - -if [ "$app" = "kqt3-wrapper" ] ; then - LD_PRELOAD=@CMAKE_INSTALL_PREFIX@/lib/kgtk/libkqt3.so:$LD_PRELOAD "$@" -else - dir=`dirname $0` - oldPath=$PATH - PATH=`echo $PATH | sed s:$dir::g` - real=`which $app` - PATH=$oldPath - - if [ "$real" != "" ] && [ "`dirname $real`" != "$dir" ] ; then - LD_PRELOAD=@CMAKE_INSTALL_PREFIX@/lib@LIB_SUFFIX@/kgtk/libkqt3.so:$LD_PRELOAD $real "$@" - fi -fi diff --git a/qt3/kqt3.cpp b/qt3/kqt3.cpp deleted file mode 100644 index 962f72a..0000000 --- a/qt3/kqt3.cpp +++ /dev/null @@ -1,671 +0,0 @@ -/************************************************************************ - * - * All dialogs opened are created and used modal. - * - ************************************************************************ - * (C) Craig Drummond, 2006 - ************************************************************************ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - ************************************************************************/ - -#define KTQT_OVERLOAD_NON_STATIC_FILEDIALOGS - -#define _GNU_SOURCE -#include <dlfcn.h> -#include <fcntl.h> -#include <string.h> -#include <errno.h> -#include <signal.h> -#include <sys/wait.h> -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <pwd.h> -#include <errno.h> -#include <string.h> -#include <sys/types.h> -#include <tqstring.h> -#include <tqstringlist.h> -#include <tqwidget.h> -#include <tqapplication.h> -#ifdef KTQT_OVERLOAD_NON_STATIC_FILEDIALOGS -#include <tqcombobox.h> -#include <tqlineedit.h> -#include <tqobjectlist.h> -#define private public // HACK HACK HACK!!! -#endif -#include <tqfiledialog.h> -#include <tqthread.h> -#include <tqnamespace.h> -#include <tqeventloop.h> -#include "connect.h" -#include "config.h" -#include "mangled.h" - -static bool useKde=false; - -#define MAX_LINE_LEN 1024 -#define MAX_APP_NAME_LEN 32 - -static char * getAppNameFromPid(int pid) -{ - static char appName[MAX_APP_NAME_LEN+1]="\0"; - - int procFile=-1; - char cmdline[MAX_LINE_LEN+1]; - - sprintf(cmdline, "/proc/%d/cmdline",pid); - - if(-1!=(procFile=open(cmdline, O_RDONLY))) - { - if(read(procFile, cmdline, MAX_LINE_LEN)>7) - { - int len=strlen(cmdline), - pos=0; - - for(pos=len-1; pos>0 && cmdline[pos] && cmdline[pos]!='/'; --pos) - ; - - if(pos>=0 && pos<len) - { - strncpy(appName, &cmdline[pos ? pos+1 : 0], MAX_APP_NAME_LEN); - appName[MAX_APP_NAME_LEN]='\0'; - } - } - close(procFile); - } - - return appName; -} - -static const char * getAppName(bool useTQt=true) -{ - static const char *appName=NULL; - - if(!appName) - { - const char *a=useTQt && tqApp ? tqApp->argv()[0] : getAppNameFromPid(getpid()); - const char *slash; - - // Was the cmdline app java? if so, try to use its parent name - just in case - // its run from a shell script, etc. - e.g. as eclipse does - if(a && 0==strcmp(a, "java")) - a=getAppNameFromPid(getppid()); - - if(a && a[0]=='\0') - a=NULL; - - appName=a && (slash=strrchr(a, '/')) && '\0'!=slash[1] - ? &(slash[1]) - : a ? a : "TQtApp"; - } - - return appName; -} - -int TQApplication::exec() -{ - static bool init=false; - - if(!init) - { - connectToKDialogD(getAppName(false)); - init=true; - } - - static int (*realFunction)(void *); - - if(!realFunction) - realFunction = (int (*)(void *)) dlsym(RTLD_NEXT, KQT_QAPPLICATION_EXEC); - return (int)realFunction(this); -}; - -static TQString qt2KdeFilter(const TQString &f) -{ - TQString filter; - TQTextOStream str(&filter); - TQStringList list(TQStringList::split(";;", f)); - TQStringList::Iterator it(list.begin()), - end(list.end()); - bool first=true; - - for(; it!=end; ++it) - { - int ob=(*it).findRev('('), - cb=(*it).findRev(')'); - - if(-1!=cb && ob<cb) - { - if(first) - first=false; - else - str << '\n'; - str << (*it).mid(ob+1, (cb-ob)-1) << '|' << (*it).mid(0, ob); - } - } - - return filter; -} - -static void kde2TQtFilter(const TQString &orig, TQString *sel) -{ - if(sel) - { - TQStringList list(TQStringList::split(";;", orig)); - TQStringList::Iterator it(list.begin()), - end(list.end()); - int pos; - - for(; it!=end; ++it) - if(-1!=(pos=(*it).find(*sel)) && pos>0 && - ('('==(*it)[pos-1] || ' '==(*it)[pos-1]) && - (*it).length()>=sel->length()+pos && - (')'==(*it)[pos+sel->length()] || ' '==(*it)[pos+sel->length()])) - { - *sel=*it; - return; - } - } -} - -#ifdef KTQT_OVERLOAD_NON_STATIC_FILEDIALOGS -#ifdef KTQT_USE_TQFILEDIALOG_PRIVATE -// HACK HACK HACK!!! - -// KGtk versions <=0.9.1 used this copied TQFileDialogPrivate to access the file filters -// newer versions walk the file dialogs tqchildren... -class TQFileDialogPrivate { -public: - ~TQFileDialogPrivate(); - - TQStringList history; - - bool geometryDirty; - TQComboBox * paths; - TQComboBox * types; -}; -#endif - -static const TQString getFilters(TQFileDialog *dlg, bool scribusSave=false) -{ - TQString filter; - -#if KTQT_USE_TQFILEDIALOG_PRIVATE - if(dlg && dlg->d && dlg->d->types) - { - TQTextOStream str(&filter); - - for(int i=0; i<dlg->d->types->count(); ++i) - { - if(i) - str << ";;"; - - if(scribusSave && -1!=dlg->d->types->text(i).find("(*.sla *.sla.gz *.scd *scd.gz)")) - str << "Compressed Documents (*.sla.gz *scd.gz);;Documents (*.sla *.scd)"; - else - str << dlg->d->types->text(i); - } - } -#else - if(dlg) - { - const TQObjectList tqchildren=((TQObject *)dlg)->childrenListObject(); - - if(!tqchildren.isEmpty()) - { - TQObjectList::ConstIterator it(tqchildren.begin()), - end(tqchildren.end()); - - for(; it!=end; ++it) - if(::tqqt_cast<TQComboBox *>(*it) && 0==qstrcmp((*it)->name(), "file types")) - { - TQComboBox *types=(TQComboBox *)(*it); - TQTextOStream str(&filter); - - for(int i=0; i<types->count(); ++i) - { - if(i) - str << ";;"; - - if(scribusSave && -1!=types->text(i).find("(*.sla *.sla.gz *.scd *scd.gz)")) - str << "Compressed Documents (*.sla.gz *scd.gz);;Documents (*.sla *.scd)"; - else - str << types->text(i); - } - - break; - } - } - } -#endif - - return filter; -} - -static TQString getCurrentFileName(TQFileDialog *dlg) -{ - if(dlg) - { - const TQObjectList tqchildren=((TQObject *)dlg)->childrenListObject(); - - if(!tqchildren.isEmpty()) - { - TQObjectList::ConstIterator it(tqchildren.begin()), - end(tqchildren.end()); - - for(; it!=end; ++it) - if(::tqqt_cast<TQLineEdit *>(*it)) // && 0==qstrcmp((*it)->name(), "name/filter editor")) - return ((TQLineEdit *)(*it))->text(); - } - } - - return TQString(); -} - -static TQString getDir(const TQString &f) -{ - TQString d(f); - - int slashPos=d.findRev('/'); - - if(slashPos!=-1) - d.remove(slashPos+1, d.length()); - - return d; -} -#endif - -static bool writeString(int fd, const TQString &str) -{ - TQCString utf8(str.utf8()); - int size=utf8.length()+1; - - return writeBlock(fd, (char *)&size, 4) && writeBlock(fd, utf8.data(), size); -} - -static bool writeBool(int fd, bool b) -{ - char bv=b ? 1 : 0; - - return writeBlock(fd, (char *)&bv, 1); -} - -class KTQtDialog : public TQDialog -{ - public: - - KTQtDialog(TQWidget *parent) : TQDialog(parent, "kqt", true, WStyle_NoBorder|WX11BypassWM) - { - resize(1, 1); - setWindowOpacity(0.0); - setWindowState(WState_Minimized); - move(32768, 32768); - } - -/* void r() { TQDialog::reject(); }*/ -}; - -class KTQtThread : public TQThread -{ - public: - - KTQtThread(TQStringList &l, TQString &s, int f, KTQtDialog *dlg) : dialog(dlg), kdialogdError(false), res(l), selFilter(s), fd(f) - { } - - bool readData(TQCString &buffer, int size) - { - buffer.resize(size); - return ::readBlock(fd, buffer.data(), size); - } - - bool readString(TQString &str, int size) - { - TQCString buffer; - buffer.resize(size); - - if(!readBlock(fd, buffer.data(), size)) - return false; - - str=TQString::fromUtf8(buffer.data()); - return true; - } - - void run() - { - TQString buffer; - int num=0; - - if(readBlock(fd, (char *)&num, 4)) - { - int n; - - for(n=0; n<num && !kdialogdError; ++n) - { - int size=0; - - if(readBlock(fd, (char *)&size, 4)) - { - if(size>0) - { - if(readString(buffer, size)) - { - //buffer[size-1]='\0'; - if('/'==buffer[0]) - res.append(buffer); - else - selFilter=buffer; - } - else - kdialogdError=true; - } - } - else - kdialogdError=true; - } - } - else - kdialogdError=true; - - TQApplication::postEvent(dialog, new TQCloseEvent); - } - - KTQtDialog *dialog; - bool kdialogdError; - TQStringList &res; - TQString &selFilter; - int fd; -}; - -static bool sendMessage(TQWidget *parent, Operation op, TQStringList &res, TQString &selFilter, - const TQString &title, const TQString &p1, const TQString *p2, bool ow) -{ - if(connectToKDialogD(getAppName())) - { - char o=(char)op; - int xid=parent ? parent->tqtopLevelWidget()->winId() : tqApp->activeWindow()->winId(); - - if(writeBlock(kdialogdSocket, &o, 1) && - writeBlock(kdialogdSocket, (char *)&xid, 4) && - writeString(kdialogdSocket, title) && - writeString(kdialogdSocket, p1) && - (p2? writeString(kdialogdSocket, *p2) : true) && - (OP_FILE_SAVE==op ? writeBool(kdialogdSocket, ow) : true)) - { - KTQtDialog dlg(parent); - KTQtThread thread(res, selFilter, kdialogdSocket, &dlg); - - thread.start(); - dlg.exec(); - thread.wait(); - if(thread.kdialogdError) - { - closeConnection(); - return false; - } - return true; - } - } - - return false; -} - -static TQString getTitle(const TQString &title, Operation op) -{ - if(!title.isEmpty()) - return title; - - return "."; -} - -static bool openKdeDialog(TQWidget *widget, const TQString &title, const TQString &p1, const TQString *p2, - Operation op, TQStringList &res, TQString *selFilter, bool ow=false) -{ - TQString filter; - bool rv=sendMessage(widget, op, res, filter, getTitle(title, op), p1, p2, ow); - - // If we failed to talk to, or start kdialogd, then dont keep trying - just fall back to TQt - if(!rv) - /*useKde=false*/; - else if(selFilter) - *selFilter=filter; - - return rv; -} - -static void kqtExit() -{ - if(useKde) - closeConnection(); -} - -static bool kqtInit() -{ - static bool initialised=false; - - if(!initialised) - { - initialised=true; - useKde=NULL!=getenv("TDE_FULL_SESSION") && connectToKDialogD(getAppName()); - if(useKde) - atexit(&kqtExit); - } - - return useKde; -} - -static TQString lastDir; - -static void storeLastDir(const TQString &f) -{ - lastDir=f; - - int slashPos(lastDir.findRev('/')); - - if(slashPos!=-1) - lastDir.remove(slashPos+1, lastDir.length()); -} - -static const TQString & startDir(const TQString &d) -{ - return d.isEmpty() ? lastDir : d; -} - -TQString TQFileDialog::getOpenFileName(const TQString &initially, const TQString &filter, - TQWidget *parent, const char *name, const TQString &caption, - TQString *selectedFilter, bool resolveSymlinks) -{ - TQStringList res; - TQString f(qt2KdeFilter(filter)); - kqtInit(); - - if(openKdeDialog(parent, caption, startDir(initially), &f, OP_FILE_OPEN, res, selectedFilter)) - { - kde2TQtFilter(filter, selectedFilter); - TQString fn(res.first()); - - storeLastDir(fn); - return fn; - } - return TQString(); -} - -TQString TQFileDialog::getSaveFileName(const TQString &initially, const TQString &filter, TQWidget *parent, - const char *name, const TQString &caption, - TQString *selectedFilter, bool resolveSymlinks) -{ - TQStringList res; - TQString f(qt2KdeFilter(filter)); - kqtInit(); - - if (openKdeDialog(parent, caption, startDir(initially), &f, OP_FILE_SAVE, res, selectedFilter)) - { - kde2TQtFilter(filter, selectedFilter); - TQString fn(res.first()); - - storeLastDir(fn); - return fn; - } - return TQString(); -} - -TQString TQFileDialog::getExistingDirectory(const TQString &dir, TQWidget *parent, const char *name, - const TQString &caption, bool dirOnly, bool resolveSymlinks) -{ - TQStringList res; - TQString dummy; - - kqtInit(); - - return openKdeDialog(parent, caption, dir, NULL, OP_FOLDER, res, &dummy) - ? res.first() - : TQString(); -} - -TQStringList TQFileDialog::getOpenFileNames(const TQString &filter, const TQString &dir, TQWidget *parent, - const char *name, const TQString &caption, - TQString *selectedFilter, bool resolveSymlinks) -{ - TQStringList res; - TQString f(qt2KdeFilter(filter)); - kqtInit(); - - openKdeDialog(parent, caption, startDir(dir), &f, OP_FILE_OPEN_MULTIPLE, res, selectedFilter); - - if(res.count()) - { - kde2TQtFilter(filter, selectedFilter); - storeLastDir(res.first()); - } - return res; -} - -#ifdef KTQT_OVERLOAD_NON_STATIC_FILEDIALOGS -static TQString getFile(const TQString &f) -{ - TQString d(f); - - int slashPos=d.findRev('/'); - - if(slashPos!=-1) - d.remove(0, slashPos+1); - - return d; -} - -int TQDialog::exec() -{ - int res=TQDialog::Rejected; - - if(inherits("TQFileDialog")) - { - TQFileDialog *that=(TQFileDialog *)this; - - const TQDir *dirp=that->dir(); - TQString dir, - selectedFilter, - file, - initialDir(dirp ? dirp->absPath() : TQDir::homeDirPath()); - TQStringList files; - - if(dirp) - delete dirp; - - TQApplication::eventLoop()->processEvents(TQEventLoop::ExcludeUserInput, 1); - switch(that->mode()) - { - case TQFileDialog::Directory: - case TQFileDialog::DirectoryOnly: - dir=TQFileDialog::getExistingDirectory(initialDir, parentWidget(), NULL, - caption(), true, true); - - if(!dir.isEmpty()) - res=TQDialog::Accepted; - break; - case TQFileDialog::AnyFile: - { - TQString app(getFile(tqApp->argv()[0])), - initialFile(getCurrentFileName(that)); - - if(!initialFile.isEmpty()) - initialDir=initialDir+TQChar('/')+initialFile; - - file=TQFileDialog::getSaveFileName(initialDir, - getFilters(that, "scribus"==app || - "scribus-ng"==app), - parentWidget(), NULL, caption(), &selectedFilter, - true); - - if(!file.isEmpty()) - res=TQDialog::Accepted; - break; - } - case TQFileDialog::ExistingFile: - file=TQFileDialog::getOpenFileName(initialDir, getFilters(that), parentWidget(), - NULL, caption(), &selectedFilter, true); - - if(!file.isEmpty()) - res=TQDialog::Accepted; - break; - case TQFileDialog::ExistingFiles: - files=TQFileDialog::getOpenFileNames(getFilters(that), initialDir, parentWidget(), - NULL, caption(), &selectedFilter, true); - - if(files.count()) - res=TQDialog::Accepted; - break; - } - - if(TQDialog::Accepted==res) - { - if(file.isEmpty() && files.count()) - file=files.first(); - if(dir.isEmpty() && !file.isEmpty()) - dir=getDir(file); - if(!dir.isEmpty()) - that->setDir(dir); - if(!selectedFilter.isEmpty()) - that->setSelectedFilter(selectedFilter); - if(!file.isEmpty()) - that->setSelection(file); - - if(files.count() && that->nameEdit) - { - TQStringList::Iterator it(files.begin()), - end(files.end()); - TQString filesStr; - TQTextOStream str(&filesStr); - - for(; it!=end; ++it) - str << "\"" << (*it) << "\" "; - that->nameEdit->setText(filesStr); - } - TQApplication::eventLoop()->processEvents(TQEventLoop::ExcludeUserInput, 1); - } - } - else - { - static int (*realFunction)(void *); - - if(!realFunction) - realFunction = (int (*)(void *)) dlsym(RTLD_NEXT, KQT_QDIALOG_EXEC); - return (int)realFunction(this); - } - - return res; -} -#endif |