diff --git a/CMakeLists.txt b/CMakeLists.txt index ae05eb54..c99de4bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,212 +1,207 @@ cmake_minimum_required(VERSION 3.0) # KDE Applications Version, managed by release script set (KDE_APPLICATIONS_VERSION_MAJOR "19") set (KDE_APPLICATIONS_VERSION_MINOR "11") set (KDE_APPLICATIONS_VERSION_MICRO "70") set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") project(kio-extras VERSION ${KDE_APPLICATIONS_VERSION}) include(FeatureSummary) set(QT_MIN_VERSION "5.8.0") set(KF5_MIN_VERSION "5.48.0") find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS DBus Network Widgets Svg) find_package(Qt5Test ${QT_MIN_VERSION} CONFIG QUIET) set_package_properties(Qt5Test PROPERTIES PURPOSE "Required for tests" TYPE OPTIONAL ) add_feature_info("Qt5Test" Qt5Test_FOUND "Required for building tests") if (NOT Qt5Test_FOUND) set(BUILD_TESTING OFF CACHE BOOL "Build the testing tree.") endif() find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Archive Config ConfigWidgets CoreAddons DBusAddons DocTools DNSSD IconThemes I18n KIO Solid Bookmarks GuiAddons SyntaxHighlighting ) # As this is the check used for linkage, only require it in the same location... if (UNIX) find_package(KF5Pty ${KF5_MIN_VERSION} REQUIRED) endif() include(CheckIncludeFile) include(CMakePackageConfigHelpers) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMMarkNonGuiExecutable) include(ECMMarkAsTest) include(ECMOptionalAddSubdirectory) include(ECMQtDeclareLoggingCategory) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) find_package(KF5Activities QUIET) set_package_properties(KF5Activities PROPERTIES PURPOSE "Provides the activities:/ kioslave and fileitem plugin." TYPE OPTIONAL ) find_package(KF5ActivitiesStats 5.62 QUIET) set_package_properties(KF5ActivitiesStats PROPERTIES PURPOSE "Provides the recentlyused:/ kioslave." TYPE OPTIONAL ) find_package(Phonon4Qt5 4.6.60 NO_MODULE) set_package_properties(Phonon4Qt5 PROPERTIES DESCRIPTION "Qt-based audio library" PURPOSE "Required for the audio preview plugin" TYPE OPTIONAL) include_directories(${CMAKE_CURRENT_BINARY_DIR}) if(NOT WIN32) # we need a version of samba which has already smbc_set_context(), Alex set(SAMBA_REQUIRE_SMBC_SET_CONTEXT TRUE) set(SAMBA_REQUIRE_SMBC_OPTION_SET TRUE) find_package(Samba) set_package_properties(Samba PROPERTIES DESCRIPTION "the SMB client library, a version with smbc_set_context() and smbc_option_set()" URL "https://www.samba.org/" TYPE OPTIONAL PURPOSE "Needed to build the SMB kioslave" ) endif() find_package(libssh 0.7.0 MODULE) set_package_properties(libssh PROPERTIES DESCRIPTION "the SSH library with SFTP support" URL "https://www.libssh.org/" TYPE OPTIONAL PURPOSE "Needed to build the SFTP kioslave" ) find_package(Mtp) set_package_properties(Mtp PROPERTIES DESCRIPTION "the MTP library" URL "http://libmtp.sourceforge.net/" TYPE OPTIONAL PURPOSE "Needed to build the MTP kioslave" ) check_include_file(utime.h HAVE_UTIME_H) # ECM's KDECompilerSettings.cmake should take care of enabling supporting on # 32bit architectures. # Thorw a fatal error if off_t isn't >=64bit to ensure that large files are working # as expected. # BUG: 165449 if(UNIX) check_cxx_source_compiles(" #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main() { return 0; } " OFFT_IS_64BIT) if(NOT OFFT_IS_64BIT) message(FATAL_ERROR "Large file support is not enabled.") endif() find_package(Gperf) set_package_properties(Gperf PROPERTIES TYPE OPTIONAL PURPOSE "Needed to build the man kioslave" ) - - find_package(KF5KHtml QUIET) - set_package_properties(KF5KHtml PROPERTIES TYPE OPTIONAL - PURPOSE "Needed to build the man kioslave" - ) else() # FIXME: on windows we ignore support until trash gets integrated endif() add_subdirectory( doc ) add_subdirectory( about ) if(KF5Activities_FOUND) add_subdirectory( activities ) endif() if(KF5ActivitiesStats_FOUND) add_subdirectory( recentlyused ) endif() add_subdirectory( bookmarks ) add_subdirectory( filter ) if(Phonon4Qt5_FOUND) add_subdirectory( kfileaudiopreview ) endif() add_subdirectory( info ) add_subdirectory( archive ) if(NOT WIN32) add_subdirectory( network ) endif() add_subdirectory( recentdocuments ) if (NOT WIN32) # does not compile: fish.cpp(41): fatal error C1083: Cannot open include file: 'sys/resource.h': No such file or directory # Used for getting the resource limit for closing all child process FDs. Could be completely replaced by fcloseall() if available for Unix or _fcloseall() for Windows, either conditionally on Q_OS_type or using a configure test. add_subdirectory( fish ) endif() add_subdirectory( thumbnail ) add_subdirectory( docfilter ) if (libssh_FOUND) add_subdirectory(sftp) endif () add_subdirectory(settings) add_subdirectory( filenamesearch ) if (MTP_FOUND) add_subdirectory(mtp) endif() if(NOT WIN32) - if(Gperf_FOUND AND KF5KHtml_FOUND) + if(Gperf_FOUND) add_subdirectory( man ) endif() check_include_files(rpc/rpc.h HAVE_RPC_RPC_H) add_feature_info("NFS kioslave" HAVE_RPC_RPC_H "The RPC library is needed to build the NFS kioslave") if(HAVE_RPC_RPC_H) add_subdirectory( nfs ) endif() endif() # KDNSSD before 5.54 suffers from a race condition in avahi's dbus API and # ideally should not be used in ways that can deadlock a slave. if(${KF5DNSSD_FOUND} AND ${KF5DNSSD_VERSION} VERSION_GREATER "5.53") set(HAVE_KDNSSD_WITH_SIGNAL_RACE_PROTECTION TRUE) endif() if(SAMBA_FOUND) add_subdirectory(smb) endif() configure_file (config-runtime.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-runtime.h ) if (${ECM_VERSION} STRGREATER "5.58.0") install(FILES kio-extras.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) else() install(FILES kio-extras.categories DESTINATION ${KDE_INSTALL_CONFDIR}) endif() feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index efdd04c7..b6b77e58 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -1,42 +1,33 @@ add_definitions(-DTRANSLATION_DOMAIN=\"kio5_man\") find_package(KF5 REQUIRED COMPONENTS Codecs) # silence warnings for gperf generating code with 0 for null pointers set(AVOID_NULLPTR_WARNING_FLAG) if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(_flag "-Wno-zero-as-null-pointer-constant") check_cxx_compiler_flag(${_flag} _flag_present) if(_flag_present) set(AVOID_NULLPTR_WARNING_FLAG ${_flag}) endif() endif() if(BUILD_TESTING) add_subdirectory( tests ) endif() ########### next target ############### set(kio_man_PART_SRCS man2html.cpp kio_man.cpp request_hash.cpp kio_man_debug.cpp) ecm_gperf_generate(requests.gperf ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h kio_man_PART_SRCS) set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/request_gperf.h PROPERTY SKIP_AUTOMOC ON) add_library(kio_man MODULE ${kio_man_PART_SRCS}) if (AVOID_NULLPTR_WARNING_FLAG) target_compile_options(kio_man PRIVATE ${AVOID_NULLPTR_WARNING_FLAG}) endif() target_link_libraries(kio_man KF5::KIOCore Qt5::Widgets KF5::Archive KF5::I18n KF5::Codecs Qt5::Network) set_target_properties(kio_man PROPERTIES OUTPUT_NAME "man") install(TARGETS kio_man DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) - -########### next target ############### - -add_library(kmanpart MODULE kmanpart.cpp ) -target_compile_definitions(kmanpart PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}") - -target_link_libraries(kmanpart KF5::KHtml) - -install(TARGETS kmanpart DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/parts ) -install(FILES man.protocol kmanpart.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +install(FILES man.protocol DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) diff --git a/man/kmanpart.cpp b/man/kmanpart.cpp deleted file mode 100644 index a79099fb..00000000 --- a/man/kmanpart.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2002 Alexander Neundorf - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kmanpart.h" - -#include -#include -#include - -#include - -static KAboutData createAboutData() -{ - return KAboutData("kmanpart", i18n("KMan"), PROJECT_VERSION); -} - -K_PLUGIN_FACTORY(KManPartFactory, registerPlugin();) - - -KManPart::KManPart(QWidget * parentWidget, QObject* parent, const QVariantList&) -: KHTMLPart(parentWidget, parent) -,m_job(nullptr) -{ - setComponentData(createAboutData()); - m_extension = new KParts::BrowserExtension(this); -} - -bool KManPart::openUrl( const QUrl &url ) -{ - // KHTML would detect text/plain, but we are going to write HTML to it. - KParts::OpenUrlArguments args(arguments()); - args.setMimeType("text/html"); - setArguments(args); - - return KParts::ReadOnlyPart::openUrl(url); -} - -bool KManPart::openFile() -{ - if (m_job!=nullptr) - m_job->kill(); - - begin(); - - QUrl url; - url.setScheme( "man" ); - url.setPath( localFilePath() ); - - m_job = KIO::get( url, KIO::NoReload, KIO::HideProgressInfo ); - connect(m_job, &KIO::TransferJob::data, this, &KManPart::readData); - connect(m_job, &KIO::TransferJob::result, this, &KManPart::jobDone); - return true; -} - -void KManPart::readData(KIO::Job * , const QByteArray & data) -{ - write(data,data.size()); -} - -void KManPart::jobDone( KJob *) -{ - m_job=nullptr; - end(); -} - -#include "kmanpart.moc" - diff --git a/man/kmanpart.desktop b/man/kmanpart.desktop deleted file mode 100644 index 59ebcbf2..00000000 --- a/man/kmanpart.desktop +++ /dev/null @@ -1,184 +0,0 @@ -[Desktop Entry] -Type=Service -Comment=Embeddable Troff Viewer -Comment[af]=Inlegbare Troff Kyker -Comment[ar]=عارض Troff القابل للتّضمين -Comment[be]=Убудаваны праглядальнік Troff -Comment[be@latin]=Unutrany prahladnik „Troff” -Comment[bg]=Визуализатор за вграждане на Troff -Comment[bn]=সন্নিবেশযোগ্য ট্রফ্ প্রদর্শক -Comment[bn_IN]=এমবেড করার যোগ্য Troff প্রদর্শন ব্যবস্থা -Comment[bs]=Ugnezdivi prikazivač Trofa -Comment[ca]=Visor Troff incrustable -Comment[ca@valencia]=Visor Troff incrustable -Comment[cs]=Komponenta pro zobrazování manuálových stránek -Comment[csb]=Przezérnik lopków troff -Comment[cy]=Gwelydd Troff Mewnadeiladwy -Comment[da]=Indlejrbar Troff-fremviser -Comment[de]=Eingebetteter Troff-Betrachter -Comment[el]=Ενσωματώσιμος προβολέας Troff -Comment[en_GB]=Embeddable Troff Viewer -Comment[eo]=Enkorpigebla Troff-rigardilo -Comment[es]=Visor Troff empotrable -Comment[et]=Põimitav Troff komponent -Comment[eu]=Troff ikustaile kapsulagarria -Comment[fa]=مشاهده‌گر Troff نهفتنی -Comment[fi]=Upotettava Troff-näytin -Comment[fr]=Afficheur « Troff » incorporé -Comment[fy]=Ynsletten Troff-werjefteprogramma -Comment[ga]=Amharcán Inleabaithe troff -Comment[gl]=Visor de Troff incrustábel -Comment[gu]=જડિત ટ્રોફ દર્શક -Comment[he]=מציג Troff בר־שיבוץ -Comment[hi]=एम्बेडेबल ट्राफ प्रदर्शक -Comment[hne]=एम्बेडेबल ट्राफ प्रदर्सक -Comment[hr]=Ugradivi preglednik slika -Comment[hsb]=Integrujomny troff-přehladowar -Comment[hu]=Beágyazható Troff-komponens -Comment[ia]=Visor Incorporabile de Troff -Comment[id]=Penampil Troff Dapat Ditanamkan -Comment[is]=Ívefjanlegur Troff skoðari -Comment[it]=Visore integrabile di file Troff -Comment[ja]=埋め込み Troff ビューア -Comment[ka]=ჩაშენებული დამთვალიერებელი პროგრამა Troff -Comment[kk]=Құрамына енгізілетін Troff қарау құралы -Comment[km]=កម្មវិធី​មើល Troff ដែល​បាន​បង្កប់ -Comment[kn]=ಹುದುಗಿಸಲಾದ (ಎಂಬೆಡೆಡ್) ಟ್ರಾಫ್ ವೀಕ್ಷಕ -Comment[ko]=포함 가능한 Troff 뷰어 -Comment[ku]=Nîşandêra Embeddable Troff -Comment[lt]=Įdedamas Troff žiūriklis -Comment[lv]=Iegultais Troff skatītājs -Comment[mai]=एम्बेडेबल ट्राफ प्रदर्शक -Comment[mk]=Вгнездлив Troff прегледувач -Comment[ml]=എംബഡ് ചെയ്യാവുന്ന ട്രോഫ് ദര്‍ശിനി -Comment[mr]=अंतर्भूतीत ट्राफ प्रदर्शक -Comment[ms]=Pemapar Troff Boleh Benam -Comment[nb]=Innebygget Troff-viser -Comment[nds]=Kieker för Troff, de inbett warrn kann -Comment[ne]=सम्मिलित गर्न सकिने ट्रफ दर्शक -Comment[nl]=Ingebed Troff-weergaveprogramma -Comment[nn]=Innebyggbar Troff-visar -Comment[or]=ସନ୍ନିବେଶଯୋଗ୍ୟ Troff ପ୍ରଦର୍ଶକ -Comment[pa]=ਇੰਬੈੱਡ ਹੋਣ ਯੋਗ Troff ਦਰਸ਼ਕ -Comment[pl]=Przeglądania plików troff -Comment[pt]=Visualizador de Troff incorporado -Comment[pt_BR]=Visualizador Troff integrado -Comment[ro]=Componentă de vizualizare Troff înglobată -Comment[ru]=Встраиваемая программа просмотра Troff -Comment[se]=Vuojohahtti Troff-cájeheaddji -Comment[si]=තිළැලි Troff දසුන -Comment[sk]=Vložiteľný prehliadač Troff -Comment[sl]=Vgradni pregledovalnik za Troff -Comment[sr]=Угнездиви приказивач Трофа -Comment[sr@ijekavian]=Угњездиви приказивач Трофа -Comment[sr@ijekavianlatin]=Ugnjezdivi prikazivač Troffa -Comment[sr@latin]=Ugnezdivi prikazivač Troffa -Comment[sv]=Inbäddningsbar Troff-visare -Comment[ta]=உட்பொதிந்த ட்ராஃப் காட்சி -Comment[te]=పొదగదగ్గ ట్రాఫ్ వీక్షిణి -Comment[tg]=Намоишгари дарунсохти Troff -Comment[th]=โปรแกรมดู Troff ที่สามารถฝังตัวได้ -Comment[tr]=Gömülebilir Troff Görüntüleyici -Comment[ug]=سىڭدۈرمە Troff كۆرگۈچ -Comment[uk]=Вмонтований переглядач Troff -Comment[uz]=Ichiga oʻrnatib boʻladigan Troff-faylini koʻruvchi -Comment[uz@cyrillic]=Ичига ўрнатиб бўладиган Troff-файлини кўрувчи -Comment[vi]=Trình xem Troff nhúng được -Comment[wa]=Ravalåve håyneu di fitchîs Troff -Comment[xh]=Umboniseli we Troff Elungiselekayo -Comment[x-test]=xxEmbeddable Troff Viewerxx -Comment[zh_CN]=嵌入的 Troff 查看器 -Comment[zh_TW]=可嵌入的 Troff 檢視元件 -MimeType=text/troff;application/x-troff-man; -Name=KManPart -Name[af]=KManPart -Name[be]=KManPart -Name[be@latin]=KManPart -Name[bg]=KManPart -Name[bn]=KManPart -Name[bn_IN]=KManPart -Name[br]=KManPart -Name[bs]=K‑uput‑deo -Name[ca]=KManPart -Name[ca@valencia]=KManPart -Name[cs]=KManPart -Name[csb]=KManPart -Name[cy]=KManPart -Name[da]=KManPart -Name[de]=KManPart -Name[el]=KManPart -Name[en_GB]=KManPart -Name[eo]=KManPart -Name[es]=KManPart -Name[et]=KManPart -Name[eu]=KManPart -Name[fa]=KManPart -Name[fi]=KManPart -Name[fr]=KManPart -Name[fy]=KManPart -Name[ga]=KManPart -Name[gl]=KManPart -Name[gu]=KManPart -Name[he]=KManPart -Name[hi]=के-मेन-पार्ट -Name[hne]=के-मेन-पार्ट -Name[hr]=KManPart -Name[hsb]=KManPart -Name[hu]=KManPart -Name[ia]=KManPart -Name[id]=KManPart -Name[is]=KManPart -Name[it]=KManPart -Name[ja]=KManPart -Name[ka]=KManPart -Name[kk]=KManPart -Name[km]=KManPart -Name[kn]=ಕೆಮಾನ್ ಪಾರ್ಟ್ -Name[ko]=KManPart -Name[ku]=KManPart -Name[lt]=KManPart -Name[lv]=KManPart -Name[mai]=के-मेन-पार्ट -Name[mk]=KManPart -Name[ml]=കെമാന്‍പാര്‍ട്ട് -Name[mr]=KManPart -Name[ms]=KManPart -Name[nb]=KManPart -Name[nds]=KManPart -Name[ne]=केडीई म्यान भाग -Name[nl]=KManPart -Name[nn]=KManPart -Name[oc]=KManPart -Name[or]=KManPart -Name[pa]=KManPart -Name[pl]=KManPart -Name[pt]=KManPart -Name[pt_BR]=Componente KMan -Name[ro]=Componentă KMan -Name[ru]=KManPart -Name[se]=KManPart -Name[si]=KManPart -Name[sk]=KManPart -Name[sl]=KManPart -Name[sr]=К‑упут‑део -Name[sr@ijekavian]=К‑упут‑дио -Name[sr@ijekavianlatin]=K‑uput‑dio -Name[sr@latin]=K‑uput‑deo -Name[sv]=Kman-del -Name[ta]=KManPart -Name[te]=కెమేన్ భాగం -Name[tg]=KManPart -Name[th]=KManPart -Name[tr]=KManPart -Name[ug]=KManPart -Name[uk]=KManPart -Name[uz]=KManPart -Name[uz@cyrillic]=KManPart -Name[vi]=KManPart -Name[wa]=KManPart -Name[xh]=KManPart -Name[x-test]=xxKManPartxx -Name[zh_CN]=KManPart -Name[zh_TW]=KManPart -X-KDE-ServiceTypes=KParts/ReadOnlyPart,Browser/View -X-KDE-Library=kf5/parts/kmanpart diff --git a/man/kmanpart.h b/man/kmanpart.h deleted file mode 100644 index b84eb72c..00000000 --- a/man/kmanpart.h +++ /dev/null @@ -1,58 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2002 Alexander Neundorf - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - - -#ifndef KMANPART_H -#define KMANPART_H - -class QByteArray; - -#include - -#include -#include -#include -#include -#include - -/** - * Man Page Viewer - * This is needed so that we can open local files using the man: protocol transparently. - * Testcase: click on a man page file (e.g. makekdewidgets.1) in konqueror. - */ -class KManPart : public KHTMLPart -{ - Q_OBJECT - public: - KManPart( QWidget * parent, QObject*, const QVariantList& ); - KParts::BrowserExtension * extension() {return m_extension;} - - public Q_SLOTS: - bool openUrl( const QUrl &url ) override; - protected Q_SLOTS: - void readData(KIO::Job * , const QByteArray & data); - void jobDone( KJob *); - protected: - bool openFile() override; - KParts::BrowserExtension * m_extension; - KIO::TransferJob *m_job; -}; - -#endif -